在MATLAB中将值赋给结构数组的字段

Mem*_*ing 2 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 the most likely cause."
Run Code Online (Sandbox Code Playgroud)

这有一个简单的语法吗?我想为这种简单的操作避免丑陋的循环.

Gun*_*uyf 5

积分转到@Slayton,但你实际上可以做同样的事情来分配值,使用交易:

[a([a.b]==1).b]=deal(3)
Run Code Online (Sandbox Code Playgroud)

细分:

[a.b]
Run Code Online (Sandbox Code Playgroud)

检索b数组的所有字段,a并将此逗号分隔列表放在数组中.

a([a.b]==1)
Run Code Online (Sandbox Code Playgroud)

使用逻辑索引仅索引a满足约束的元素.以上随后完整的命令将值3以根据所得到的逗号分隔的列表的所有元素.