我设法做了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)中对数据进行任意分析......我该怎么做?迭代单元格的技术是什么?
答案 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函数的名称