数据预处理

%这是我的数据预处理流程
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');






你可能感兴趣的:(matlab数据处理)