我想写一个迭代的循环判断语句,就一组数据例如是10*6,我每一行是一组数据,然后每一行我要算这一行的均值和标准差。再对该行的每一个元素做判断,准则就是3sigma,如果全部小于就计算到下一行。大于的话,删掉这一个数据,然后返回初始重新计算均值方差,在重新做判断。
for i=1:n-1
Kp=KpN(i,:);%取每行数据
ave=mean(Kp);%mean 求解该行数据平均值
u=std(Kp);%求解该行数据标准差
for t=1:m-1
if(abs(Kp(t)-ave)>3*u)%判断该行数据误差,大于删掉该数据
Kp(:,t)=[];%大于删掉该数据
else
Kp(:,t)=Kp(:,t);%小于则不变
end
end
end
写到这里就卡住了,因为上一次循环的结果要用作下一次的判断,如何改写命令。我删掉该元素后要重新计算该行的均值和标准差。
比如一行100个元素我第一次判断删掉了2个得到98个,98个在重新计算均值标准差,在判断在删除直到全部满足。
这样做就可以拉:
Data = cell(n,1);
for i = 1:n
Kp = KpN(i,:);
flag = -1;
while(flag)
p = abs(Kp-mean(Kp))>3*std(Kp);
flag = any(p);
Kp = Kp(~p);
end
Data{i} = Kp;
end
% Data就是你需要的呢
如有帮助还望采纳哦