Ich habe eine 128x100-Matrix genannt R.Speichern von Vektoren in eine Zellenanordnung
Ich habe eine weitere 1x100 Matrix I. Werte im Vektor genannt I 1 bis 64 reichen.
z.B. I: [13,22,55,63 ..., 35]
Es gibt eine Eins-zu-Eins-Entsprechung zwischen den Elementen von R und I.
ich für jeden eindeutigen Wert von mir wissen will, , dh wenn 1 in sechs Positionen (Spalte # 12, 20, 35, 62, 87, 95) in Vektor I auftritt, wie werden die entsprechenden Spalten (Spalte # 12, 20, 35, 62, 87, 95) in R verknüpft und speichern Sie die Informationen in einem einzelnen Zellenfeld S für alle solche Werte von 1-64.
Ich habe versucht, aber bin nicht in der Lage, an einen kompakten und korrekten Code zu denken.
for j = 1:64
for i = 1:100
if I(i) == j
S{j} = R(:,i);
end
end
end
Sehr schöne Verwendung von 'accumarray'. Wenn die leeren Zellen gesucht werden, ist es besser, 'S = akkumarray (I (:), 1: 100, [64 1], @ (x) {R (:, x)})' zu verwenden, so dass leere Zellen am Ende sind nicht getrimmt –
Vielen Dank. Es ist ein kompakter Code und es funktioniert. Ich brauche auch die leeren Zellen. Danke noch einmal! –
@Alastair_V Antwort aktualisiert, um leere Zellen am Ende zu berücksichtigen. – rahnema1