0

我设法做了 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}- 这实际上是 Iris 数据

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) 中的数据进行anyalze ...我该怎么做?迭代单元格的技术是什么?

4

1 回答 1

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 函数的名称

于 2012-10-01T04:34:47.460 回答