我有以下单元格数组:
res{1}.nft.x=1;
res{2}.nft.x=2;
res{3}.nft.x=3;
如何在这种情况下轻松获取一系列nft.x
值,即[1 2 3]
?
谢谢!
答案 0 :(得分:2)
使用comma-separated lists(MATLAB中非常强大的功能):
v = [res{:}];
v = [v.nft];
v = [v.x];
当然,这仅适用于所有结构具有相同字段的情况。如果没有,你将不得不求助于循环或类似的东西,例如:
cellfun(@(x)x.nft.x, res)
后者可能看起来更优雅,但对于更大的数据集来说肯定要慢得多。
res{:}
创建一个以逗号分隔的结构列表,[res{:}]
将它们连接成一个数组。再次访问结构数组的字段会导致以逗号分隔的列表,从而产生额外的连接,字段访问和另一个连接。
答案 1 :(得分:2)
使用cellfun
>> cellfun( @(x) x.nft.x, res )