Matlab: 2d-массив, строки разной длины

В Matlab я хочу создать двумерный массив. Однако я не могу создать матрицу, потому что все строки имеют разную длину.

Я новичок в Matlab, и обычно я делаю это на С++, создавая массив указателей, причем каждый указатель указывает на свой собственный массив.

Как мне это сделать в Matlab? Спасибо.


person Karnivaurus    schedule 17.03.2014    source источник


Ответы (3)


Вы можете использовать массивы ячеек, которые могут содержат данные различных типов и размеров.

Нравится:

data = {[1]; [2,2]; [3,3,3]};

Дополнительные примеры см. здесь.

person herohuyongtao    schedule 17.03.2014

Вы можете использовать массив ячеек:

C = {[1,2,3];
     [1,2,3,4,5];
     [1,2]};

Или дополнить NaN или 0 или Inf и т.д.

N = [1, 2, 3,   NaN, NaN;
     1, 2, 3,   4,   5;
     1, 2, NaN, NaN, NaN]

Это действительно зависит от того, что вы будете делать со своими данными дальше.

person Dan    schedule 17.03.2014

Используйте ячейки, как упоминалось другими. Список некоторого кода и комментариев для его объяснения -

%%// Create a cell array to store data
Arr = {[1 3 4 6 8]; 
       [1 8 3]; 
       [4 6 3 2];
       [6 3 6 2 6 8]}

%%// Access element (3,4)
element = Arr{3}(4)

Выходы

Arr = 

    [1x5 double]
    [1x3 double]
    [1x4 double]
    [1x6 double]


element =

     2
person Divakar    schedule 17.03.2014
comment
Вам не нужен cell2mat, если вы выводите одну строку. Вы можете просто обратиться к нему с помощью Arr{row_id} или Arr{row_id}(col_id). - person Andrew Janke; 17.03.2014
comment
Спасибо! Я думал, что должен быть какой-то способ напрямую индексировать его! - person Divakar; 17.03.2014