2016-01-12 3 views
1

У меня есть ячейка, которая содержит 4 вектора, и я хотел бы расширить ее, чтобы она могла удерживать другой вектор. Заранее спасибо.Как расширить мою ячейку без потери информации

a = cell(4, 1); 
a{1} = [1, 2, 3]; 
a{2} = [1, 4, 9]; 
a{3} = [1, 4, 9]; 
a{4} = [1; 5]; 

И я хотел бы добавить новый вектор [2, 7], так что я буду получать этот

a{1} = [2, 7]; 
a{2} = [1, 2, 3]; 
a{3} = [1, 4, 9]; 
a{4} = [1, 4, 9]; 
a{5} = [1; 5]; 

Как я могу это сделать?

ответ

5
a = cell(4, 1); 
a{1} = [1, 2, 3]; 
a{2} = [1, 4, 9]; 
a{3} = [1, 4, 9]; 
a{4} = [1; 5]; 

a = [[2, 7];a] 

Уступая:

a = 

    [1x2 double] 
    [1x3 double] 
    [1x3 double] 
    [1x3 double] 
    [2x1 double] 
1

имени для того, что вы пытаетесь сделать, это 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.

Смежные вопросы