您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > RDT随机减量法模态参数识别预处理matlab修改版
%随机减量法对时域信号进行预处理%数据导入clc;clearall;formatlong[FileName,PathName]=uigetfile('*.mat','SelecttheMat-filesoftimesignal');%窗口读文件,并获取包含路径的文件名ifisequal(FileName,0)disp('Usercanceltheselection');%如果取消选择则显示提示return;elseFULLFILE=fullfile(PathName,FileName);Signal_str=sprintf('Userselectedsignalfile:%s',FULLFILE);disp(Signal_str);Struct=load(FULLFILE);end%获取原始信号中所存结构体名称,即第一级名称,例如:源文件在桌面上C:\Users\Administrator\Desktop\1.mat%1.mat双击打开包含一个名为Time_LeftColumn_4__Y的结构体%1.mat赋值给Struct,则Struct本身是一个结构体,其包含一个名为Time_LeftColumn_4__Y的结构体(即是Struct的唯一的一个域),%下面就是要获取这个域:Time_LeftColumn_4__Yc=fieldnames(Struct);%得到一个元胞数组,包含Struct中各个域名(倘若有多个的话)field_data=getfield(Struct,c{1});%,获取c{1}对应的域中的内容%注意使用圆括号访问得到的是元胞,使用花括号访问得到的是元胞的内容%随机减量数据处理%x=field_data.y_values.values;x=fillmissing(field_data,'movmean',1000)';%分段三次样条插值spline补充空值数据;转置ornotx为行向量nt=length(x);%Fs=1/field_data.x_values.increment;%采样频率Fs=100;np=input('BlockSizeofthetimesignalofoutputdata=');%设置输出数据属性window=input('Window(BlockSizeofthePSDofoutputdata)=');%指定PSD时分割后每一段的点数noverlap=input('OverlapwhendoPSD(lessorequalthanWindow)=');%指定PSD时每段重叠的信号点数,必须小于窗口长度df=Fs/window;dF=sprintf('FrequencyresolutionofthePSD(Hz)=%d',df);disp(dF);%显示频率精度t=0:1/Fs:(np-1)/Fs;%s=input('Theamplitudelevelofintercepting=');s=1.5*std(x);%设置截取振幅大小或直接取为输入信号标准差的1.5倍disp('可设置截取振幅大小,默认为输入信号标准差的1.5倍');%获取输入信号的子样本函数进行叠加n=0;y=zeros(1,np);fork=2:nt-npa1=abs(x(k-1)-s);b1=abs(x(k)-s);c1=abs(x(k+1)-s);ifb1a1&&b1c1y(1:np)=y(1:np)+x(k:k+np-1);n=n+1;endend%对叠加结果做平均y=y./n;%field_data.y_values.values=y;%field_data.x_values.start_value=0;field_data.x_values.number_of_values=np;%%数据可视化及后处理set(gcf,'color','w');gridon;%%%时域图subplot(1,2,1);plot(t,y);%画原始信号set(gca,'FontSize',20,'Position',[0.0550.090.430.85]);%set(gca,'XTick','FontWeight','bold');xlabel('Time[s]');ylabel('Acceleration[g]');%axis([0104.5]);title('Timesignal');%%%频域图[P1yy,f]=pwelch(y,window,noverlap,[],Fs,'onesided');P1yy=10*log10(P1yy);%采用dB显示%画自功率谱,Welch法,默认将信号分成8段,每段50%重叠,分割后每一段都用汉宁窗进行加窗,窗函数长度和每一段的长度一样。%当x为实数时,产生单边PSD,当x为复数时,产生双边PSD。系统默认FFT的长度N为256和2的整数次幂中大于分段长度的最近的数。subplot(1,2,2);plot(f,P1yy);%画谱%xlim([0.1,3])set(gca,'FontSize',20,'Position',[0.550.090.430.85]);xlabel('Frequency[Hz]');ylabel('Amplitude[dB]');title('Powerspectraldensity');
本文标题:RDT随机减量法模态参数识别预处理matlab修改版
链接地址:https://www.777doc.com/doc-7645391 .html