《傅里叶变换matlab代码(2021年整理)》由会员分享,可在线阅读,更多相关《傅里叶变换matlab代码(2021年整理)(2页珍藏版)》请在金锄头文库上搜索。
1、傅里叶变换 clc;clear all;close all; tic Fs=128;%采样频率,频谱图的最大频率 T=1/Fs;%采样时间,原始信号的时间间隔 L=256;%原始信号的长度,即原始离散信号的点数 t=(0:L-1)*T;%原始信号的时间取值范围 x=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180)+3*cos(2*pi*30*t-90*pi/ 180); z=7*cos(2*pi*15*t-pi)+3*cos(2*pi*40*t-90*pi/180); z1=6*cos(2*pi*30*t-90*pi/180); z1(1:L/2)=
2、0; z=z+z1; y=x;%+randn(size(t); figure; plot(t,y) title(含噪信号) xlabel(时间(s)) hold on plot(t,z,r-) N=2nextpow2(L);%N 为使 2N=L 的最小幂 Y=fft(y,N)/N*2; Z=fft(z,N)/N*2;%快速傅里叶变换之后每个点的幅值是直流信号以外的原始信号幅值的 N/2 倍 (是直流信号的N 倍) f=Fs/N*(0:N-1);%频谱图的频率取值范围 A=abs(Y);%幅值 A1=abs(Z,让很小的数置零,1,B=A; B1=A1; A(A10-10)=0;,A1(A110
3、-10)=0; P=angle(Y).*A./B; P1=angle(Z).*A1./B1; P=unwrap(P,pi);%初相位值,以除去了振幅为零时的相位值 P1=unwrap(P1,pi); figure subplot(211) plot(f(1:N/2),A(1:N/2)%函数 ffs 返回值的数据结构具有对称性,因此只取前一半 hold on plot(f(1:N/2),A1(1:N/2),r-) title(幅值频谱,2,xlabel(频率(HZ)) ylabel(幅值) grid on subplot(212) stem(f(1:N/2),P(1:N/2) hold on stem(f(1:N/2),P1(1:N/2),r) title(相位频谱) xlabel(频率(HZ)) ylabel(相位) toc