matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/23 15:22:18
matlab矩阵相乘问题,到底哪里出错了?如下图,左边错误提示,右边源代码.
xT[SV+ dLF#KM, Sap? Թ\*&F(² "L\TEQVx9YHFcDy9!IreĥDT{q<..('EdYQZ/ą`+<'+\x GC÷fVsduuztFdرMhpgU^F޽J ʍorf,qM'+3,ؽuvO_^-5frZ =! Z7>O z78)TCMPH-żE/zŘi6Pcz*r)~jPnk]9ǯ=s%`X3<q KsG!8'ps ;E'{+_̃a `ov+}Bz00m׷;, }UrvyS@[1!L86Pi."2G3\) ?ڪa΍sd

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 赋值的那两句也可以使用第一种做法对应的两句,效果相同.