2014-09-19 7 views
0

Я начинаю разрабатывать проект, который очень часто использует многомерные массивы. мои массивы в основном 2, 3 мерные или около того. В качестве примера 2D-массива рассмотрим «A», у меня может быть 2 или более 1D-массива в ячейке., какую структуру я должен использовать для этих матриц Matlab.

STH как

A=[1, [78,9] [10,65], 9; 
    2 ,  3 ,  6; 
    7 ,  [9,1] , [91,41,96][10,-1]] 

Как вы видели в 'A (1,2)' есть два 1D массивы. Я не знаю, какую структуру я должен использовать для достижения такой цели. Кроме того, я хочу иметь доступ ко всем этим 1D массивам.

Поделитесь своими знаниями со мной.

+0

Предполагая, что эти цифры и суб-массивы имеют смысл, я d поместите их в структуру и дайте им несколько значимых имен ... – sebastian

ответ

0

Это зависит от того, что вы хотите сделать с такой структурой. Вы можете использовать клеточные массивы для каждого 1d элемента массива, а также создать матрицу таких клеточных массивов:

a = {1, 2}; 
b = {-1, 4, 6}; 
M = [a b]; 

В качестве альтернативы, вы можете определить разреженный 3d массива.

3

попробуйте использовать cell или struct Я бы порекомендовал cell.

E.g. preinitialize A1:

A1=cell(3,3) 

(это будет 3x3 элемент массива/матрицы). Затем вы можете добавить элементы с фигурными скобками ({}). Например:

A1{1,1}= 1; 
A1(1,1)={1}; 

как произведение. Вы также можете определить многие ячейки в одной строке. Например:

A1(2,:) = {2,3,6}; 

Для случаев с multiarray записи использовать другую клеточную структуру:

B= {[78,9], [10,65]}; 
A1(1,2) = {B}; 

и так далее. Обратите внимание на использование фигурных скобок вокруг B (или координаты в A1)! В противном случае он попытается объединить ячейки с B в A1, но это не принесет пользы, потому что B является ячейкой 1x2, и вы хотите передать ее в качестве аргумента для одной ячейки в A1.

Если вы хотите, чтобы вернуть значение внутри ячейки, вы должны использовать фигурные скобки снова:

A1{1,1} 

вернется 1.

+0

Я бы предпочел 'A1 {1,2} = B' над' A1 (1,2) = {B} '. Избегает промежуточного создания тривиальной массива ячеек 1x1. – sebastian

+0

@sebastian не мог бы вы немного это уточнить? Я не получил разницу между этими двумя обозначениями, я правильно понял Matlab. –

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