0

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

现在我只想选择重要的数据...例如,如果数据和错误是 (2 x 3) (n = weight, high; 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

我的麻烦是我事先不知道 Data 的维度,我会让 if 条件动态化......

谢谢

4

1 回答 1

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
于 2013-10-03T18:08:15.100 回答