无法执行赋值,因为左侧和右侧的元素数目不同

无法执行赋值,因为左侧和右侧的元素数目不同
求问采用matlab写的 :

img


无法执行赋值,因为左侧和右侧的元素数目不同。

出错 untitled41 (第 42 行)

grains(grains == 0&new_grain_size > 0) = new_grain(new_grain > 0);

自己不会,谢谢大佬帮我看下!

根据参考资料和问题描述,可能出现左侧和右侧元素数量不同的原因有很多,但是最有可能的是左右两侧维度不同。由代码 中"grains == 0 & new_grain_size > 0"可得,左侧grains为一维数组,右侧的“new_grain(new_grain > 0)”为二维数组。因此需要通过reshape函数将右侧数组转化为一维数组然后赋值。

解决方案如下:

new_grain1D = reshape(new_grain(new_grain > 0),[],1);
grains(grains == 0 & new_grain_size > 0) = new_grain1D;

其中”[]”的作用为自动计算缺失的维度大小。

你要做什么,如果想将size分配给 grains 中的每个元素可以写
grains(grains == 0) = new_grain_size(new_grain_size > 0);