matlab问题.一个二维矩阵,把其中元素等于234的换成他的前一个元素值,clear allA=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp'); subplot(121);imshow(A);B=rgb2gray(A);idx= find(B==234);B(idx)=B(idx-1);subplot(122

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 16:52:28
matlab问题.一个二维矩阵,把其中元素等于234的换成他的前一个元素值,clear allA=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp'); subplot(121);imshow(A);B=rgb2gray(A);idx= find(B==234);B(idx)=B(idx-1);subplot(122

matlab问题.一个二维矩阵,把其中元素等于234的换成他的前一个元素值,clear allA=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp'); subplot(121);imshow(A);B=rgb2gray(A);idx= find(B==234);B(idx)=B(idx-1);subplot(122
matlab问题.一个二维矩阵,把其中元素等于234的换成他的前一个元素值,
clear all
A=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp');
subplot(121);imshow(A);
B=rgb2gray(A);
idx= find(B==234);
B(idx)=B(idx-1);
subplot(122);imshow(B);
这个程序错在哪里?
clear all
A=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp');
subplot(121);imshow(A);
B=rgb2gray(A);
[m,n]=size(B);
for i=1:m
for j=i+1:n
B(i,j)=234;
B(i,j)=B(i,j-1);
end
end
subplot(122);imshow(B);
这个替换怎么实现不了呢?

matlab问题.一个二维矩阵,把其中元素等于234的换成他的前一个元素值,clear allA=imread('C:\Documents and Settings\Administrator\桌面\段3.bmp'); subplot(121);imshow(A);B=rgb2gray(A);idx= find(B==234);B(idx)=B(idx-1);subplot(122
A = [111 222 333; 234 256 278; 78 1000 234]
B = reshape(A',1,size(A,1)*size(A,2))
idx = find(B==234)
B(idx) = B( idx-1 )
A1 = reshape(B,size(A,1),size(A,2))'
补充:
兄弟,我的代码中有个reshape语句,作用是把二维矩阵变成一维矩阵,这样的话就不用考虑每行第一个元素是234的情况了,但是所有元素中的第一个元素应该还得特殊考虑一下,而且变成一维矩阵后用find返回的直接就是元素序号.
而你没有用reshape语句,所以find返回的值是包含行列坐标的,当然不能直接用 idx-1 这种语句了,它会把行列坐标都减一,会造成越界的,比如第一行的数据减完之后就到滴0行了,这显然是不对的.详细内容你可以查看find的帮助信息