我应该为这个matlab数组使用哪种结构

时间:2014-09-19 07:12:44

标签: arrays matlab multidimensional-array

我开始开发一个经常使用多维数组的项目。 我的阵列大多是2,3维左右。 当2D阵列样本考虑'A'时,我可能在一个单元格中有2个或更多1D阵列。

喜欢

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

正如您在“A(1,2)”中看到的,有两个1D阵列。 我不知道应该使用哪种结构来实现这样的目的。 此外,我希望能够访问所有这些1D阵列。

请与我分享您的知识。

2 个答案:

答案 0 :(得分:3)

尝试使用cellstruct我会推荐cell

E.g。预初始化A1

A1=cell(3,3)

(这将是3x3单元阵列/矩阵)。然后,您可以使用大括号({})来添加元素。 E.g:

A1{1,1}= 1;
A1(1,1)={1};
两个都工作。您还可以在一行中定义多个单元格。 E.g:

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

对于具有多阵列条目的情况,请使用其他单元格结构:

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

等等。注意在B周围使用大括号(或A1中的坐标)!否则他会尝试合并BA1的单元格但不会有任何好处,因为B是一个1x2单元格而你想把它作为一个参数给一个A1中的单元格。

如果要在单元格内返回值,则必须再次使用大括号:

 A1{1,1}

将返回1.

答案 1 :(得分:0)

这取决于你想用这种结构做什么。您可以为每个1d数组条目使用单元格数组,并创建此类单元格数组的矩阵:

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

或者,您可以定义稀疏的3d数组。