资源简介
一个matlab的m函数,封装了去除粗大误差并插值的功能。
代码片段和文件信息
function [out]= del_err(xy)
%先判断是否满足正态分布
alpha = 0.05;
type = ‘spline‘;
out = y;
if p_judge(yalpha)== 1
out = thegma(xytype);
else
out = thegma(xytype); %此处用什么?
end
%满足正态分布的话进行3西格玛准则剔除粗大数据,否则进行其他准则剔除
end
%迭代进行3西格玛准则剔除,同时插值
function [out] = thegma(xytype)
n=length(y);%数组长度
ma = mean(y); %数组均值
sa = std(y); %数组标准差
count =0;
for i=1:n %从第一个开始循环
count = count+1 ;
H = sprintf(‘y(i)=%d ma=%d sa=%d\n‘y(i)masa);
disp(H)
if abs(y(i)-ma)>3*sa
%3西格玛准则剔除的粗大数据后进行插值
%先剔除数据才能插值
xtemp= x(~ismember(xx(i)));
ytemp= y(~ismember(yy(i)));
temp = interp1(xtempytempx(i)type);
%disp(sprintf(‘i=%dtemp=%d length(ytemp)=%d\n‘itemplength(ytemp)))
%将插值得到的值再重新插入数组
y=[y(1:i-1) temp y(i:length(ytemp))];
break;
end
end
%迭代进行3西格玛准则剔除,直到都ok
if(count ~= n)
out = thegma(xytype);
else
out =y;
end
end
function out=p_judge(Aalpha)
out =0;
% 本程序用于判别
- 上一篇:鲁棒控制matlab程序
- 下一篇:小波去噪 多种方法的matlab程序
评论
共有 条评论