matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/23 15:22:18
xT[SV+dLF#KM, Sap?Թ\*&F(² "L\TEQVx9YHFcDy9!IreĥD T{q<..('EdYQZ/ą`+<'+\x0p{`z`_t+C
nXIˤdJ/Üf`B6/=
GC÷fVsduuztFdرMhpgU^FJʍorf,qM'+3,ؽ uvO_^-5frZ
=! Z7>Oz78)TCMPH-żE/zŘi6Pcz*r)~jPnk]9ǯ=s%`X3<qKsG!8'ps;E'{+_̃ a `ov+}Bz00m;,}UrvyS@[1!L86Pi ."2G3\)
?ڪasd
matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.
matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.
matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.
楼上几位似乎都没有找到问题的真正症结.
出现这个错误的原因是,读入的boy.jpg是一个真彩图像,所以对应的i是一个三维数组,而矩阵乘法(*)只能对两个二维数组进行(其中一个可以是标量).
看楼主代码的意图,应该是想要显示图片中间一个方形区域的内容,而把其余部分设置为黑色.这可以通过以下两种方式来做.
1、按照真彩图像显示,此时b也应该定义为三维数组:
i=imread('boy.jpg');i=im2double(i);
b=zeros(size(i));
b(50:150,50:150,:)=1;
n=b.*i;
imshow(n)
2、如果按照二维数组来做,则需要把图像转为灰度图像:
i=imread('boy.jpg');i=rgb2gray(i);
i=im2double(i);
b=zeros(size(i,1),size(i,2));
b(50:150,50:150)=1;
n=b.*i;
imshow(n)
注意:
1、两种做法都应该使用点乘(.*)而非矩阵乘(*).
2、第二种做法对变量 b 赋值的那两句也可以使用第一种做法对应的两句,效果相同.