傅里叶变换

此篇博文主要简述傅里叶变换的相关概念以及如何代码实现离散序列的傅里叶变换。

傅里叶变换的一般形式

我们都知道,傅里叶变换是频域分析的重要工具;其将信号从时域转换到了频域,以更直观的角度向我们展示了信号的本质——频率。下面先不加证明地引出傅里叶变换的公式:

连续非周期信号
傅里叶变换为:
X ( w ) = ∫ − ∞ ∞ x ( t ) e − j w t d t X(w)=\int_{-\infty}^{\infty} x(t) e^{-j w t} d t X(w)=x(t)ejwtdt
傅里叶反变换为:
x ( t ) = 1 2 π ∫ − ∞ ∞ X ( j w ) e j w t d w x(t)=\frac{1}{2 \pi} \int_{-\infty}^{\infty} X(j w) e^{j w t} d w x(t)=2π1X(jw)ejwtdw

连续周期信号
傅里叶变换为:
X ( n w 0 ) = 1 T ∫ t 0 t 0 + T x ~ ( t ) e − j n w 0 t d t X\left(n w_{0}\right)=\frac{1}{T} \int_{t_{0}}^{t_{0}+T} \tilde{x}(t) e^{-j n w_{0} t} d t X(nw0)=T1t0t0+Tx~(t)ejnw0tdt
傅里叶反变换为:
x ( t ) = ∑ n = − ∞ ∞ X ( n w 0 ) e j n w 0 t x(t)=\sum_{\mathbf{n}=-\infty}^{\infty} X\left(n w_{0}\right) e^{j n w_{0} t} x(t)=n=X(nw0)ejnw0t

其中 w 0 = 2 π T w_{0}=\frac{2 \pi}{T} w0=T2π

离散非周期信号
傅里叶变换为:
X ~ ( e j Ω T ) = ∑ n = − ∞ ∞ x ( n T ) e − j n Ω T \tilde{X}\left(e^{j \Omega T}\right)=\sum_{n=-\infty}^{\infty} x(n T) e^{-j n \Omega T} X~(ejΩT)=n=x(nT)ejnΩT
傅里叶反变换为:
x ( n T ) = T 2 π ∫ − π T π T X ( e j Ω T ) e j n Ω T d Ω x(n T)=\frac{T}{2 \pi} \int_{-\frac{\pi}{T}}^{\frac{\pi}{T}} X\left(e^{j \Omega T}\right) e^{j n \Omega T} d \Omega x(nT)=2πTTπTπX(ejΩT)ejnΩTdΩ

其中: Ω = k Ω 0 = 2 π N T k = 2 π f s N k = 2 π f \Omega=k \Omega_{0}=\frac{2 \pi}{N T} k=\frac{2 \pi f_{s}}{N} k=2 \pi f Ω=kΩ0=NT2πk=N2πfsk=2πf f s f_{s} fs为采样频率。

离散周期信号
傅里叶变换为:
X ~ ( k ) = ∑ n = 0 N − 1 x ~ ( n ) e − j 2 π N n k \tilde{X}(k)=\sum_{n=0}^{N-1} \tilde{x}(n) e^{-j \frac{2 \pi}{N} n k} X~(k)=n=0N1x~(n)ejN2πnk
傅里叶反变换为:
x ~ ( n ) = 1 N ∑ k = 0 N − 1 X ~ ( k ) e j 2 π N n k \tilde{x}(n)=\frac{1}{N} \sum_{k=0}^{N-1} \tilde{X}(k) e^{j \frac{2 \pi}{N} n k} x~(n)=N1k=0N1X~(k)ejN2πnk

根据上述变换的形式,我们可以总结出如下结论:

结论

  1. 连续非周期信号的傅里叶变换为非周期连续函数——傅里叶变换;
  2. 连续周期信号的傅里叶变换为非周期离散函数——傅里叶级数;
  3. 离散非周期信号的傅里叶变换为周期连续函数——离散时间傅里叶变换;
  4. 离散周期信号的傅里叶变换为周期离散函数——离散傅里叶级数。

