I Eine 8x18-Struktur mit jeder Zelle, die einen Spaltenvektor mit dem Auftreten eines einzelnen Ereignisses enthält. Ich möchte Daten von einigen dieser Felder erhalten, die in einem einzigen Array verkettet sind, ohne dass ich sie durchlaufen muss. Ich kann keinen Weg finden, die Felder, an denen ich interessiert bin, in einem einzigen Array vertikal zu verketten.Auf mehrere Strukturfelder in Matlab zugreifen, ohne sie zu durchlaufen
Als Beispiel ich die folgende Struktur mit zwischen 1 und 5 Vorkommen pro Zelle erstellen:
s(62).vector(8,18).heading.occurrences=[1;2;3];
for i=1:62
for j=1:8
for k=1:18
y=ceil(rand(1)*5);
s(i).vector(j,k).heading.occurrences=rand(y,1);
end
end
end
Nun, wenn alle Vorkommen in mehrere Zellen erhalten möchten, während i
konstant für den sofortigen i=1
folgende Arbeiten zu halten:
ss=s(1).vector([1 26 45]);
h=[ss.heading];
cell2mat({h.occurrences}')
Jetzt für s([1 2 3]).vector([1 26 45])
Beispiel für s
, das gleiche tun ich möchte, würde, wie das funktioniert? Ich habe xx=s([1 2 3])
versucht, yy=xx.vector([1 26 45])
aber dies ergibt jedoch den Fehler:
Expected one output from a curly brace or dot indexing expression, but there were 3 results.
Ist das auch möglich, mit einer Vektoroperation?
Brilliant, danke! – Jasper