數據預處理

%這是我的數據預處理流程
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');






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章