作者:桂。
时间:2017-03-07 18:40:05
链接:
声明:欢迎转载,不过记得注明出处哦~
前言
本文主要介绍信号频域变换的常用方式,主要介绍基本的三种方法,实现时域数字信号的傅里叶变换:
1)基本DFT变换;
2)FFT变换
3)逆序级联FFT
三种方法实现方式略有差别,但本质完全相同。为了方便大家理解,本文给出基本MATLAB实现。内容的理论部分,多有借鉴他人,相应链接在最后一并给出。
〇、写在前面
关于信号时域连续、离散以及各自频域的对应关系,可以参考之前的一篇博文。为了便于理解,此处给一个DTFT—>DFT的解释。
MATLAB代码:
%DTFT clc;clear all;close all N=8; %原离散信号有8点 n=[0:1:N-1] ; %原信号是1行8列的矩阵 xn=0.5.^n; %构建原始信号,为指数信号 w0=[-2*N:.1:2*N]*2*pi/N; %方便观察,此处取4个周期-4*pi~4*pi X0=xn*exp(-j*(n'*w0)); %求dtft变换,采用原始定义的方法,对复指数分量求和而得 subplot(221) plot(n,xn,'r');hold on;xlabel('时间') stem(n,xn,'k');grid on; title('时域采样后的信号(指数信号)');ylabel('幅值') subplot(222); plot(w0,abs(X0),'k');ylabel('幅值');xlabel('角频率');%逼近连续,其实这么处理不正确,仅仅是方便理解 title('DTFT变换'); xlim([-4*pi,4*pi]);grid on;