MATLAB之离散傅里叶变换DFT

MATLAB之离散傅里叶变换DFT

% 功能:DFT

% 编辑者:lily
% 日期:2019,4,14

clear;
clc;
close all;
% ======================= input signal ==========================
% 功能:DFT

% 编辑者:lily
% 日期:2019,4,14

clear;
clc;
close all;
% ======================= input signal ==========================
f1=300;
f2=400;
fai1=pi/3;fai2=pi/4;
dFs=2^10;
T=1.7;%
t=0:1/dFs:T;
N=length(t);
x=3*cos(2*pi*f1*t+fai1)+2*sin(2*pi*f2*t+fai2)+5*randn(1,N);%两个谐波加上一个幅值为10高斯白噪声
% ======================= DFT===================================
vecN=0:1:N-1;
vecK=vecN';
tic;
matixexp=exp(-(2*pi/N)*1i*vecK*vecN);
xk=(matixexp*x')/N;%归一化
toc;%tic和toc表示中间两步计算的时间
deltaF=1/T;
vecf=(0:N-1)*deltaF;%使频率与幅值一一对应
% ======================= figure=================================
subplot(3,1,1);plot(t,x);title('信号')
subplot(3,1,2);plot(vecf,2*abs(xk));title('离散傅里叶变换')%观察到abs(xk)是x幅值的一半,2才是真正的幅值。
subplot(3,1,3);plot(vecf,angle(xk));title('相位图')%显示相位;


猜你喜欢

转载自blog.csdn.net/Heart_Sea/article/details/89300882