用matlab 编程:构造一个信号函数*sin(2***)xApiftphi,用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);%显示标题 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;%频率 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,2^N);%对y 进行傅里叶变换 subplot(3,1,2);%三行一列第二幅图 plo...