1

次の例では、「MyCellArray」に類似した 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 行を超えるため、可能であれば for ループやその他の反復関数は避けたいと思います。残念ながら、元のデータ構造を変更することはできませんが、コピーを取得して操作することはできると思います (struct2cell を使用してみましたが、別の混乱に陥りました!)。これを迅速かつ効率的な方法で行うことは可能ですか? どうもありがとう。

4

2 に答える 2