选择具有均值和标准差的重要值

时间:2013-10-03 17:17:05

标签: matlab

我有一个包含我的数据的矩阵Data (n x m)(组间平均值)。 n是“感兴趣的参数”的数量(例如,身高,体重等) m是一群人(第1组,第2组等) Error是一个矩阵(n x m),包含数据的标准偏差。

现在我想只选择重要数据...... 例如,如果数据和错误是(2 x 3)(n =权重,高; m = group1 group2 group3)

Data = [4.12502560163850,4.51407107506505, 0.592984328663462;
5.29560931899642,5.26306387164821,0.525691390848871];
Error = [12.0003478648892, 12.4431683689277, 1.77834685956325;
10.3910686148834,17.1175178471769,1.33979258445445]

我想只选择重要数据的值。即 (组1的高度 - 高度组1的标准偏差应>>组2的高度+组高度的标准偏差2) 要么 (第1组的高度 - 第1组的高度标准偏差应>第3组的高度+第3组的标准偏差。)

在这种特殊情况下,我可以做到

k = 1; 

for i = 1: size(Data,1)

  if ((Data(i,1)-Error(i,1)) > (Data(i,2)+Error(i,2)) || (Data(i,1)-Error(i,1)) > (Data(i,3)+Error(i,3)))

   selectedpar(k) = i;

   k = k+1;

end

我的麻烦在于,我事先并不知道数据的维度,我会使if条件动态...

由于

1 个答案:

答案 0 :(得分:0)

这就是你所需要的,仍然需要改进,没有for循环,但我没有时间。

myDataLen = 1:size(Data,2);
selectedpar = [];
for i = 1:size(Data,2)    
    otherIndice = find(myDataLen ~= i);
    for j = 1:size(otherIndice,2)
        idx = find( Data(:,i)-Error(:,i) > Data(:,otherIndice(j))+Error(:,otherIndice(j)))
        if(size(idx,1) > 0)
            selectedpar(end+1) = i;
        end         
    end    
end
相关问题