poster
2019-12-10, 20:30
我尝试更新矩阵的某些部分,但收到以下错误消息:
???分配的非单数下标尺寸比非单数下标少
我的代码尝试更新表示二进制图像的矩阵的某些值。我的代码如下:
outImage(3:5,2:4,1) = max(imBinary(3:5,2:4,1));
当我删除最后一个参数(1)时,这次我遇到了同样的错误。我猜尺寸之间不匹配,但我无法理解。 outImage是当时创建的新对象(我之前尝试创建它,但未更改)。有什么问题吗?
回答:
您在对另一个答案的评论中提到,您正在尝试创建自己的膨胀算法,因此想要在3 x 3 x 1子矩阵中取最大值,然后将该子矩阵中的值替换为最大值。默认情况下,函数MAX (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/max.html)将沿着子矩阵的列进行操作,这将为您提供1×3矩阵(即3×3×1矩阵的列的最大值)。由于MATLAB无法将1×3矩阵分配给3×3×1矩阵,因此产生了错误。
一种解决方案是再次在1×3矩阵上调用MAX (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/max.html)以获取标量值,然后可以将其分配给3×3×1子矩阵的每个元素而不会出现错误:
outImage(3:5,2:4,1) = max(max(imBinary(3:5,2:4,1)));
更多&回答... (https://stackoverflow.com/questions/2397632)
???分配的非单数下标尺寸比非单数下标少
我的代码尝试更新表示二进制图像的矩阵的某些值。我的代码如下:
outImage(3:5,2:4,1) = max(imBinary(3:5,2:4,1));
当我删除最后一个参数(1)时,这次我遇到了同样的错误。我猜尺寸之间不匹配,但我无法理解。 outImage是当时创建的新对象(我之前尝试创建它,但未更改)。有什么问题吗?
回答:
您在对另一个答案的评论中提到,您正在尝试创建自己的膨胀算法,因此想要在3 x 3 x 1子矩阵中取最大值,然后将该子矩阵中的值替换为最大值。默认情况下,函数MAX (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/max.html)将沿着子矩阵的列进行操作,这将为您提供1×3矩阵(即3×3×1矩阵的列的最大值)。由于MATLAB无法将1×3矩阵分配给3×3×1矩阵,因此产生了错误。
一种解决方案是再次在1×3矩阵上调用MAX (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/max.html)以获取标量值,然后可以将其分配给3×3×1子矩阵的每个元素而不会出现错误:
outImage(3:5,2:4,1) = max(max(imBinary(3:5,2:4,1)));
更多&回答... (https://stackoverflow.com/questions/2397632)