对所有结构领域执行操作

时间:2013-05-14 20:22:37

标签: matlab struct

我想知道是否可以立即对结构的所有字段执行操作?

我的情景:

我有来自眼动仪设备的数据。它存储在结构Data中,并包含以下字段:

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

每个字段都包含一个整数向量。假设我想从我的数据流中删除样本号10。我必须做以下事情:

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

我如何更有效地做到这一点?

2 个答案:

答案 0 :(得分:3)

是的,请使用dynamic field names

fields = fieldnames(Data);
for i=1:length(fields)
   field  = fields{i};
   Data.(field)(10) = [];
end

答案 1 :(得分:0)

如果您的数据足够简单,可能需要切换到直接索引数据而不是内容的结构

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

那么它就像

一样简单

Data(10)=[]

或者,如果你想要存储一堆矢量,你可能最好将它们存储在一个矩阵中:

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

然后就会这么简单:

M(10,:)=[];