我有一个包含我的数据的矩阵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条件动态...
由于
答案 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