2015-11-17 4 views

ответ

2

Если у вас есть набор инструментов для обработки изображений, используйте padarray:

>> A = [1 2; 3 4]; 
>> B = padarray(A, [1 1]) 

B = 

    0  0  0  0 
    0  1  2  0 
    0  3  4  0 
    0  0  0  0 

Первый вход матрицы вы хотите площадку, а второй вход, сколько нулей вдоль границы в каждом измерении ты хочешь увидеть. Вы хотите, чтобы 1 элемент с нулевой границей был как по горизонтали, так и по вертикали, и поэтому требуется [1 1].

Однако я смущен тем, почему вы хотите, чтобы это было «однострочное». Если вам нужна граница с одним элементом, окружающая исходную матрицу, что случилось с несколькими строками?

A = [1 2; 3 4]; 
B = zeros(size(A) + 2); 
B(2:end-1,2:end-1) = A; 

Это три строки кода, в том числе определение исходной матрицы, но каждая строка вполне понятна. Вы определяете новую матрицу, у которой есть еще 2 строки и еще 2 столбца, которые оригинальны, потому что вы хотите, чтобы нулевая граница 1 элемента вокруг исходной матрицы, а затем просто поместите ее посередине.

+0

спасибо, это работает –

+0

@YunfeiLu без проблем. Удачи! – rayryeng

+0

Кроме того, @YunfeiLu, вы можете превратить его в один лайнер, удалив новые строки;) –