通过在matlab中根据指定顺序对样本行求和来创建经验联合概率矩阵的有效方法

时间:2016-05-19 11:30:37

标签: matlab matrix vectorization adjacency-matrix

假设我有一个样本矩阵samples(n_samples x n1)和一个标签向量labels(n_samples x 1),其中标签的范围是[1:n2]

我正在寻找一种有效的方法来创建大小为n2 x n1的经验联合概率矩阵P。 对于每个样本i,我们会在samples(i, :)指示的位置将其行P添加到labels(i)

即。 (伪代码)

for i = 1:n_samples
   P(l(i), :) += M(i, :)

这样做是否有杀手matlab命令?而不是for循环或arrayfun?

1 个答案:

答案 0 :(得分:0)

关注@BillBokeey评论:这是解决方案

[xx, yy] = ndgrid(labels,1:size(samples,2));
P = accumarray([xx(:) yy(:)],samples(:));