⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dplresolution.asv

📁 在MATLAB环境下设计一个加速度计动态校准的数据处理软件附有程序源代码,压缩包中有软件使用说明
💻 ASV
📖 第 1 页 / 共 5 页
字号:
load DPR_DataSupport DPR_AmpSTD DPR_AmpTEA DPR_AmpTEB;
DPR_RadioSTD_Value=get(findobj('Tag','radiobutton90'),'value');
DPR_RadioTEA_Value=get(findobj('Tag','radiobutton15'),'value');
DPR_RadioTEB_Value=get(findobj('Tag','radiobutton17'),'value');
if DPR_RadioSTD_Value==1
    Signal_STD=1;
else
    Signal_STD=-1;
end
if DPR_RadioTEA_Value==1
    Signal_TEA=1;
else
    Signal_TEA=-1;
end
if DPR_RadioTEB_Value==1
    Signal_TEB=1;
else
    Signal_TEB=-1;
end
handles.DPR_DataSTD_partly=handles.DPR_DataSTD([1:100:x_back2],1);
if DPRCover_PopMenuSTD_Value~=1
    handles.DPR_DataSTD_partly=handles.DPR_DataSTD_partly.*handles.Vertical_Factor_STD;
    handles.DPR_DataSTD_partly=handles.DPR_DataSTD_partly.*Signal_STD;
    handles.DPR_DataSTD_partly=handles.DPR_DataSTD_partly./DPR_AmpSTD;
end
if DPRCover_PopMenuTEA_Value~=4
    handles.DPR_DataTEA_partly=handles.DPR_DataTEA([1:100:x_back2],1);
end
if DPRCover_PopMenuTEA_Value~=4 & DPRCover_PopMenuTEA_Value~=1
    handles.DPR_DataTEA_partly=handles.DPR_DataTEA_partly.*handles.Vertical_Factor_TEA;
    handles.DPR_DataTEA_partly=handles.DPR_DataTEA_partly.*Signal_TEA;
    handles.DPR_DataTEA_partly=handles.DPR_DataTEA_partly./DPR_AmpTEA;
end
if DPRCover_PopMenuTEB_Value~=4
    handles.DPR_DataTEB_partly=handles.DPR_DataTEB([1:100:x_back2],1);
end
if DPRCover_PopMenuTEB_Value~=4 & DPRCover_PopMenuTEB_Value~=1
    handles.DPR_DataTEB_partly=handles.DPR_DataTEB_partly.*handles.Vertical_Factor_TEB;
    handles.DPR_DataTEB_partly=handles.DPR_DataTEB_partly.*Signal_TEB;
    handles.DPR_DataTEB_partly=handles.DPR_DataTEB_partly./DPR_AmpTEB;
end
Horizon_Interval_partly=handles.Horizon_Interval*100;
[size_x,size_y]=size(handles.DPR_DataSTD_partly);
set(findobj('Tag','edit24'),'String',num2str(size_x));
FF_Filter=1/(Horizon_Interval_partly*2)/1000;
DPR_FilterSTD=str2num(get(findobj('Tag','edit30'),'String'));
save DPR_DataSupport DPR_FilterSTD -append;
Fh_FilterSTD=DPR_FilterSTD/FF_Filter;
f=[0 Fh_FilterSTD Fh_FilterSTD 1];
f_STD=f;
m=[1 1 0 0];
FilterSTD=fir2(101,f,m);
save DPR_DataSupport FilterSTD f_STD -append;
if DPRCover_PopMenuTEA_Value~=4
    DPR_FilterTEA=str2num(get(findobj('Tag','edit17'),'String'));
    save DPR_DataSupport DPR_FilterTEA -append;
    Fh_FilterTEA=DPR_FilterTEA/FF_Filter;
    f=[0 Fh_FilterTEA Fh_FilterTEA 1];
    f_TEA=f;
    m=[1 1 0 0];
    FilterTEA=fir2(101,f,m);
    save DPR_DataSupport FilterTEA f_TEA -append;
end
if DPRCover_PopMenuTEB_Value~=4
    DPR_FilterTEB=str2num(get(findobj('Tag','edit18'),'String'));
    save DPR_DataSupport DPR_FilterTEB -append;
    Fh_FilterTEB=DPR_FilterTEB/FF_Filter;
    f=[0 Fh_FilterTEB Fh_FilterTEB 1];
    f_TEB=f;
    m=[1 1 0 0];
    FilterTEB=fir2(101,f,m);
    save DPR_DataSupport FilterTEB f_TEB -append;
