3

構造体のすべてのフィールドに対して一度にアクションを実行することは可能でしょうか?

私のシナリオ:

アイトラッカーデバイスからのデータがあります。これは structDataに格納され、次のフィールドがあります。

Data.positionX
Data.positionY
Data.velocity
Data.acceleration

各フィールドには整数のベクトルが含まれます。データ ストリームからサンプル番号 10 を削除するとします。私は次のことをしなければなりません:

Data.positionX(10) = [];
Data.positionY(10) = [];
Data.velocity(10) = [];
Data.acceleration(10) = [];

どうすればこれをより効率的に行うことができますか?

4

2 に答える 2

3

はい、動的フィールド名を使用します。

fields = fieldnames(Data);
for i=1:length(fields)
   field  = fields{i};
   Data.(field)(10) = [];
end
于 2013-05-14T20:28:06.567 に答える
0

データが十分に単純な場合は、データの内容ではなく直接インデックスを作成する構造に切り替える価値があるかもしれません

Data(10).positionX
Data(10).positionY
...

それなら、それは次のように簡単だったでしょう

Data(10)=[]

または、一緒に保存したいベクトルがたくさんある場合は、それらを行列に保存する方がよい場合があります。

M = [positionX positionY] %And so on, possibly transposed

次に、次のように簡単になります。

M(10,:)=[];
于 2013-05-15T12:05:44.007 に答える