假设我有一个样本矩阵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(:));