end
if DPRCover_PopMenuSTD_Value==1
    handles.DPR_DataSTD_partly=handles.DPR_DataSTD_partly./(pi*6e5);
end
handles.DPR_DataSTD_partly=filtfilt(FilterSTD,1,handles.DPR_DataSTD_partly);
S_STD=handles.DPR_DataSTD_partly;
S_STD_Peak=max(S_STD)-S_STD(1,1);
save DPR_DataSupport S_STD S_STD_Peak -append;
if DPRCover_PopMenuSTD_Value==1
    V_STD=diff(handles.DPR_DataSTD_partly)/Horizon_Interval_partly;
    V_STD=filtfilt(FilterSTD,1,V_STD);
    V_STD(size_x,1)=V_STD((size_x-1),1);
elseif DPRCover_PopMenuSTD_Value==2 | DPRCover_PopMenuSTD_Value==3
    V_STD=handles.DPR_DataSTD_partly;
end
if DPRCover_PopMenuTEA_Value~=4
    if DPRCover_PopMenuTEA_Value==1
        handles.DPR_DataTEA_partly=handles.DPR_DataTEA_partly./(pi*6e5);
    end
    handles.DPR_DataTEA_partly=filtfilt(FilterTEA,1,handles.DPR_DataTEA_partly);
    S_TEA=handles.DPR_DataTEA_partly;
    S_TEA_Peak=max(S_TEA)-S_TEA(1,1);
    save DPR_DataSupport S_TEA S_TEA_Peak -append;
    if DPRCover_PopMenuTEA_Value==1
        V_TEA=diff(handles.DPR_DataTEA_partly)/Horizon_Interval_partly;
        V_TEA=filtfilt(FilterTEA,1,V_TEA);
        V_TEA(size_x,1)=V_TEA((size_x-1),1);
    elseif DPRCover_PopMenuTEA_Value==2 | DPRCover_PopMenuTEA_Value==3
        V_TEA=handles.DPR_DataTEA_partly;
    end
end
if DPRCover_PopMenuTEB_Value~=4
    if DPRCover_PopMenuTEB_Value==1
        handles.DPR_DataTEB_partly=handles.DPR_DataTEB_partly./(pi*6e5);
    end
    handles.DPR_DataTEB_partly=filtfilt(FilterTEB,1,handles.DPR_DataTEB_partly);
    S_TEB=handles.DPR_DataTEB_partly;
    S_TEB_Peak=max(S_TEB)-S_TEB(1,1);
    save DPR_DataSupport S_TEB S_TEB_Peak -append;
    if DPRCover_PopMenuTEB_Value==1
        V_TEB=diff(handles.DPR_DataTEB_partly)/Horizon_Interval_partly;
        V_TEB=filtfilt(FilterTEB,1,V_TEB);
        V_TEB(size_x,1)=V_TEB((size_x-1),1);
    elseif DPRCover_PopMenuTEB_Value==2 | DPRCover_PopMenuTEB_Value==3
        V_TEB=handles.DPR_DataTEB_partly;
    end
end
if DPRCover_PopMenuSTD_Value==2 | DPRCover_PopMenuSTD_Value==3
    V_STD=V_STD.*5;
end
if DPRCover_PopMenuTEA_Value==2 | DPRCover_PopMenuTEA_Value==3
    V_TEA=V_TEA.*5;
end
if DPRCover_PopMenuTEB_Value==2 | DPRCover_PopMenuTEB_Value==3
    V_TEB=V_TEB.*5;
end
x=1:size_x;
plot(x,V_STD,'r')
set(gca,'Color',[0,0,0],'XColor',[0,1/2,0],'YColor',[0,1/2,0]);
grid on;zoom off;zoom xon;
hold on;
if DPRCover_PopMenuTEA_Value~=4
    plot(x,V_TEA,'c')
    set(gca,'Color',[0,0,0],'XColor',[0,1/2,0],'YColor',[0,1/2,0]);
    grid on;zoom off;zoom xon;
    hold on;
end
if DPRCover_PopMenuTEB_Value~=4
    plot(x,V_TEB,'y')
    set(gca,'Color',[0,0,0],'XColor',[0,1/2,0],'YColor',[0,1/2,0]);
    grid on;zoom off;zoom xon;
end
if DPRCover_PopMenuSTD_Value==2 | DPRCover_PopMenuSTD_Value==3
    V_STD=V_STD./5;
