通过在matlab中按照指定的顺序对样本行求和,创建经验联合概率矩阵的一种有效方法



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

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

即(伪码)

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

有没有一个杀手级的matlab命令可以做到这一点?而不是for循环或arrayfun?

下面是@BillBokeey的评论:这是的解决方案

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

最新更新