离散傅里叶变换(DFT)的矩阵形式

废话不多说了,先看一下离散傅里叶变换的公式:

公式1

看着如此简单的公式,其实暗藏玄机,往往我们忽略的都是最重要的细节。第一,这个公式针对的是离散周期信号,得到的频域也是离散周期频信号。这也是最普遍使用的公式,方便在计算机上计算。即使信号不是周期信号,在计算机上计算的时候,由于序列长度有限,我们就可以认为这只是信号的一个周期内容。同样,我们输入到计算机中的序列一定是经过采样定理采样后的信号,因此任意一个信号在计算机上做傅里叶变换的时候,都是离散周期信号!!第二,如果信号x(n)是周期函数,那么信号应该限制在一个周期T1之内。第三,变换前后的序列长度是一样的都为[0,N-1]。第四,信号长度N与采样频率f是不一样的,他们的关系是:N=f*T1,其中T1为信号总时间。第五,变换后的横坐标轴不是1,2,3……,而应该是f1,2*f1,3*f1……,因为非简化的离散傅里叶变换公式应该是:

公式2-1  
公式2-2

​其中,T1为信号时间,N为信号采样数,Ts为信号采样间隔时间,f1为频率间隔。这样就能很清晰的看到,变换后的坐标轴都是f1的整数倍。​由时域采样间隔Ts,确定频域重复周期fs,而df→f1=fs/N,即确定了频域的横轴坐标。要想详细了解可以看郑君里的《信号与系统》下册,第九章内容。

好像跑题了,不过离散跟连续真的是有很大的区别,需要特别关注。继续说如何得到离散傅里叶的矩阵形式,我们将上式展开写成如下形式:

公式3

​显而易见,上式中的W各次幂组成的矩阵就是我们要找的离散傅里叶变换矩阵。是不是很简单呢?同理,我们可以得到IDFT的变换矩阵如下:

公式4    

可以从上面看出,两个变换矩阵都是方阵,而且都是对称矩阵。​

对于DFT的正变换在matlab中,已经有写好的程序为dftmtx(n)。而逆变换的矩阵可以通过求dftmtx(n)矩阵的逆,当然也可以自己写(突然发现自己好蠢,为毛要自己写)。matlab程序如下:

N=width;

x=(0:N-1)'*(0:N-1);

W=exp(2*pi*1i*x/N)/N;

​总结一下,其实大部分变换都存在变换矩阵,就是将变换从公式形式向量化,写为矩阵形式即可。其次,因为我们往往会在计算机上使用,也就意味着我们用到的都是离散变换,而离散域跟连续域的不同是我们要特别注意的,我也已经在文中写了几条,也希望各为大神给予指点。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值