2014-11-02 3 views
1

У меня есть матрица и вы хотите добавить прокладки вокруг нее, но добавленные значения должны быть зеркалированы.Matlab mirror padding

Я попытался с помощью 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] 

Но мне нужно 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

Под "зеркальным" вы имеете в виду "усредненные"? –

+0

Нет. Я действительно имел в виду зеркальное отображение. Но я считаю, что усреднение значений также будет выполнять эту работу. – DrSkyer

ответ

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