将现有矩阵中的值存储到新矩阵中

时间:2016-09-04 11:47:04

标签: matlab matrix

我有一个包含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行保存在另一个没有成功的矩阵中。

1 个答案:

答案 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