【问题标题】:select significant values having mean and standard deviation选择具有平均值和标准偏差的重要值
【发布时间】:2013-10-04 02:08:15
【问题描述】:

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

现在我只想选择重要的数据... 例如,如果 Data 和 Error 为 (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]

我只想选择重要的数据值。 IE (组 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 条件动态...

谢谢

【问题讨论】:

  • 使用size( Data ) 获取nm
  • 是的,我知道 size 命令 :)。也许我不清楚...问题是随着组的增加,我必须将一个值与其他 n 值进行比较...如果 a > b || a > c || a > d ....
  • 使用 bsxfun 和矢量化。
  • 我编辑了这个问题...我希望现在更清楚了..

标签: matlab


【解决方案1】:

这是你需要的,仍然需要改进以没有 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2015-03-05
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    相关资源
    最近更新 更多