Предположим, у меня есть матрица [1 2; 3 4], но мне нужно [0 0 0 0; 0 1 2 0; 0 3 0 0; 0 0 0 0] Теперь я как это делаю, но есть ли функция, которая может решить ее в одной строке?Как заполнить матрицу 0 в matlab
ответ
Если у вас есть набор инструментов для обработки изображений, используйте 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 элемента вокруг исходной матрицы, а затем просто поместите ее посередине.
спасибо, это работает –
@YunfeiLu без проблем. Удачи! – rayryeng
Кроме того, @YunfeiLu, вы можете превратить его в один лайнер, удалив новые строки;) –