我有一个大小为~1M x 3
的要素矩阵,其中列为doc#,wordID#,wordcount
在Matlab中快速重新排列此特征矩阵的方法是什么,而不是大小#docs x # unique words
,即
(length(unique(featurematrix(:,1))) x length(unique(featurematrix(:,2)))
这样每行代表一个完整的文档,每列代表一个不同的单词,值是原始矩阵第3列的wordcounts
?
我开始编写一堆循环,但感觉可能有一些简短的惯用方法来实现已经内置到Matlab中。
答案 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)))