求编一个MATLAB函数,实现矩阵扩展一个像素~~~~成功再追加100分!因为急迫,所以信誉!!

函数参数:imageex(limage,height,width),调用repmat函数,谢谢啦~~~
2024-11-01 22:18:23
推荐回答(2个)
回答1:

imageex(limage,heightx2,widthx2);
A=size(height,width);

B=zeros(m+h*2,n+w*2); %创建个扩展大小的0矩阵
B(h+1:h+m,w+1:w+n)=A(m,n); %将原矩阵填入中间位置
B(1:h,w+1:w+n)=A(1,:); %大矩阵的上面扩展行赋值为原矩阵的第一行
B(h+m+1:h*2+m)=A(m,:); %大矩阵的下面扩展行赋值为原矩阵的最后一行
B(h+1:h+m,1:w)=A(:,1); %大矩阵的左面扩展列赋值为原矩阵的最左一列
B(h+1:h+m,w+n+1:n+w*2)=A(:,n) %大矩阵的右面扩展列赋值为原矩阵的最右一列

%其中height替换为m
%width替换为n
%heightx2替换为h
%widthx2替换为w

回答2:

弱智版。。
function b=imageex(limage,height,width)
m=width;
n=height;
b=zeros(m+2,n+2);

for i=1:m
for j=1:n
b(i+1,j+1)=limage(i,j);
end
end

i=1;
for j=1+1:n+1
b(i,j)=b(i+1,j);
end
i=m+2;
for j=1+1:n+1
b(i,j)=b(i-1,j);
end

j=1;
for i=1+1:m+1
b(i,j)=b(i,j+1);
end
j=n+2;
for i=1+1:m+1
b(i,j)=b(i,j-1);
end
用repmat的话应该是做个3*3的a复制,把中间(height+2)*(width+2)的提取出来后将第一行和最后一行以及第一列和最后一列交换,然后赋零?