离散时间信号的傅里叶变换

摘抄整理自《数字信号处理》第二版,吴镇扬,高等教育出版社12页,1.2节离散时间信号的傅里叶变换与z变换。

像模拟信号一样,离散时间信号或数字信号序列(这里用词相当严谨,数字信号序列取值上是离散的而离散时间信号则不一定)也存在着傅里叶变换,通常称为离散时间信号的傅里叶变换,即DTFT(Discrete-Time Fourier Transform)。序列x(n)的DTFT定义为

$X({e^{jw}}) = \sum\limits_{n =  - \infty }^\infty  {x(n){e^{ - jwn}}} $  (1.9)

式中w为数字角频率,它是频率f对采样频率fs作归一化后的角频率

$w = \frac{{2\pi f}}{{{f_s}}}$

显然X(e^jw)是w的连续函数,并且是以2π为周期的。(1.9)式的级数不一定总是收敛的,例如x(n)为单位阶跃序列,级数就不收敛。(1.9)式收敛的充分条件为:

$\sum\limits_{n =  - \infty }^\infty  {\left| {x(n){e^{ - jwn}}} \right|}  = \sum\limits_{n =  - \infty }^\infty  {\left| {x(n)} \right|}  < \infty $

即x(n)绝对可和,则它的DTFT一定存在。同时,也可以推断,有限长序列总是满足绝对可和条件的,其DTFT也总是存在的。

用e^jwn乘以(1.9)式的两边,并在w的一个周期内积分,可得

$\begin{array}{c}
\int\limits_{ - \pi }^\pi {X({e^{jw}}){e^{jwm}}dw} = \int\limits_{ - \pi }^\pi {\left[ {\sum\limits_{n = - \infty }^\infty {x(n){e^{ - jwn}}} } \right]} {e^{jwm}}dw\\
= \sum\limits_{n = - \infty }^\infty {x(n)\int\limits_{ - \pi }^\pi {{e^{jw(m - n)}}} dw} \\
= 2\pi \sum\limits_{n = - \infty }^\infty {x(n)\delta (m - n)}
\end{array}$

注释:上式中,m和n是表示序列的位置,取值离散,即m要么等于n,要么为不等于n的其他整数,在这个前提下,积分结果可分情况讨论得出。注意到这里δ(m-n)是单位序列(离散)而不是冲激函数(连续)。

$x(n) = \frac{1}{{2\pi }}\int\limits_{ - \pi }^\pi  {X({e^{jw}}){e^{jwn}}dw} $ 

这就是离散时间信号的逆傅里叶变换(IDTFT)的公式。

转载于:https://www.cnblogs.com/zhangziyan/p/8798623.html

### 离散时间傅里叶变换(DTFT)的定义 对于离散时间信号 \( x[n] \),其对应的离散时间傅里叶变换(Discrete-Time Fourier Transform, DTFT)可以表示为: \[ X(e^{j\omega}) = \sum_{n=-\infty}^\infty x[n]e^{-j\omega n} \] 其中,\( \omega \) 是角频率,单位为弧度/样本。该公式描述了如何通过求和的方式将离散时间信号转换到频域。 这一公式的推导基于连续时间傅里叶变换的概念,并将其扩展至离散时间领域[^1]。 --- ### 离散时间傅里叶变换的应用场景 离散时间傅里叶变换广泛应用于数字信号处理中,用于分析离散信号的频谱特性。具体来说,它能够揭示信号的能量分布情况以及不同频率分量之间的关系。例如,在音频处理、图像压缩等领域,可以通过计算信号的频谱来设计滤波器或者检测特定频率成分的存在与否[^2]。 以下是几个典型应用场景: - **频谱分析**:利用 DTFT 计算输入信号的频谱图。 - **滤波器设计**:借助于理想低通或高通滤波器响应曲线构建实际可实现的数字滤波器原型。 - **通信系统建模**:模拟信道传输过程中的失真效应并评估误码率性能指标。 --- ### DFT 的有限长度近似及其 C 语言实现 由于直接计算无限长序列不可行,通常采用截断方法得到 N 点周期延拓版本作为替代方案——即所谓的快速傅里叶变换算法 FFT 所依赖的基础形式之一就是这种有限区间内的离散傅里叶变换(DFT): \[ X[k]=\sum _{n=0}^{N-1}x[n]\cdot e^{-i(2\pi /N)\cdot kn},\quad k=0,\dots ,N-1.\] 这里给出了一个简单的 C 实现例子: ```c #include <stdio.h> #include <complex.h> void dft(double complex input[], double complex output[], int size){ for(int k = 0; k < size; ++k){ output[k] = 0; for(int n = 0; n < size; ++n){ output[k] += input[n]*cexp(-I*2*M_PI*k*n/size); } } } int main(){ const int SIZE = 8; double complex data_in[SIZE]; double complex data_out[SIZE]; // Initialize with some test values... for(int i=0;i<SIZE;++i){data_in[i]=(double)(rand()%10);} dft(data_in,data_out,SIZE); printf("DFT Results:\n"); for(int i=0;i<SIZE;i++)printf("%d:%f+%fi\n",i,creal(data_out[i]),cimag(data_out[i])); } ``` 上述程序展示了如何用双重循环结构完成基本功能的同时也指出了效率较低的问题所在之处;当面对大数据集时建议考虑更高效的FFT变体技术加以优化改进. --- ### IDTFT 和逆变换的关系 由给定条件出发经过一系列数学运算最终得出结论如下所示表达式成立,则说明两者互为反演操作从而验证了理论正确性. 已知正向变换公式为: \[X(\Omega)=\sum_n x[n]e^{-jn\Omega}\] 那么相应的逆变换应该满足这样的性质才能还原原始数据流出来自原点处采样的数值集合{x[n]} : \[x[n]={1\over {2\pi }}\int_{{-\pi }}^{\pi }X(\Omega )e^{{jn\Omega }}d\Omega .\][^3] 这意味着只要我们知道了某个离散时间信号在整个频率范围上的表现形态之后就可以重新构造回原来的时空坐标系下的样子啦! --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值