我有一个包含8个cols和80k行的矩阵。 (来自excel文件)
每一行都有一个ID。
我想存储ID为no的所有数据。 1在新矩阵中。所有ID为no的数据。因此,每次ID更改时,我都要将新ID的所有数据保存在新矩阵中。
有超过800个ID。
我已经尝试了几件没有运气的东西。其中包括: k = zeros(117,8)
for i =1:80000
k(i) = i + Dataset(1:i,:)
end
以上只是为了看看我是否真的可以将前117行保存在另一个没有成功的矩阵中。
答案 0 :(得分:3)
如果8列中的一列包含ID,则可以使用逻辑索引。例如,如果列1
包含ID,我们可以先找到所有不同ID值的列表:
uniqueIDs = unique(Dataset(:, 1));
然后我们可以创建单元格数组,其中包含给定ID的项目列表:
listsByID = cell(length(uniqueIDs), 1);
for idx = 1:length(uniqueIDs)
listsByID{idx} = Dataset(Dataset(:, 1) == uniqueIDs(idx), :);
end
在示例数据集上运行以上内容:
Dataset = [1 0.1 10
1 0.2 20
2 0.3 30
3 0.4 40
2 0.5 50
2 0.6 60];
结果:
1.0000 0.1000 10.0000
1.0000 0.2000 20.0000
2.0000 0.3000 30.0000
2.0000 0.5000 50.0000
2.0000 0.6000 60.0000
3.0000 0.4000 40.0000