Arrays 矢量化结构字段访问(或修改)matlab?有可能吗?
在多年的匿名之后,我刚刚创建了一个帐户来问一个困扰了我一段时间的问题,但我似乎找不到答案。我真的,真的试过了!下面是: 如果您有matlab结构阵列:Arrays 矢量化结构字段访问(或修改)matlab?有可能吗?,arrays,matlab,vectorization,variable-assignment,matlab-struct,Arrays,Matlab,Vectorization,Variable Assignment,Matlab Struct,在多年的匿名之后,我刚刚创建了一个帐户来问一个困扰了我一段时间的问题,但我似乎找不到答案。我真的,真的试过了!下面是: 如果您有matlab结构阵列: something(1).toSay = 'qwe'; something(2).toSay = 'asd'; something(3).toSay = 'zxc'; 有没有办法将字段中这3个条目的重新分配矢量化到say 像 最终结果如下: something(2).toSay >> 'newString2' 我尝试了设置字段
something(1).toSay = 'qwe';
something(2).toSay = 'asd';
something(3).toSay = 'zxc';
有没有办法将字段中这3个条目的重新分配矢量化到say
像
最终结果如下:
something(2).toSay >> 'newString2'
我尝试了设置字段
函数的一些功能,但无法使其工作。这个问题我想做的就是避免一个for循环
问题2:如果它是一个由结构组成的单元数组,而不是一个结构数组,会有什么不同吗 您可以将替换字符串放在单元格数组中,然后使用
{:}
索引在赋值的右侧创建一个。在左侧,something(1:3)。toSay
已经创建了一个逗号分隔的列表,因此我们可以将其括在[]
中,将右侧的值分配给左侧相应的字段
newvalues = {'newString1', 'newString2', 'newString3'};
[something(1:3).toSay] = newvalues{:};
见:和
关于第二个问题,使其成为结构的单元数组需要额外的步骤,因为当结构位于单元数组中时,无法直接创建逗号分隔的列表。您必须首先将它们转换为结构数组
sarray = [something{1:3}];
[sarray.toSay] = newValues{:};
something(1:3) = num2cell(sarray);
sarray = [something{1:3}];
[sarray.toSay] = newValues{:};
something(1:3) = num2cell(sarray);