优化代码function X=Narrowbandsignal(N,f0,deltf,fs,M) N1=N-M; xt=random('norm',0,1,[1,N1]); f1=f0*2/fs; df1=deltf/fs; ht=fir1(M,[f1-df1 f1+df1]); X=conv(xt,ht); return function [Ac,As]=Lowfsignal(X,f0,fs) HX=imag(hilbert(X)); [M,N]=size(X); t=0:1/fs:((N-1)/fs); Ac=X.cos(2*pi*f0*t)+HX.sin(2*pi*f0*t); As=HX.cos(2*pi*f0*t)-X.sin(2*pi*f0*t); return N=10000;f0=10000;deltf=500;fs=22000;M=200; X=Narrowbandsignal(N,f0,deltf,fs,M); [Ac As]=Lowfsignal(X,f0,fs); Rx=xcorr(X,'biased'); Rac=xcorr(Ac,'biased'); Ras=xcorr(As,'biased'); Racw=abs(fft(Ras)); Rasw=abs(fft(Ras)); Rxw=abs(fft(Rx)); N1=2*N-1; f=fs/N1:fs/N1:fs/2; subplot(3,1,1); plot(f,10*log10(Rxw(1:(N1-1)/2)+eps)); title('X(t)的功率谱密度'); subplot(3,1,2); plot(f,10*log10(Racw(1:(N1-1)/2)+eps)); title('Ac(t)的功率谱密度'); subplot(3,1,3); plot(f,10*log10(Rasw(1:(N1-1)/2)+eps)); title('As(t)的功率谱密度');
时间: 2024-04-01 19:38:34 浏览: 87
优化算法的代码
这段代码实现了一个窄带信号的生成和频谱分析。具体来说,首先调用函数Narrowbandsignal生成一个长度为N的窄带信号,然后调用函数Lowfsignal将该信号分解为包络信号Ac和调制信号As。最后,使用xcorr计算信号的自相关函数,再对其进行FFT得到信号功率谱密度,并用subplot将三个信号的功率谱密度绘制在一个图中进行比较。
阅读全文