end
if DPRCover_PopMenuTEA_Value==2 | DPRCover_PopMenuTEA_Value==3
    V_TEA=V_TEA./5;
end
if DPRCover_PopMenuTEB_Value==2 | DPRCover_PopMenuTEB_Value==3
    V_TEB=V_TEB./5;
end
hold off;
title('操作提示:选择速度波形的零线起点和终点','FontSize',10)
[x,y]=ginput;
x_base1=round(x);
size_xbase1=size(x_base1);
x_base1=x_base1(size_xbase1(1,1));
set(findobj('Tag','edit25'),'String',num2str(x_base1));
[x,y]=ginput;
title('')
x_base2=round(x);
size_xbase2=size(x_base2);
x_base2=x_base2(size_xbase2(1,1));
set(findobj('Tag','edit26'),'String',num2str(x_base2));
title('操作提示:选择速度波形的结尾点,单击回车取消选择','FontSize',10)
[x,y]=ginput;
x_base3=round(x);
title('');
if isempty(x_base3)
else
    size_xbase3=size(x_base3);
    x_base3=x_base3(size_xbase3(1,1));
    V_STD=V_STD(1:x_base3,1);
    if DPRCover_PopMenuTEA_Value~=4
       V_TEA=V_TEA(1:x_base3,1);
    end
    if DPRCover_PopMenuTEB_Value~=4
       V_TEB=V_TEB(1:x_base3,1);
    end
end
[size_x,size_y]=size(V_STD);
V_STD=(V_STD-mean(V_STD([x_base1:x_base2],1)));
save DPR_DataSupport V_STD -append;
if DPRCover_PopMenuTEA_Value~=4
    V_TEA=(V_TEA-mean(V_TEA([x_base1:x_base2],1)));
    save DPR_DataSupport V_TEA -append;
end
if DPRCover_PopMenuTEB_Value~=4
    V_TEB=(V_TEB-mean(V_TEB([x_base1:x_base2],1)));
    save DPR_DataSupport V_TEB -append;
end
V_STD_max=max(V_STD);
if DPRCover_PopMenuTEA_Value~=4
    V_TEA_max=max(V_TEA);
end
if DPRCover_PopMenuTEB_Value~=4
    V_TEB_max=max(V_TEB);
end
if DPRCover_PopMenuSTD_Value==3
    V_STD_max=num2str('NaN');
    if DPRCover_PopMenuTEA_Value~=4
        V_TEA_max=num2str('NaN');
    end
    if DPRCover_PopMenuTEB_Value~=4
        V_TEB_max=num2str('NaN');
    end
else
    if DPRCover_PopMenuTEA_Value==2 | DPRCover_PopMenuTEA_Value==3
        V_TEA_max=V_TEA_max.*1000;
    end
    if DPRCover_PopMenuTEB_Value==2 | DPRCover_PopMenuTEB_Value==3
        V_TEB_max=V_TEB_max.*1000;
    end
end
save DPR_DataSupport V_STD_max -append;
if DPRCover_PopMenuTEA_Value~=4
    save DPR_DataSupport V_TEA_max -append;
end
if DPRCover_PopMenuTEB_Value~=4
    save DPR_DataSupport V_TEB_max -append;
end
if DPRCover_PopMenuSTD_Value==1
    if DPRCover_PopMenuTEA_Value~=4
        if DPRCover_PopMenuTEA_Value==1
            Sens_TEA_V=V_TEA_max/V_STD_max;
        elseif DPRCover_PopMenuTEA_Value==2
            Sens_TEA_V=V_STD_max/V_TEA_max*1000;
        elseif DPRCover_PopMenuTEA_Value==3
            Sens_TEA_V=V_TEA_max/V_STD_max;
        end
        save DPR_DataSupport Sens_TEA_V -append;
    end
    if DPRCover_PopMenuTEB_Value~=4
        if DPRCover_PopMenuTEB_Value==1
            Sens_TEB_V=V_TEB_max/V_STD_max;
        elseif DPRCover_PopMenuTEB_Value==2
            Sens_TEB_V=V_STD_max/V_TEB_max*1000;
        elseif DPRCover_PopMenuTEB_Value==3
            Sens_TEB_V=V_TEB_max/V_STD_max;
        end
        save DPR_DataSupport Sens_TEB_V -append;
    end
