%这是我的数据预处理流程
clc;
close all;
clear all;
%读取数据
woqu=xlsread('C:\Users\1042zyl\Desktop\pptdata.xlsx',1,'A60:L460');
%数据预处理
DATA=woqu(:,3:12);
[u,v]=size(DATA);
data=[]
for i=1:v
%拉依达准则去异常
d=DATA(:,i);
ave=mean(d);%求平均值
u=std(d);%求标准差
[m,w]=size(d);
for j=2:m
if(abs(d(i)-ave)>3*u)%不符合依拉达准则,剔除这个元素
%Az_no_noise(i)=0;
d(i)= mean(d(i-1)+d(i+1));
else
continue;
end
end
%小波阈值去噪声
[thr,sorh,keepapp] = ddencmp('den','wv',d);
d_no_noise= wdencmp('gbl',d,'db4',2,thr,sorh,keepapp);
%去趋势项
average_1=mean(d_no_noise);
detrend_d_no_noise = detrend(d_no_noise);
d_no_noise_de=detrend_d_no_noise+average_1;
% %归一化
% [dd,minp,maxp]=premnmx(d_no_noise_de);
% %校准
% dd=dd-dd(1);
dd=d_no_noise_de-d_no_noise_de(1);%不做归一化的结果
%
data=[data,dd];
end
%时间刻度
time=0;
d=length(DATA)-1;
time2=[];
for i=1:d
time1=time+27*i;
time2=[time2 time1];
end
Time=[time time2]';
% %去除突变值
% Ay_B=diff(Gy_ans);
% ave1=mean(Ay_B);
% u1=std(Ay_B);
% len=length(Gy_ans)-1;
% for i=1:len
% if(abs(Ay_B(i)-ave1)>3*u1)
% Gy_ans(i+1)=0;
% else
% continue;
% end
% end
% Gy_ans_new=Gy_ans(Gy_ans~=0);%再次得到新的数据
%
% %更新数据并匹配
% len=length(N);
% for d_i=1:len
% n_1=N(d_i:1);
% Alt_no_noise(n_1:1)=[];
% Gz_no_noise(n_1:1)=[];
% Mz_no_noise(n_1:1)=[];
% end
% Gz_ans=Gz_no_noise(Az_no_noise~=0);
% Alt_ans=Alt_no_noise(Az_no_noise~=0);
% Mz_ans=Mz_no_noise(Az_no_noise~=0);
%写数据
xlswrite('data_s.xlsx',data);
%画图
figure(1);
subplot(3,1,1);plot(Time,data(:,2),'r-');legend('前进方向加速度Ay');xlabel('时间ms');ylabel('加速度m/s^2');
subplot(3,1,2);plot(Time,data(:,5),'b-');legend('前进方向角加速度Gy');xlabel('时间ms');ylabel('角加速度rad/s^2');
subplot(3,1,3);plot(Time,data(:,8),'k-');legend('前进方向磁场My');xlabel('时间ms');ylabel('磁场T');
figure(2);
subplot(3,1,1);plot(Time,data(:,3),'r-');legend('竖直方向加速度Ay');xlabel('时间ms');ylabel('加速度m/s^2');
subplot(3,1,2);plot(Time,data(:,6),'b-');legend('竖直方向角加速度Gy');xlabel('时间ms');ylabel('角加速度rad/s^2');
subplot(3,1,3);plot(Time,data(:,9),'k-');legend('竖直方向磁场My');xlabel('时间ms');ylabel('磁场T');
figure(3);
subplot(3,1,1);plot(Time,data(:,4),'r-');legend('水平方向加速度Ay');xlabel('时间ms');ylabel('加速度m/s^2');
subplot(3,1,2);plot(Time,data(:,7),'b-');legend('水平方向角加速度Gy');xlabel('时间ms');ylabel('角加速度rad/s^2');
subplot(3,1,3);plot(Time,data(:,10),'k-');legend('水平方向磁场My');xlabel('时间ms');ylabel('磁场T');
%高度数据处理
H=smooth(DATA(:,1),10,'lowess');%加权最小二乘平滑处理
[H,minp,maxp]=premnmx(H);%高度归一化,可以不做处理
H=H-H(1);
figure(4);
plot(H,'r-');legend('步态高度H');xlabel('时间ms');ylabel('高度m');