имени для того, что вы пытаетесь сделать, это concatenation. В MATLAB square brackets являются неявным методом конкатенации. В то время как вы обычно думаете о них используется для конкатенации чисел для формирования вектора или матрицы:
x = [1, 2, 3, 4] % 1 x 4
Вы также можете использовать их для объединения других типов данных (в том числе клеточных массивов)
y = [{1,2}, 5, {4, 5}]; % 1 x 3 Cell Array
Это также важно отслеживать измерение конкатенации. С квадратными скобками вы можете либо конкатенировать по столбцам (2-е измерение), используя запятую или по строкам (1-е измерение с использованием двоеточия).
size([1,2,3])
1 x 3
size([1;2;3])
3 x 1
В то время как квадратные скобки являются быстрым и легким решением, я предпочитаю быть более явным. Для этого MATLAB выполняет следующие функции: cat
, horzcat
и vertcat
. Я лично предпочитаю cat
, так как вы можете указать конкатенацию в любом произвольном измерении.
x = cat(2, 100, 200, 300); % 1 x 3
100 200 300
x = cat(1, 100, 200, 300); % 3 x 1
100
200
300
x = cat(3, 100, 200, 300) % 1 x 1 x 3
x(:,:,1) =
100
x(:,:,2) =
200
x(:,:,3) =
300
Итак, вернемся к первоначальному вопросу, вы хотите объединить в 1-ом измерении (строк), так что вы можете просто сделать следующее:
a = cell(4, 1);
a{1} = [1, 2, 3];
a{2} = [1, 4, 9];
a{3} = [1, 4, 9];
a{4} = [1; 5];
a = cat(1, [2, 7], a);
также помнить, что эта форма использования concat
или квадратные скобки могут применяться к большинству типов данных в MATLAB, включая, среди прочих, struct
.