即时域上的离散对应频域上的周期,时域上的周期对应频域上的离散

拓展1:对时域中的信号进行采样转化为离散序列时,相当于冲激采样信号与被采样信号时域上相乘(等价于频域上的卷积);从而时域上的采样会引起频域上的周期延拓(这回答了为何离散化的时域信号其频谱呈现周期性)。下图详细描述了这一点:

在这里插入图片描述

在这里插入图片描述

此外从上图可以看出,由于 w s = 2 π T s w_s = \frac{2\pi}{T_s} ws=Ts2π,当 w s &lt; 2 w m w_s &lt;2w_m ws<2wm时,采样后的信号会出现频率混叠;这要求我们要想通过采样不失真地复现原信号,采样频率必须高于信号中最高频率分量的两倍(奈奎斯特采样定理)。
拓展2:为了从采样信号中复现原信号,观察采样后的频谱图可知,只需将采样后的信号通过理想低通滤波器即可,但由于理想低通滤波器的物理不可实现性,工程中常用零阶保持器来代替;至此原信号通过冲激采样信号采样再通过零阶保持器便完成了信号的采样和保持,最终得到了阶梯状的信号序列,如下图所示:
在这里插入图片描述

离散傅里叶级数

接着来看离散周期信号的傅里叶变换(即离散傅里叶级数 D F S DFS DFS)
其傅里叶变换如下所示:
X ~ ( k ) = ∑ n = 0 N − 1 x ~ ( n ) e − j 2 π N n k \tilde{X}(k)=\sum_{n=0}^{N-1} \tilde{x}(n) e^{-j \frac{2 \pi}{N} n k} X~(k)=n=0N1x~(n)ejN2πnk
实际上,由于离散信号的傅里叶变换是周期函数,故 X ~ ( k ) \tilde{X}(k) X~(k)有无穷多项,为方便计算,取 k k k的上限为 N − 1 N-1 N1(事实上,此时系数矩阵满秩,方程具有唯一解);将上式写成矩阵形式则有:
X ~ = W N x ~ \tilde{X}=W_{N} \tilde{x} X~=WNx~
即:
[ 1 1 ⋯ 1 1 W N 1 ⋯ W N N − 1 ⋮ ⋮ ⋱ ⋮ 1 W N N − 1 ⋯ W N ( N − 1 ) 2 ] [ x ~ ( 0 ) x ~ ( 1 ) ⋮ x ~ ( N − 1 ) ] = [ X ~ ( 0 ) X ~ ( 1 ) ⋮ X ~ ( N − 1 ) ] \left[\begin{array}{cccc}{1} &amp; {1} &amp; {\cdots} &amp; {1} \\ {1} &amp; {W_{N}^{1}} &amp; {\cdots} &amp; {W_{N}^{N-1}} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {1} &amp; {W_{N}^{N-1}} &amp; {\cdots} &amp; {W_{N}^{(N-1)^{2}}}\end{array}\right]\left[\begin{array}{c}{\tilde{x}(0)} \\ {\tilde{x}(1)} \\ {\vdots} \\ {\tilde{x}(\mathrm{N}-1)}\end{array}\right]=\left[\begin{array}{c}{\tilde{X}(0)} \\ {\tilde{X}(1)} \\ {\vdots} \\ {\tilde{X}(\mathrm{N}-1)}\end{array}\right] 1111WN1WNN11WNN1WN(N1)2x~(0)x~(1)x~(N1)=X~(0)X~(1)X~(N1)

其中:

W N = e − j 2 π N W_{N}=e^{-j \frac{2 \pi}{N}} WN=ejN2π

上述矩阵即为DFS矩阵,观察其形式可知其为范德蒙矩阵,则其逆可表示为:

W N − 1 = 1 N W N ∗ W_{N}^{-1}=\frac{1}{N} W_{N}^{*} WN1=N1WN

