2014-11-02 323 views
1

我有一个矩阵,并希望添加填充,但填充的值必须被镜像。Matlab镜像填充

我一直在使用A = padarray(B,[1 1],'symmetric','both');

尝试,但它反映

含义,如果

B = [1 2 3; 
     4 5 6; 
     7 8 9]; 

结果将是

A = [1 1 2 3 3; 
     1 1 2 3 3; 
     4 4 5 6 6; 
     7 7 8 9 9; 
     7 7 8 9 9] 

但我需要矩阵B的边缘值A看起来像这样:

A = [5 4 5 6 5; 
     2 1 2 3 2; 
     5 4 5 6 5; 
     8 7 8 9 8; 
     5 4 5 6 5] 

是否有像padarray这样的功能我可以使用,或者我必须手动执行它?

+0

通过 “镜像” 你的意思是 “平均”? – 2014-11-02 19:33:02

+0

不,我的意思是镜像。但我相信平均值也可以完成这项工作。 – DrSkyer 2014-11-02 19:36:28

回答

2

你可以使用symmetric[2 2]和去除多余的部分,

B = [1 2 3; 4 5 6; 7 8 9]; 
c = padarray(B,[2 2],'both','symmetric'); 
c(end-1,:) = []; 
c(:,end-1) = []; 
c(:,2) = []; 
c(2,:) = []; 

给人,

c = 

5  4  5  6  5 
2  1  2  3  2 
5  4  5  6  5 
8  7  8  9  8 
5  4  5  6  5 
+0

谢谢你,这个工作! – DrSkyer 2014-11-02 19:56:13