离散傅里叶变换与应用

        离散傅里叶变换是傅里叶变换在时域和频域都呈现离散形式的一种变换。离散时间傅里叶变换(DTFT)是将原信号在时域上离散化,是频率的连续函数,而DFT是将DTFT在频域上进行离散化。DFT是针对有限长序列的傅里叶变换,DFT本身也是一个序列,并且具有周期性,即时域和频域上的序列是有限长的。

1、DFT的定义式:

当 0 ≤ n ≤ N-1 时,有限长序列 x[n] 的 N点 离散傅里叶变换(DFT)为,

其中,有

         长度为 N 的离散时间序列 x[n] 的离散傅里叶变换 X[k] 等于其离散时间傅里叶变换X(e^{jw})

 在 N 个均匀间隔频率点 所求的频率样本。即

 2、MATLAB中离散傅里叶变换离散傅里叶逆变换

% 离散傅里叶变换和离散傅里叶逆变换的计算
% Computation of DFT and IDFT
clear;clc;close all
x=[1 2 3 4 5 6 7 8];      % discrete-time sequence
L=length(x);  
N=L;      % set samples number in frequency domain
% 当采样小于 L 时会发生混叠
w=2*pi/N*(0:N-1);    %  discrete frequency
Xw=zeros(1,N);  % vector for storing DFT 
for k=1:N     
     Xw(k)=x*(exp(-j*w(k)*(0:L-1)'));   % DFT
end 
y=zeros(1,N);
for n=1:N
y(n)=(1/N)*Xw* (exp(j*(n-1)*w'));   % IDFT
end
y=real(y);

可以通过以上的运算过程写出一个 DFT 和 IDFT 的函数:

function [X] = dft(x,L)
% 对一个离散序列进行DFT
% x为序列长度为 L 的离散时间序列,X为DFT结果
N=L;      % set samples number in frequency domain
w=2*pi/N*(0:N-1);    %  discrete frequency
X=zeros(1,N);  % vector for storing DFT 
for k=1:N     
     X(k)=x*(exp(-i*w(k)*(0:L-1)'));   % DFT
end 
end
function [x] = idft(X,L)
% 对一个离散序列进行 IDFT
% X为序列长度为 L 的DFT序列,x为IDFT结果
N=L;      % set samples number in frequency domain
w=2*pi/N*(0:N-1);    %  discrete frequency
x=zeros(1,N);
for n=1:N
x(n)=(1/N)*X* (exp(j*(n-1)*w'));   % IDFT
end
end

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

90后嫩男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值