我有一个名为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)?
答案 0 :(得分:3)
优雅的解决方案可能是使用arrayfun
:
ii = 1;
out = arrayfun(@(x) x.field2(ii), mystruct)
这基本上是这个简单循环的另一种表示法:
ii = 1;
for jj = 1:numel(mystruct)
out(jj) = mystruct(jj).field2(ii);
end
如果你有很多的字段而且所有数组都有相同的长度,那么你可以考虑以下解决方案,它更加向量化,也许更快一点
ii = 1;
X = vertcat( mystruct(:).field2 )
out = X(:,ii)
out =
100
700