MATLAB信号处理 FFT变换后的幅频相频曲线

  • 格式:pdf
  • 大小:403.81 KB
  • 文档页数:6
三行一列第一幅图 plot(t,y);%绘制图形 xlabel('t/s','fontsize',13);%横坐标显示 t/s,字号 13 ylabel('y','fontsize',13);%纵坐标显示 y,字号 13 title('正弦函数曲线','fontsize',13);%显示标题 Y=fft(y,2^N);%对 y 进行傅里叶变换 subplot(3,1,2);%三行一列第二幅图 plot(f,abs(Y(1:2^(N-1)+1)));%绘制图形 xlabel('f/Hz','fontsize',13);%横坐标显示 f/Hz,字号 13 ylabel('幅值','fontsize',13);%纵坐标显示幅值,字号 13 title('幅频特性曲线','fontsize',13);%显示标题 [value,index]=max(abs(Y));%将 abs(Y)最大值点的横坐标、纵坐标分别赋给 value 和 index text(f(index),value,sprintf('maxpiont=(%f,%f)',f(index),value),'fonts ize',13);%显示最大值点坐标 subplot(3,1,3);%三行一列第三幅图 plot(f,angle(Y(1:2^(N-1)+1))*180/pi);%绘制图形 xlabel('f/Hz','fontsize',13);%横坐标显示 f/Hz,字号 13 ylabel('相位/°','fontsize',13);%纵坐标显示相位/°,字号 13 title('相位特性曲线','fontsize',13);%显示标题
用 matlab 编程: 构造一个信号函数 x A *sin(2* pi * f * t phi ) , 用 FFT 变换后, 做出其幅频及相位的曲线。 1、流程图 2、程序代码 %用 fft 求幅频相频 clc;%清空 clear all;%清除所有变量 close all;%关闭所有窗口 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','fontsize',13);%纵坐标显示 y,字号 13 title('正弦函数曲线','fontsize',13);%显示标题 Y=fft(y,512);%对 y 进行傅里叶变换 subplot(3,1,2);%三行一列第二幅图 plot(f,abs(Y(1:257)));%绘制图形 xlabel('f/Hz','fontsize',13);%横坐标显示 f/Hz,字号 13 ylabel('幅值','fontsize',13);%纵坐标显示幅值,字号 13 title('幅频特性曲线','fontsize',13);%显示标题 [value,index]=max(abs(Y));%将 abs(Y)最大值点的横坐标、纵坐标分别赋给 value 和 index text(f(index),value,sprintf('maxpiont=(%f,%f)',f(index),value),'fonts ize',13);%显示最大值点坐标 subplot(3,1,3);%三行一列第三幅图 plot(f,angle(Y(1:257))*180/pi);%绘制图形 xlabel('f/Hz','fontsize',13);%横坐标显示 f/Hz,字号 13 ylabel('相位/°','fontsize',13);%纵坐标显示相位/°,字号 13 title('相位特性曲线','fontsize',13);%显示标题
当 N=10 时,结果如图 2
图2
当 N=12 时,结果如图 3
图3
当 N=20 时,结果如图 4
图4 通过观察比较图 1 到图 4,可以很明显的看到最大值点的横坐标越来越接近 50,自然会想到当 N 趋于无穷时,那么横坐标的值就是 50。由此给我们的启示 是,在以后求 fft 时,尽量将 N 取大,尤其是噪声信号与有用信号的频率很接近 时,这样能保证有更高的精度。
3、程序运行结果
图 1 N=9 时 fft 结果 4、困惑及自我理解 为 什 么 最 大 值 的 横 坐 标 为 50.781250 , 而 不 是 50 , 是 不 是 因 为 f=step*(0:256)/512 并不能将所有的 f 列出,所以修改程序如下: %用 fft 求幅频相频 clc;%清空 clear all;%清除所有变量 close all;%关闭所有窗口 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 N=input('请输入 2 的指数 N='); f=step*(0:2^(N-1))/2^N;%频率