Matlab信号处理FFT变换后的幅频相频曲线_精品文档Word下载.docx
《Matlab信号处理FFT变换后的幅频相频曲线_精品文档Word下载.docx》由会员分享,可在线阅读,更多相关《Matlab信号处理FFT变换后的幅频相频曲线_精品文档Word下载.docx(6页珍藏版)》请在冰豆网上搜索。
closeall;
%关闭所有窗口
A=10;
%振幅
fw=50;
%固有频率
phi=pi/3;
%相位
step=1000;
t=0:
1/step:
10*pi;
%时间t
y=A*sin(2*pi*fw*t+phi);
%正弦函数y
f=step*(0:
256)/512;
%频率
subplot(3,1,1);
%三行一列第一幅图
plot(t,y);
%绘制图形
xlabel('
t/s'
'
fontsize'
13);
%横坐标显示t/s,字号13
ylabel('
y'
%纵坐标显示y,字号13
title('
正弦函数曲线'
%显示标题
Y=fft(y,512);
%对y进行傅里叶变换
subplot(3,1,2);
%三行一列第二幅图
plot(f,abs(Y(1:
257)));
f/Hz'
%横坐标显示f/Hz,字号13
幅值'
%纵坐标显示幅值,字号13
幅频特性曲线'
[value,index]=max(abs(Y));
%将abs(Y)最大值点的横坐标、纵坐标分别赋给
value和index
text(f(index),value,sprintf('
maxpiont=(%f,%f)'
f(index),value),'
fonts
ize'
%显示最大值点坐标
subplot(3,1,3);
%三行一列第三幅图
plot(f,angle(Y(1:
257))*180/pi);
相位/°
'
%纵坐标显示相位/°
,字号13
相位特性曲线'
3、程序运行结果
图1N=9时fft结果
4、困惑及自我理解
为什么最大值的横坐标为50.781250,而不是50,是不是因为f=step*(0:
256)/512并不能将所有的f列出,所以修改程序如下:
N=input('
请输入2的指数N='
);
2^(N-1))/2^N;
Y=fft(y,2^N);
2^(N-1)+1)));
%将abs(Y)最大值点的横坐标、纵坐标分别赋给value和index
2^(N-1)+1))*180/pi);
当N=10时,结果如图2
图2
当N=12时,结果如图3
图3
当N=20时,结果如图4
图4
通过观察比较图1到图4,可以很明显的看到最大值点的横坐标越来越接近50,自然会想到当N趋于无穷时,那么横坐标的值就是50。
由此给我们的启示是,在以后求fft时,尽量将N取大,尤其是噪声信号与有用信号的频率很接近时,这样能保证有更高的精度。