小编Poe*_*lie的帖子

具有相同标签的列的平均值

我有两个向量

data vector: A = [1 2 2 1 2 6; 2 3 2 3 3 5]
label vector: B = [1 2 1 2 3 NaN]
Run Code Online (Sandbox Code Playgroud)

我想取所有具有相同标签的列的平均值,并将它们输出为按标签号排序的矩阵,忽略NaN.所以,在这个例子中我想要:

labelmean(A,B) = [1.5 1.5 2; 2 3 3]
Run Code Online (Sandbox Code Playgroud)

这可以通过像这样的for循环来完成.

function out = labelmean(data,label)
out=[];
for i=unique(label)
    if isnan(i); continue; end
    out = [out, mean(data(:,label==i),2)];
end 
Run Code Online (Sandbox Code Playgroud)

但是,我正在处理包含许多数据点和标签的巨大数组.此外,此代码段将经常执行.我想知道是否有更有效的方法来做到这一点,而不是遍历每个单独的标签.

optimization matlab vector vectorization mean

2
推荐指数
2
解决办法
164
查看次数

标签 统计

matlab ×1

mean ×1

optimization ×1

vector ×1

vectorization ×1