收藏 分销(赏)

利用Matlab绘制正弦信号的频谱图并做相关分析(幅值修正).doc

上传人:二*** 文档编号:4594535 上传时间:2024-09-30 格式:DOC 页数:6 大小:161KB 下载积分:5 金币
下载 相关 举报
利用Matlab绘制正弦信号的频谱图并做相关分析(幅值修正).doc_第1页
第1页 / 共6页
本文档共6页,全文阅读请下载到手机保存,查看更方便
资源描述
利用Matlab绘制正弦信号的频谱图并做相关分析 一、作业要求: 1、信号可变(信号的赋值、相位、频率可变); 2、采样频率fs可变; 3、加各种不同的窗函数并分析其影响; 4、频谱校正; 5、频谱细化。 二、采用matlab编写如下程序: clear; clf; fs=100;N=1024; %采样频率和数据点数 A=20;B=30;C=0.38; n=0:N-1;t=n/fs; %时间序列 x=A*sin(2*pi*B*t+C); %信号 y=fft(x,N); %对信号进行傅里叶变换 yy=abs(y); %求得傅里叶变换后的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; %频率序列 subplot(3,3,1),plot(f,yy); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图1:fs=100,N=1024'); grid on; %两种信号叠加, x=A*sin(2*pi*B*t+C)+2*A*sin(2*pi*1.5*B*t+2.5*C); %信号 y=fft(x,N); %对信号进行傅里叶变换 yy=abs(y); %求得傅里叶变换后的振幅 yy=yy*2/N; %幅值处理(如果有直流分量的话,第一个点应该只除N,以下类同) f=n*fs/N; %频率序列 subplot(3,3,2),plot(f,yy); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图2:fs=100,N=1024,两种信号叠加'); grid on; %加噪声之后的图像 x=A*sin(2*pi*B*t+C)+28*randn(size(t)); y=fft(x,N); yy=abs(y); yy=yy*2/N; %幅值处理 subplot(3,3,3),plot(f(1:N/2.56),yy(1:N/2.56)); xlabel('频率/\itHz'); ylabel('振幅'); title('图3:fs=100,N=1024混入噪声'); grid on; %改变采样点数N=128 N=128; n=0:N-1;t=n/fs; %时间序列 x=A*sin(2*pi*B*t+C); %信号 y=fft(x,N); %对信号进行傅里叶变换 yy=abs(y); %求得傅里叶变换后的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; %频率序列 subplot(3,3,4),plot(f(1:N/2.56),yy(1:N/2.56)); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图4:fs=100,N=128'); grid on; %改变采样频率为200Hz时的频谱 fs=400;N=1024;n=0:N-1;t=n/fs; x=A*sin(2*pi*B*t+C); %信号 y=fft(x,N); %对信号进行快速傅里叶变换 yy=abs(y); %求取傅里叶变换的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; subplot(3,3,5),plot(f(1:N/2.56),yy(1:N/2.56)); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图5:fs=400,N=1024'); grid on; %加三角窗函数 fs=100;N=1024; %采样频率和数据点数 n=0:N-1;t=n/fs; %时间序列 x=A*sin(2*pi*B*t+C); %信号 window=triang(N);%生成三角窗函数 x=x.*window';%加窗函数 y=fft(x,N); %对信号进行傅里叶变换 yy=abs(y); %求得傅里叶变换后的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; %频率序列 subplot(3,3,6),plot(f(1:N/2.56),2*yy(1:N/2.56)); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图6:fs=100,N=1024,加三角窗函数'); grid on; %加海明窗函数后的频谱 fs=100;N=1024;n=0:N-1;t=n/fs; x=A*sin(2*pi*B*t+C); %信号 window=hamming(N);%生成海明窗函数 x=x.*window';%加窗函数 y=fft(x,N); %对信号进行快速傅里叶变换 yy=abs(y); %求取傅里叶变换的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; subplot(3,3,7),plot(f(1:N/2.56),1.852*yy(1:N/2.56)); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图7:fs=100,N=1024,加海明窗函数'); grid on; %加汉宁窗函数后的频谱 fs=100;N=1024;n=0:N-1;t=n/fs; x=A*sin(2*pi*B*t+C); %信号 window=hanning(N);%生成汉宁窗函数 x=x.*window';%加窗函数 y=fft(x,N); %对信号进行快速傅里叶变换 yy=abs(y); %求取傅里叶变换的振幅 yy=yy*2/N; %幅值处理 f=n*fs/N; subplot(3,3,8),plot(f(1:N/2.56),2*yy(1:N/2.56)); %绘出随频率变化的振幅 xlabel('频率/\itHz'); ylabel('振幅'); title('图8:fs=100,N=1024,加汉宁窗函数'); grid on; 三、运行结果如下: 四、分析与结论: 1)从所做图像可以看出,信号的幅值均小于真实值,说明在截断信号时存在泄露。 2)从图1和图图2取相同的采样频率fs=100和数据点数N=1024,不同的是图2采用两种不同赋值和频率的正弦信号叠加,从图中可以看出,图2可以明显的看出含有两种不同的频率成分的信号,幅值也不相同,由此可以看出,不同频率的正弦信号叠加,在频域当中互相分离,互不影响。 3)从图1和图图2可以看出,整个频谱图是以fs/2频率为对称轴的。由此可以知道傅里叶变换数据的对称性。因此在用傅里叶变换做频谱分析时,我们只需做出前一半频谱图即可。 4)图3为混入噪声之后的频谱,可以看出噪声分布在整个频率轴上,并且由于噪声中含有与原信号频率相同的成分,叠加之后导致幅值增加。加大噪声的幅值之后,将分辨不出原信号的频率。 5)图4减少了数据点数,N=128,与图1相比较,采用128点和1024点的相同频率的振幅是有不同的表现值。因此振幅的大小与所用采样点数有关。一定范围内采样点数越多,信号的幅值越接近真实值。 6)图5改变采样频率观察不同采样频率对信号的影响,当采样频率太小时,谱线的尾部发生混叠现象,当采样频率太大时,频率的分辨率较低,不利于采样,根据采样定理,采样频率必须大于信号最高频率的2倍,通常采用3~5倍。 7)图6、7、8分别对信号添加了三角窗、海明窗和汉宁窗,图1比较,加窗之后信号的幅值更加接近真实值。而且使得图像的旁瓣减小,信号的能量相对集中。 五、采用相位差法进行频谱校正 校正程序代码: clear; clf; fs=100;N=1024; n=0:N-1;t=n/fs; A=20;B=30;C=0.38; x=A*sin(2*pi*B*t+C); %正弦信号 y1=fft(x.*hanning(N)');%对信号做N点FFT变换 y2=fft(x(1:N/2).*hanning(N/2)');%对信号做N/2点FFT变换 Y1=abs(y1(1:N/2)/N*2);%第一段信号幅值 Y2=abs(y2(1:N/4)/N*4);%第二段信号幅值 f=(1:N/2)*fs/N; subplot(2,1,1);plot(f,2*Y1); xlabel('频率/\itHz');ylabel('振幅/A'); title('加汉宁窗校正前'); grid on; [Y1Amax,k1]=max(Y1); [Y2Amax,k2]=max(Y2); phase1=angle(y1(k1)); phase2=angle(y2(k2)); Ano=Y1Amax*2 fno=(k1-1)*fs/N %未校正频率 phaseno=phase1*180/pi %未校正相角 delt=mod(phase1-phase2,2*pi); %将delt调整到(-pi,pi)之间 if delt<-pi delt1=delt+2*pi; elseif delt>pi delt1=delt-2*pi; else delt1=delt; end deltf=2*(k2-1)-(k1-1)-2*delt1/pi; Yyes=zeros(1,N/2); Ayes=2/sinc(deltf)*Y1Amax*(1-deltf^2) Yyes(k2)=Ayes; fyes=(k1-1-deltf)*fs/N %校正后频率 phaseyes=(phase1+deltf*pi)*180/pi %校正后相位 f(k2)=fyes; subplot(2,1,2);stem(f,Yyes); xlabel('f');ylabel('幅值/A');title('加汉宁窗校正后'); grid on; 程序运行结果: 信号幅值的真实值A=20,频率f=30,相位phase=30,比较校正前后的幅值、频率和相位值可以看出,这种校正方法对幅值和频率的校正比较准确,对相位误差较大,有待于进一步研究。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服