0

Data (n x m)データ (グループ間の平均) を含むマトリックスがあります。n は「対象のパラメータ」の数 (たとえば、身長、体重など)です。m は人々のグループ (グループ 1、グループ 2 など) Errorです。データの標準偏差を含む行列 (nxm) です。

ここで、重要なデータのみを選択したいと思います...たとえば、データとエラーが (2 x 3) (n = 体重、高、m = グループ 1 グループ 2 グループ 3) の場合

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 条件を動的にすることです...

ありがとう

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 に答える