进一步可以写成:
W N − 1 = [ 1 1 ⋯ 1 1 W N 1 ⋯ W N N − 1 ⋮ ⋮ ⋱ ⋮ 1 W N N − 1 ⋯ W N ( N − 1 ) 2 ] − 1 = 1 N [ 1 1 ⋯ 1 1 W N − 1 ⋯ W N − ( N − 1 ) ⋮ ⋮ ⋱ ⋮ 1 W N − ( N − 1 ) ⋯ W N − ( N − 1 ) 2 ] W_{N}^{-1}=\left[\begin{array}{cccc}{1} &amp; {1} &amp; {\cdots} &amp; {1} \\ {1} &amp; {W_{N}^{1}} &amp; {\cdots} &amp; {W_{N}^{N-1}} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {1} &amp; {W_{N}^{N-1}} &amp; {\cdots} &amp; {W_{N}^{(N-1)^{2}}}\end{array}\right]^{-1}=\frac{1}{N}\left[\begin{array}{cccc}{1} &amp; {1} &amp; {\cdots} &amp; {1} \\ {1} &amp; {W_{N}^{-1}} &amp; {\cdots} &amp; {W_{N}^{-(N-1)}} \\ {\vdots} &amp; {\vdots} &amp; {\ddots} &amp; {\vdots} \\ {1} &amp; {W_{N}^{-(N-1)}} &amp; {\cdots} &amp; {W_{N}^{-(N-1)^{2}}}\end{array}\right] WN1=1111WN1WNN11WNN1WN(N1)21=N11111WN1WN(N1)1WN(N1)WN(N1)2
上述步骤的详细证明

同样地,可以写出离散周期信号的傅里叶反变换形式为:

x ~ = W N − 1 X ~ \tilde{x}=W_{N}^{-1} \tilde{X} x~=WN1X~

傅里叶变换在MATLAB中的实现

上述步骤在Matlab中的实现为:

%DFS:
function [Xk] = dfs(xn,N)
n=0:1:N-1;
k=0:1:N-1;
WN = exp(-j*2*pi/N);
nk = n'*k;
WNnk = WN.^nk;
Xk = xn*WNnk;
end
%IDFS:
function [Xk] = dfs(xn,N)
n=0:1:N-1;
k=0:1:N-1;
WN = exp(-j*2*pi/N);
nk = n'*k;
WNnk = WN.^(-nk);
Xk = xn*WNnk/N;
end

一个例子:

Ts = 0.01; %离散步长
T = 10;    %采样时间
t= Ts:Ts:T;%采样步长
w1 = 5*2*pi;
w2 = 20*2*pi;
w3 = 35*2*pi; %频率分量,单位为弧度
N=length(t);  %样点个数
y= cos(w1*t) + cos(w2*t) + cos(w3*t);
Fs=1/Ts;                 %采样频率
df=Fs/(N-1) ;            %分辨率
f=(0:N-1)*df;            %其中每点的频率
Xf = dfs(y,N);           %傅里叶变换
Phase = zeros(1,len);    %用于存储各频率点的幅值
Amplitude = zeros(1,len);%用于存储各频率点的相位
%幅值
for i=1:N
    Amplitude(i) = abs(Xf(i));
    Phase(i) = angle(Xf(i));
end
%绘制源信号波形
figure(1)
plot(t,y)
grid on
%绘制频谱图
figure(2)
plot(f,2*Amplitude/N)
xlabel('频率/Hz')
ylabel('幅值')
grid on

原信号波形:
在这里插入图片描述

频谱图(原图):

在这里插入图片描述

频谱图(截断处理后):
在这里插入图片描述

