我有一个名为mystruct的结构,其中包含两个字段:field1
,field2
。一个典型的例子:
mystruct(1).field1 = 'a'
mystruct(1).field2 = [100 200 300] % an array of elements
mystruct(2).field1 = 'b'
mystruct(2).field2 = [700 800 900] % an array of elements
如何field2
不循环访问每个记录中的第一个元素(例如,上例中的100和700)?
一个优雅的解决方案可以使用arrayfun
:
ii = 1;
out = arrayfun(@(x) x.field2(ii), mystruct)
这基本上是这个简单循环的另一种表示法:
ii = 1;
for jj = 1:numel(mystruct)
out(jj) = mystruct(jj).field2(ii);
end
如果您有很多字段并且所有数组都具有相同的length,则可以考虑以下解决方案,该解决方案的向量化程度更高,速度可能更快。
ii = 1;
X = vertcat( mystruct(:).field2 )
out = X(:,ii)
out =
100
700
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句