MATLAB:重新排列特征矩阵

时间:2017-03-29 15:43:36

标签: matlab matrix machine-learning reshape

我有一个大小为~1M x 3的要素矩阵,其中列为doc#,wordID#,wordcount

在Matlab中快速重新排列此特征矩阵的方法是什么,而不是大小#docs x # unique words,即

(length(unique(featurematrix(:,1))) x length(unique(featurematrix(:,2)))

这样每行代表一个完整的文档,每列代表一个不同的单词,值是原始矩阵第3列的wordcounts

我开始编写一堆循环,但感觉可能有一些简短的惯用方法来实现已经内置到Matlab中。

1 个答案:

答案 0 :(得分:2)

您实际上可以使用accumarray来完成此操作

data = [1, 1, 1;
        1, 2, 2;
        1, 5, 3;
        2, 1, 4;
        2, 3, 5];

result = accumarray(data(:,1:2), data(:,3))
%   1     2     0     0     3
%   4     0     5     0     0

或者,您可以使用sparse

result = full(sparse(data(:,1), data(:,2), data(:,3)))