无法执行赋值,因为左侧和右侧的元素数目不同
求问采用matlab写的 :
出错 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);