在MATLAB中为结构数组的字段赋值
我想替换结构数组中字段的值。例如,我想在以下构造中将所有1替换为3在MATLAB中为结构数组的字段赋值,matlab,Matlab,我想替换结构数组中字段的值。例如,我想在以下构造中将所有1替换为3 a(1).b = 1; a(2).b = 2; a(3).b = 1; a([a.b] == 1).b = 3; % This doesn't work and spits out: % "Insufficient outputs from right hand side to satisfy comma separated % list expansion on left hand side. Missing [] are
a(1).b = 1;
a(2).b = 2;
a(3).b = 1;
a([a.b] == 1).b = 3; % This doesn't work and spits out:
% "Insufficient outputs from right hand side to satisfy comma separated
% list expansion on left hand side. Missing [] are the most likely cause."
这有一个简单的语法吗?对于这样简单的操作,我希望避免丑陋的for循环。您可以使用
单元格
符号检索数组中每个结构的字段值
bVals = {a.b};
bVals = cell2mat( bVals );
好吧,在向结构数组中插入值时不能做同样的事情。您必须使用循环。积分转到@Slayton,但实际上您也可以使用以下方法为赋值执行相同的操作: 因此,细分如下:
[a.b]
检索数组a
的所有b
字段,并将其放入数组中
a([a.b]==1)
使用逻辑索引仅索引满足约束的
a
元素。随后,上面的full命令将值3
分配给结果的逗号分隔列表中的所有元素,根据。您实际上可以使用以下方法插入值:[a([a.b]==1.b]=deal(3)
@guntherstruy如果您的答案很好的话。但是,把最初的回答当作答案是没有意义的。你能把它作为一个单独的回复(其他人)吗?
a([a.b]==1)