end
if DPRCover_PopMenuSTD_Value==2
    if DPRCover_PopMenuTEA_Value~=4
        if DPRCover_PopMenuTEA_Value==1
            Sens_TEA_V=V_TEA_max/V_STD_max;
        elseif DPRCover_PopMenuTEA_Value==2
            Sens_TEA_V=V_STD_max/V_TEA_max*1000;
        elseif DPRCover_PopMenuTEA_Value==3
            Sens_TEA_V=V_TEA_max/V_STD_max;
        end
        save DPR_DataSupport Sens_TEA_V -append;
    end
    if DPRCover_PopMenuTEB_Value~=4
        if DPRCover_PopMenuTEB_Value==1
            Sens_TEB_V=V_TEB_max/V_STD_max;
        elseif DPRCover_PopMenuTEB_Value==2
            Sens_TEB_V=V_STD_max/V_TEB_max*1000;
        elseif DPRCover_PopMenuTEB_Value==3
            Sens_TEB_V=V_TEB_max/V_STD_max;
        end
        save DPR_DataSupport Sens_TEB_V -append;
    end
end
if DPRCover_PopMenuSTD_Value==3
    if DPRCover_PopMenuTEA_Value~=4
        Sens_TEA_V=num2str('NaN');
        save DPR_DataSupport Sens_TEA_V -append;
    end
    if DPRCover_PopMenuTEB_Value~=4
        Sens_TEB_V=num2str('NaN');
        save DPR_DataSupport Sens_TEB_V -append;
    end
end
if DPRCover_PopMenuSTD_Value~=3
    [flag_var,x_max]=max(V_STD);
    pos_y=flag_var/10;
    deffer1=abs(V_STD(1:x_max)-pos_y);
    deffer2=abs(V_STD((x_max+1):size_x)-pos_y);
    [flag_var,pos_x1]=min(deffer1);
    [flag_var,pos_x2]=min(deffer2);
    pos_x2=pos_x2+x_max;
    T_STD_V=(pos_x2-pos_x1)*Horizon_Interval_partly*1e6;
else
    T_STD_V=num2str('NaN');
end
save DPR_DataSupport T_STD_V -append;
if DPRCover_PopMenuSTD_Value==1 | DPRCover_PopMenuSTD_Value==2
    A_STDY=(filtfilt(filter_diff,1,handles.DPR_DataSTD_partly)./Horizon_Interval_partly^2).*-1;
    A_STDY=filtfilt(FilterSTD,1,A_STDY);
    size_x=size(A_STDY);
    [flag_var,x_max]=max(A_STDY);
    pos_y=flag_var/10;
    deffer1=abs(A_STDY(1:x_max)-pos_y);
    deffer2=abs(A_STDY((x_max+1):size_x(1,1))-pos_y);
    [flag_var,pos_x1]=min(deffer1);
    [flag_var,pos_x2]=min(deffer2);
    pos_x2=pos_x2+x_max;
    T_STDY_A=(pos_x2-pos_x1)*Horizon_Interval_partly;
    FF_Filter10T=1/(Horizon_Interval_partly*2)/1000;
    DPR_FilterSTD10T=10/T_STDY_A/1000;
    save DPR_DataSupport DPR_FilterSTD10T -append;
    Fh_FilterSTD10T=DPR_FilterSTD10T/FF_Filter10T;
    f10T=[0 Fh_FilterSTD10T Fh_FilterSTD10T 1];
    m10T=[1 1 0 0];
    FilterSTD10T=fir2(101,f10T,m10T);
    save DPR_DataSupport FilterSTD10T f10T -append;
end
if DPRCover_PopMenuSTD_Value==1 | DPRCover_PopMenuSTD_Value==2
    if get(findobj('Tag','radiobutton19'),'Value')==1 
       A_STD=diff(V_STD)/Horizon_Interval_partly;
       A_STD=filtfilt(FilterSTD10T,1,A_STD);
       A_STD(size_x,1)=A_STD((size_x-1),1);
    else
       A_STD=diff(V_STD)/Horizon_Interval_partly;
       A_STD=filtfilt(FilterSTD,1,A_STD);
       A_STD(size_x,1)=A_STD((size_x-1),1);
    end    
elseif DPRCover_PopMenuSTD_Value==3
    A_STD=V_STD;
end
if DPRCover_PopMenuTEA_Value~=4
    if DPRCover_PopMenuTEA_Value==1 | DPRCover_PopMenuTEA_Value==2
        if get(findobj('Tag','radiobutton19'),'Value')==1 
           A_TEA=diff(V_TEA)/Horizon_Interval_partly;
           A_TEA=filtfilt(FilterSTD10T,1,A_TEA);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -