我處理一個Matlab數據結構很是類似「MyCellArray」在下面的示例中的單元陣列內引用的Structs:在Matlab
% Create a Struct of string values inside a Cell Array
myCellArray = cell(3,1)
myStruct1 = struct('valA','aaa111','valB','bbb111','valC','ccc111')
myStruct2 = struct('valA','aaa222','valB','bbb222','valC','ccc222')
myStruct3 = struct('valA','aaa333','valB','bbb333','valC','ccc333')
myCellArray{1} = myStruct1
myCellArray{2} = myStruct2
myCellArray{3} = myStruct3
我想能夠有效地提取一些的數據寫入一個新的陣列:
% Extract all valA values from myCellArray
% ArrayOfValA = myCellArray(< somehow get all the valA values >)
DesiredResult = cellstr(['aaa111';'aaa222';'aaa333']) % Or something similar
我是Matlab新手,我只是無法讓我的腦袋周圍的符號。我已經試過了諸如:
ArrayOfValA = myCellArray{(:,1).valA} % This is incorrect notation!
實際數據超過500K線長,所以我想避免循環或如果可能的話其他的迭代功能。不幸的是,我不能改變原始的數據結構,但我想我可以複製並操作它(我嘗試使用struct2cell,但我陷入了另一個混亂!)。是否有可能以快速有效的方式做到這一點? 非常感謝。
一種方法是這樣的:'cellfun(@(x)(x.valA),myCellArray,'UniformOutput',false)'但是有一個公平的chacne它會比循環慢。而且它肯定仍然是迭代的。 – Dan