利用Matlab绘制正弦信号的频谱图并做相关分析Word文档格式.doc
- 文档编号:4640521
- 上传时间:2023-05-03
- 格式:DOC
- 页数:6
- 大小:169.50KB
利用Matlab绘制正弦信号的频谱图并做相关分析Word文档格式.doc
《利用Matlab绘制正弦信号的频谱图并做相关分析Word文档格式.doc》由会员分享,可在线阅读,更多相关《利用Matlab绘制正弦信号的频谱图并做相关分析Word文档格式.doc(6页珍藏版)》请在冰点文库上搜索。
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'
gridon;
%两种信号叠加,
x=A*sin(2*pi*B*t+C)+2*A*sin(2*pi*1.5*B*t+2.5*C);
subplot(3,3,2),plot(f,yy);
图2:
fs=100,N=1024,两种信号叠加'
%加噪声之后的图像
x=A*sin(2*pi*B*t+C)+28*randn(size(t));
subplot(3,3,3),plot(f(1:
N/2.56),yy(1:
N/2.56));
图3:
fs=100,N=1024混入噪声'
%改变采样点数N=128
N=128;
subplot(3,3,4),plot(f(1:
图4:
fs=100,N=128'
%改变采样频率为200Hz时的频谱
fs=400;
%对信号进行快速傅里叶变换
%求取傅里叶变换的振幅
subplot(3,3,5),plot(f(1:
%绘出随频率变化的振幅
图5:
fs=400,N=1024'
%加三角窗函数
window=triang(N);
%生成三角窗函数
x=x.*window'
;
%加窗函数
subplot(3,3,6),plot(f(1:
N/2.56),2*yy(1:
图6:
fs=100,N=1024,加三角窗函数'
%加海明窗函数后的频谱
window=hamming(N);
%生成海明窗函数
subplot(3,3,7),plot(f(1:
N/2.56),1.852*yy(1:
图7:
fs=100,N=1024,加海明窗函数'
%加汉宁窗函数后的频谱
window=hanning(N);
%生成汉宁窗函数
subplot(3,3,8),plot(f(1:
图8:
fs=100,N=1024,加汉宁窗函数'
三、运行结果如下:
四、分析与结论:
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比较,加窗之后信号的幅值更加接近真实值。
而且使得图像的旁瓣减小,信号的能量相对集中。
五、采用相位差法进行频谱校正
校正程序代码:
%正弦信号
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);
振幅/A'
加汉宁窗校正前'
[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)之间
ifdelt<
-pi
delt1=delt+2*pi;
elseifdelt>
pi
delt1=delt-2*pi;
elsedelt1=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);
f'
幅值/A'
加汉宁窗校正后'
程序运行结果:
信号幅值的真实值A=20,频率f=30,相位phase=30,比较校正前后的幅值、频率和相位值可以看出,这种校正方法对幅值和频率的校正比较准确,对相位误差较大,有待于进一步研究。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 Matlab 绘制 正弦 信号 频谱 相关 分析