我想替换结构数组中字段的值。例如,我想在以下结构中将所有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 the most likely cause."
这有一个简单的语法吗?对于这种简单的操作,我想避免丑陋的循环。
答案 0 :(得分:5)
积分转到@Slayton,但你实际上也可以使用deal来分配值:
[a([a.b]==1).b]=deal(3)
所以分解:
[a.b]
检索数组b
的所有a
字段,并将此comma-separated-list放入数组中。
a([a.b]==1)
使用逻辑索引仅索引满足约束的a
元素。随后,上面的完整命令会根据this将值3
分配给生成的逗号分隔列表的所有元素。
答案 1 :(得分:1)
您可以使用cell
表示法检索数组中每个结构的字段值。
bVals = {a.b};
bVals = cell2mat( bVals );
AFAIK,你不能把值插入到结构数组中。你必须使用一个循环。