Разверните и обрежьте матрицу - PullRequest
4 голосов
/ 02 апреля 2011

Как я могу расширить матрицу с нулями по краю и затем обрезать ее до того же размера после некоторых манипуляций?

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

Чтобы дополнить массив, вы можете использовать PADARRAY , если у вас есть набор инструментов для обработки изображений.

В противном случае вы можете дополнить и сжать следующим образом:

smallArray = rand(10); %# make up some random data
border = [2 3]; %# add 2 rows, 3 cols on either side

smallSize = size(smallArray);

%# create big array and fill in small one
bigArray = zeros(smallSize + 2*border);
bigArray(border(1)+1:end-border(1),border(2)+1:end-border(2)) = smallArray;

%# perform calculation here

%# crop the array
newSmallArray = bigArray(border(1)+1:end-border(1),border(2)+1:end-border(2));
3 голосов
/ 03 апреля 2011

Вы можете сделать это:

octave:1> x = ones(3, 4)
x =

   1   1   1   1
   1   1   1   1
   1   1   1   1

octave:2> y = zeros(rows(x)+2, columns(x)+2);
octave:3> y(2:rows(x)+1, 2:columns(x)+1) = x
y =

   0   0   0   0   0   0
   0   1   1   1   1   0
   0   1   1   1   1   0
   0   1   1   1   1   0
   0   0   0   0   0   0

octave:4> y = y.*2  (manipulation)
y =

   0   0   0   0   0   0
   0   2   2   2   2   0
   0   2   2   2   2   0
   0   2   2   2   2   0
   0   0   0   0   0   0

octave:5> x = y(2:rows(x)+1, 2:columns(x)+1)
x =

   2   2   2   2
   2   2   2   2
   2   2   2   2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...