• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: Matlab
  • 标签:

资源简介

一个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;
% 本程序用于判别

评论

共有 条评论

相关资源