clc
data1=load('stimulation.mat');
data2=getfield(data1.V210120_001__32_bit__Ch3,'values');
% 3σ法则
%%
[h,p]=lillietest(data2); %判断是否正态。h=0
%返回值h为假设,只有0和1两种情况,h=0假设符合正态分布,h=1假设不符合正态分布
%返回值p为方差概率,也可以说事情的发生概率,p<0.05(显著性水平通常取0.05,还有0.025和0.01三种情况)为不可能事件,拒绝;p>0.05,接受
%%
figure(1),
plot(data2);
title('原数据')
xlabel('采样时间');
ylabel('采样点数');
data2_mean=mean(data2);
sig=std(data2);%计算标准差
m=zeros(1,length(data2));
i=1;
for t=1:length(data2)
m(t)=abs(data2(t)-data2_mean);
if m(t)>3*sig
n(t)=data2_mean;%这里把异常值替换成了均值,也可以直接替换成其他的值如0等,然后进行剔除
num(i)=data2(t);%显示异常数据,如果没有异常数据的话将不会产生num变量
i=i+1;
else
n(t)=data2(t);
end
end
figure(2),
plot(n);
title('拉以达法则剔除坏值')
xlabel('采样时间');
ylabel('采样点数')