资源描述:
《正弦扫频信号幅值及相位的提取》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、正弦扫频信号幅值及相位的提取(1)正弦振动控制系统提供输入的扫频信号,对于对数扫频,,其中Sr为对数扫描率,若频响函数为则系统输出为。 测量系统中可得到Calo信号及响应信号,通过对二者进行数据处理,可得到频域下的响应。不知道LMS的信号采集软件是如何提取频域响应的,个人认为软件计算速度有限,LMS应该是通过硬件实现的。下面我提供几种方法并进行比较。 算例对于Calo信号,频响函数为,其中,信号采样率为1000次/秒,图1给出了时域下的响应信号。图1 时域下的响应信号 正弦扫频信号幅值及相位的提取(2)14方法1 分段FFT 在[f,f+df]区间内对Ca
2、lo信号、响应信号进行FFT变换,二者在频率f处的谱值比即为频响函数在f处的值。此方法的缺陷是由于信号采样率为1000Hz,而[f,f+df]的区间很窄,在此区间下时域的点不会很多,因而FFT的频率分辨率不高。 对于没有相位差的扫频信号,此方法能较好的提取幅值。图2给出了使用此方法提取的幅值与理论结果比较,由图中可以看出二者基本吻合。 图2 使用分段FFT提取的频域幅值 对于有相位差的扫频信号,则要对结果进行光滑处理,Matlab的smooth函数提供了这一功能。图3给出了有相位差时分段FFT提取的幅值与相位同理论结果的比较,从图中可以看出在频域峰值处分段FFT
3、比理论值大,在其余频段二者吻合较好。14 图3 使用分段FFT提取的频域幅值、相位 下面给出了实现分段FFT提取扫频信号的频域幅值、相位的Matlab代码。----------------------------------------------------------------------%Decomposetheamplitudeandphasefromthesweepsignal%Localfftandsmoothareemployed.f1=5; %theinitialfreqs=4; %sweepratefr=50;%Resonantfreq
4、af=[];%amplitudepf=[];%phasek1=0.02;%dampingratiodf=0.01;%freqintervalforfa=40:df:60 t1=60/s*log2(fa/f1); t2=60/s*log2((fa+df)/f1); ta=t1:0.001:t2; 14N=length(ta); ft=f1*2.^(s/60*ta); A1=sin(2*pi*ft.*ta); lamb=ft/fr; B1=1./(1-lamb.^2+j*2*k1*lamb);%transferfunction A2=a
5、bs(B1).*sin(2*pi*ft.*ta+angle(B1)); ffreq=exp(-j*2*pi*(fa-400)*ta); %freqshiftfortimedomain spa=fft(ffreq.*A1); spb=fft(ffreq.*A2); spr=abs(spb./spa); spp=angle(spb./spa); k=ceil(N*0.001*400); af=[af,spr(k+1)]; pf=[pf,spp(k+1)];endaf=smooth(af,7);pf=smooth(pf,7); %Keytri
6、ckfa=40:df:60;lamb=fa/fr;bf=abs(1./(1-lamb.^2+j*2*k1*lamb));subplot(2,1,1);plot(fa,af,'r-',fa,bf,'b-.');legend('NumericResult','TheoreticResult');title('AmplitudeofSweepSignal');xlabel('f');ylabel('A(f)');subplot(2,1,2);bpf=angle(1./(1-lamb.^2+j*2*k1*lamb));plot(fa,180/pi*pf,'r-',fa,180
7、/pi*bpf,'b-.');legend('NumericResult','TheoreticResult');title('PhaseofSweep14Signal');xlabel('f');ylabel('Psi(f)');----------------------------------------------------------------------- 分段FFT提取方法计算速度一般,不会出现异常而中止,计算精度基本也能保证。正弦扫频信号幅值及相位的提取(3)方法2 分段曲线拟合 在[f,f+df]区间内,假定A,ψ不变