Я бы, вероятно, сделал это, как предложено в предыдущем ответе , однако в некоторых случаях (когда размеры матрицы становятся очень большими), более дружественным по отношению к памяти решением было бы предварительно выделить матрицу правильного размераи используйте индексирование, чтобы поместить существующие значения в правильное место:
A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = ones(size(A) + [1,0]); % Create an array of ones that is one row longer
B(2:end,:) = A; % Replace the elements of B with elements from A
Причина, по которой я говорю, что это более дружественно к памяти, заключается в том, что когда мы создаем ряд единиц, нам нужно выделить память для вектора,и затем, когда мы конкатенируем, нам нужно выделить память снова для результата конкатенации.Когда мы используем индексирование, нет необходимости выделять промежуточный вектор.Это не очень важно в этом примере, но может быть весьма значительным для больших матриц или операций, выполняемых тысячи раз.
В Toolbox для обработки изображений также есть полезная функция - padarray
:
A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = padarray(A,[1 0],1,'pre');