我想替换结构体数组中字段的值。例如,我想在以下结构中将所有 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."
有一个简单的语法吗?我想避免这样简单的操作出现丑陋的 for 循环。
学分归@Slayton,但实际上你也可以做同样的事情来分配值,使用deal http://www.mathworks.nl/help/matlab/ref/deal.html:
[a([a.b]==1).b]=deal(3)
所以细分:
[a.b]
检索所有b
数组的字段a
并把这个逗号分隔列表 http://www.mathworks.nl/help/matlab/matlab_prog/comma-separated-lists.html#br2js35-4在一个数组中。
a([a.b]==1)
使用逻辑索引仅索引以下元素a
满足约束条件。随后上面的完整命令分配值3
根据结果逗号分隔列表的所有元素this http://www.mathworks.nl/help/matlab/matlab_prog/comma-separated-lists.html#br2js35-8.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)