注意
1.对于一个时域信号 x ( t ) x(t) x(t),采样频率为 F s F_s Fs,采样点数为 N N N,采样后序列为 y ( n ) y(n) y(n),则上述 F = d f s ( y , N ) F=dfs(y,N) F=dfs(y,N)计算所得的结果就是一个有 N N N个元素的复数序列 a n + b n j a_n + b_n j an+bnj;该序列每一个复数对应着一个频率点,复数的模值和相角对应信号在该频率值下的幅相特性;
2.频率: F F F序列的第 n n n点处的对应的实际频率是 n ∗ F s / N n*Fs/N nFs/N
3.幅值: F F F序列的第 n n n点处对应的复数为 a + b j a+bj a+bj,模值 A = a 2 + b 2 A=\sqrt{a^2+b^2} A=a2+b2 ,那么实际信号在该频率值下的幅值是 2 ∗ A / N 2*A/N 2A/N;特别的,当 n = 0 n=0 n=0时,对应幅值为 A / N A/N A/N
4.相位: F F F序列每个频率点处的复数的相位就是信号在该频率值下的相位;
5.采样频率必须大于信号中最高频率分量的两倍,否则会引起频率混叠;
6. D F S DFS DFS得到的 F F F序列关于中间位置 F s / 2 F_s/2 Fs/2对称(周期性),由采样定理可知,高于 F s / 2 F_s/2 Fs/2的信号将会出现频率混叠,频谱图显示的最高频率应为 F s / 2 F_s/2 Fs/2,故需对 F F F序列的横坐标进行截断处理

离散傅里叶变换

离散傅里叶级数(DFS)提供了一种对离散时间傅里叶变换做数值计算的技巧,它在时域和频域都是周期的,但在实际中大多数信号不具有周期性,且很可能只具有有限持续时间。这就要求我们探讨一种对非周期离散有限信号序列进行傅里叶变换的方法,即离散傅里叶变换(DFT)。
DFT是对任意有限持续时间序列可数值计算的傅里叶变换
长度为N的有限长序列 x ( n ) x(n) x(n)可以看作周期序列 x ~ ( n ) \tilde{x}(n) x~(n)的主值序列,同样的 x ~ ( n ) \tilde{x}(n) x~(n)可以看作 x ( n ) x(n) x(n)的周期延拓。

由于无频率混叠,则时域中的一个周期长的主值序列对应于频域中的一个周期长的主值序列。从DFS的时域和频域中各取出一个周期,即可得到有限长度的离散序列的时域和频域傅里叶变换。

{ X ( k ) = [ ∑ n = 0 N − 1 x ~ ( n ) W N n k ] R N ( k ) = X ~ ( k ) R N ( k ) x ( n ) = [ 1 N ∑ k = 0 N − 1 X ~ ( k ) W N − n k ] R N ( n ) = x ~ ( n ) R N ( n ) \left\{\begin{array}{l}{X(k)=\left[\sum_{n=0}^{N-1} \tilde{x}(n) W_{N}^{n k}\right] R_{N}(k)=\tilde{X}(k) R_{N}(k)} \\ {x(n)=\left[\frac{1}{N} \sum_{k=0}^{N-1} \tilde{X}(k) W_{N}^{-n k}\right] R_{N}(n)=\tilde{x}(n) R_{N}(n)} \end{array}\right. X(k)=[n=0N1x~(n)WNnk]RN(k)=X~(k)RN(k)x(n)=[N1k=0N1X~(k)WNnk]RN(n)=x~(n)RN(n)
其中 R N ( k ) R_{N}(k) RN(k) R N ( n ) R_{N}(n) RN(n)均为窗函数,负责从时域与频域序列中取出主值序列。即可得到:

{ X ( k ) = D F T [ x ( n ) ] = ∑ n = 0 N − 1 x ( n ) W N n k 0 ≤ k ≤ N − 1 x ( n ) = IDFT ⁡ [ X ( k ) ] = 1 N ∑ k = 0 N − 1 X ( k ) W N − n k 0 ≤ n ≤ N − 1 \left\{\begin{array}{l} {X(k)=D F T[x(n)]=\sum_{n=0}^{N-1} x(n) W_{N}^{n k} \quad 0 \leq k \leq N-1} \\ {x(n)=\operatorname{IDFT}[X(k)]=\frac{1}{N} \sum_{k=0}^{N-1} X(k) W_{N}^{-n k} \quad 0 \leq n \leq N-1} \end{array}\right. {X(k)=DFT[x(n)]=n=0N1x(n)WNnk0kN1x(n)=IDFT[X(k)]=N1k=0N1X(k)WNnk0nN1

事实上,DFS与DFT的表达式没有本质区别。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值