迭代matlab单元格

时间:2012-10-01 04:28:26

标签: matlab machine-learning cell

我设法做了10倍并将数据存储到一个单元格中,我的单元格具有以下结构:

[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]
[135x5 double]    [15x5 double]

这里是这个单元格中数据的一个小快照,假设我们将此单元格分配给变量cell这里是cell{1,1} - 这实际上是虹膜数据

5.1000    3.3000    1.7000    0.5000    1.0000
6.8000    3.2000    5.9000    2.3000    3.0000
5.0000    2.3000    3.3000    1.0000    2.0000
7.4000    2.8000    6.1000    1.9000    3.0000
6.5000    3.2000    5.1000    2.0000    3.0000
4.8000    3.4000    1.9000    0.2000    1.0000

cell{1,2}

7.2000    3.2000    6.0000    1.8000    3.0000
6.1000    2.6000    5.6000    1.4000    3.0000
6.4000    2.9000    4.3000    1.3000    2.0000
6.8000    3.0000    5.5000    2.1000    3.0000
6.1000    2.8000    4.0000    1.3000    2.0000

现在我正在尝试迭代每一行,并在第一列Cell {1,1},Cell {1,2)中对数据进行任意分析......我该怎么做?迭代单元格的技术是什么?

1 个答案:

答案 0 :(得分:3)

此缩减示例是否可以解决您的问题?

Z = cell(2, 2);
Z{1, 1} = rand(8, 5); Z{1, 2} = rand(2, 5); 
Z{2, 1} = rand(8, 5); Z{2, 2} = rand(2, 5);
X = cell2mat(Z(:, 1));
XFirstCol = X(:, 1);

我使用cell2mat将单元格数组第一列中的所有矩阵连接成一个大矩阵,然后最后一行只抓取该矩阵的第一列。

如果您反而询问如何循环一个单元格数组,那么,您可以采用与数字数组相同的方式,但使用花括号来索引单元格数组的元素,即:

for i = 1:2
    CurrentCell = Z{i, 1};
    FirstColumnOfCurrentCell = CurrentCell(:, 1);
end

或者您可以将这两行合并到:FirstColumnOfCurrentCell = Z{i, 1}(:, 1);

最后一点,不要使用cell作为变量的名称。这不是一个好习惯,因为cell也是内置matlab函数的名称