Matlab:2维数组,行长度不同

7
在Matlab中,我想创建一个二维数组。然而,我无法创建矩阵,因为行的长度都不同。
我是Matlab的新手,我通常会在C++中通过创建指针数组来完成这个任务,每个指针都指向自己的数组。
在Matlab中我应该怎么做呢?谢谢。
3个回答

11
你可以使用 cell arrays,其中可以包含不同类型和大小的数据。
像这样:
data = {[1]; [2,2]; [3,3,3]};

点击此处获取更多示例。


5

您可以使用单元数组

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]

这真的取决于您接下来将如何处理数据


4

像其他人提到的那样使用单元格数组。以下是一些代码和注释来解释它 -

%%// 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

2
如果你只需要弹出一行,那么就不需要使用 cell2mat 函数。你可以直接使用 Arr{row_id} 或者 Arr{row_id}(col_id) 来访问它。 - Andrew Janke
谢谢!我在想肯定有一种直接索引它的方法! - Divakar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接