Ich habe ein Array in MatlabSpeichern von Blöcken von Vektordaten in ein Array in Matlab
A = [1 2 3 4 5 6 7 8 9;
67 67 67 86 86 86 86 67 67]';
wo jeder Punkt in der ersten Zeile von A auf einen "Code" entspricht entweder 67
oder 86
. Ich versuche, diese Blöcke von "67s"
und "86s"
so zu extrahieren, dass jedes Mal, wenn ein Block beginnt, die entsprechenden Elemente in die dritte Dimension eines anderen Arrays mit dem Namen X gebracht werden, wo der.
Also für z.B. in A Ich habe 3 verschiedene Blöcke, also würde ich gerne mit einem Array X der Größe 1x9x3 enden. Und für z.B. der erste 67
Block würde Ich mag X
X(1,:,1) = [1 2 3];
Ich verstehe haben, dass ich dieser Vektor X mit einem for-Schleife
for i=1:size(A,2)
for j=1:size(A,2) %actually j should be up till the number of blocks present
X(1,i,j) = A(1,i)
end
end
würde „tanken“ Aber das ist nicht richtig oder vollständig natürlich weil ich erstens unsicher bin, wie man die "Blöcke" trennt und wie man die js in X (1, i, j) richtig ausfüllt. Zweitens, wie kann ich den Code erkennen, wie viele Blöcke es gibt?
Kann jemand helfen?
Dank
Sind Sie sicher, dass Ihr Beispiel Daten korrekt sind? Wie Sie es haben, haben Sie 4 Einträge für '86'. – Suever
@Suever ja, die Blöcke sind nicht gleich groß! –
Wenn in Ihrem Beispiel 'X'' 1x9x3' ist, dann sollte 'X (1,:, 1)' ein Array mit 9 Elementen sein, daher konnte es '[1 2 3]' nicht enthalten. Ich schlage vor, dass Sie Ihr Beispiel überprüfen. –