作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 01:23:39
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 赋值的那两句也可以使用第一种做法对应的两句,效果相同.