Fourier分析入门——第4章——频率域

news2024/12/28 12:38:20

目录

第 4 章  频率域(The Frequency Domain)

4.1 频谱分析(Spectral Analysis)

4.2 物理单位(Physics units)

4.3 笛卡尔坐标形式与极坐标形式对比

4.4 频谱分析的复数形式

4.5 复数值Fourier系数

4.6 复数值的和三角的Fourier系数之间的关系

4.7  2维或多维离散Fourier变换

4.8  DFT的Matlab实现

4.9  重新审视Parseval定理


第 4 章  频率域(The Frequency Domain)

4.1 频谱分析(Spectral Analysis)

上一章介绍了如何对离散数据进行Fourier分析。 为了推导出三角函数Fourier级数模型的各种Fourier系数的公式,我们采用了“向量化”过程,其中要建模的离散函数的值被视为 D 维向量的坐标。在从图 4.1 A 到 4.1 B 的过渡中,针对 D =3 的情况说明了此向量化过程的具体示例(来自练习 4.1)。信息论创始人Claude Shannon将此过程描述为,将定义在简单空间(二维平面)中的复杂对象(波形)转换为极其复杂的 N维空间中的简单对象()。在第 3 章中,我们了解到这个空间也由一组三角向量构成,这些三角向量是通过对正弦波和余弦波的谐波级数进行采样而形成的。这些新的基向量相互正交,它们形成一个新的参考坐标系,如图 4.1. C 所示,它相对于用于绘制图 4.1 B 中的数据向量的原始参考系旋转。Fourier分析随后被认为是将数据向量投影到三角基向量上以生成模型的Fourier系数的行为。因此,整个过程是从不同的角度制定问题的示例,以便深入了解问题的本质并简化解决方案的计算。

为了显示和解释Fourier分析的结果,常对Fourier系数的D维向量“去向量化(e-vectorized)”处理,以便显示为新的离散函数,如图 4.1 C 到 4.1 D 的过渡所示。注意图 4.1 D 中的一对图有一个共同的 𝖷 轴,它是谐波数,𝖸 轴显示余弦(包括常数项)和正弦Fourier系数的大小。 由于谐波数(harmonic number)与模型中各种三角函数的振荡频率(frequency)成正比,图 4.1 D 显然是模型中存在的频率分量的数量的图形显示。类比玻璃棱镜(prism)对光产生的效果,这样的图形称为原始离散数据函数的频谱(frequency spectrum)。

虽然Fourier分析的计算过程遵循图4 A→B→C→D所示的阶段序列,但中间阶段(B,C)对于理解空间/时间域之间的关系不是必需的(图4A) 和频域(图 4D)。前向离散Fourier变换(DFT)将离散函数 𝗒(𝗍) 转换到频域/谱域(4A→4D),逆DFT将谱转换回时域/空间域(4 D→4 A)。这两个域(即时域和频域)是查看相同数据的互补方式,因此,Fourier分析不会获得新信息,只会获得新视角

-----------------------------图 4.1 两种域——时域和频域-----------------------

4.2 物理单位(Physics units)

如果离散函数 𝗒(𝗑) 所地的定义的区间的长度为L ,且这个区间被均分成 D 个子区间,则在空间/时间域中水平间隔大小Δx

\Delta x = \frac{L}{D}  “=空间域/时间域中的分辨率”-------------------------------------------------[4.1]

样本间距离的倒数(inverse)称为采样频率采样率 R ,因此,R = \frac{D}{L}  。此外,相应Fourier级数的第一次(基础的)谐波分量对应频率 \frac{1}{L} (译注:即长度看成一个周期)。例如,假如 L = 2米,则基础分量( k = 1)对应频率为 1/2 个周期/米(译注:基频率,一个周期对应2米,1米即0.5个周期)。则第二次谐波( k = 2) 应当是2/2 个周期/米(译注:第二次谐波频率为基波的2倍,快了一倍,相同时间跑完1个周期),第三次谐波( k = 3) 应当是3/2 个周期/米(译注:频率变为基频率的1.5倍了,相同时间跑完1.5个周期了),因此,第 k 次谐波应当具有频率  f_k = \frac{k}{L} 周期/米。因此,频率域中各点之间的水平间隔 Δf

\Delta f = \frac{1}{L}   “=频率域中的分辨率”----------------------------------------------------------[4.2]

因为Fourier系数的总数等于 D (数据点数),且因为这些系数成对出现(正弦系数项和余弦系数项),所以,所求的离散谐波数是 N = D/2(当D是偶数)或 N = (D - 1)/2(当D是奇数)。因此,最高次谐波具有频率  f_k = N\Delta f = \frac{N}{L} 。因为频谱在频率区间 0 到 \frac{N}{L} 之间延伸,值 W=\frac{N}{L} 称为函数 𝗒(𝗑) 的带宽(bandwidth),

W=\frac{N}{L} “=频谱带宽”------------------------------------------------------------------------[4.3]

这些结论可以组合起来(对于D为偶数的情况)以产生另外的有用公式:

R = \frac{D}{L} = \frac{2N}{L} = 2W “采样率 = 2×带宽”-----------------------------------[4.4]

D = 2WL   “数据点数 = 2×带宽×区间长度”---------------------------[4.5]

在为实验数据指定傅立叶级数模型时,频率的物理单位通常优先于谐波数。 回想一下,一般的Fourier级数之前给出为

\mathsf{Y} = y ( \mathsf(X)) = \frac{a_0}{2} + \sum_{k=1}^{N}[a_k cos(k\theta) + b_k.sin(k\theta)], \theta = 2\pi \mathsf{X}/ \mathsf{L}-------------[3.34],

当我们使用物理频率 f_\mathsf{k} = \mathsf{k}/\mathsf{L} 作为k阶谐波频率,则模型成了

\mathsf{Y} = y ( \mathsf(X)) = \frac{a_0}{2} + \sum_{k=1}^{N}[a_k cos(2\pi f_{k}x) + b_k.sin(2\pi f_{k}x)]------[4.6]

鉴于上述定义,我们有必要的词汇来构建这样的问题:“如果我们以相同的速率采集更多样本会怎样?” 这种情况如图 4.2 所示。等式 [4.4] 表明,由于在这种情况下速率 R 是固定的,因此频谱的带宽 W 也将是固定的。

 -----------------------------图 4.2 改变观察区间长度的效果---------------------

因为 W 是固定的,等式 [4.5] 表明增加数据点数量的唯一方法是延长观察区间 L 。这意味着,根据等式 [4.2],频域中各点之间的间隔 1/L 必须减小。换句话说,在固定采样率下增加样本数量的效果是在不改变其带宽的情况下增加被测频谱的频率分辨率

    相反,我们应该问:“如果我们以更快的速率采样相同的间隔会发生什么?” 如图 4.3 所示。从上面的方程组中,我们可以得出结论,在固定时间内提高采样率的效果是在不改变其频率分辨率的情况下增加被测频谱的带宽

 -----------------------------图 4.3 改变采样频率的效果-----------------------

4.3 笛卡尔坐标形式与极坐标形式对比

    在第 2 章中,我们观察到余弦波与同频正弦波之和等于同频移相余弦波。也就是说,如果函数以笛卡尔形式写为 v(t) = A cos( t ) + B sin( t ),那么它也可以以极坐标形式写为 v(t) = C cos (t - Φ)。将此结果应用于当前情况,我们可以写出方程 [4.6] 的极坐标形式为

\mathsf{Y} = y ( \mathsf{X} ) = \frac{a_0}{2} + \sum_{k=1}^{N}[m_k cos(2\pi f_k x-\Phi_k)]---------[4.7]

其中,

m_k = \sqrt{a_k^2+b_k^2}) ...........幅度(magnitude)

\Phi_k = tan^{-1}(\frac{b_k}{a_k}) ...............相位(phase) --------------------------------------------------[4.8]

Fourier级数的这种极坐标形式中通过分别绘制各种频率分量的幅度 m 和这些分量的相位Φ 以图形方式显示频谱。一个例子如图 4.4 所示,在电气工程中,这样的图形通常被称为波德图(Bode plot)。请注意,幅度始终为正,相位被限制在区间 (0 - 2π)内。

 -----------------------------图 4.4 频率的两种形式:笛卡尔和极坐标---------------------------------

4.4 频谱分析的复数形式

等式[4.6]中Fourier级数的形式,促使我们使用复数来表示频谱,因为级数中三角函数项成对出现,每个谐波显示为余弦波和正弦波的加权和。在第 2 章中,我们学习了如何将这种组合有效地描述为绘制在复平面上的相量。在代数上,这些相量等同于复数,其中数的“实”部分是余弦函数的权重,数的“虚”部分是正弦函数的权重(译重,权重(weight),我们姑且把它当成一个衡量其级数项相对重要性的乘法因子)。 为了采用这种方法,我们使用练习 2.3 中证明的Euler公式(译注:即反映指数函数与三角函数关系的公式 e^{i\theta}=cos(\theta)+isin(\theta) , 因为此函数为周期函数,只写 θ 即可,也可写成 )。

cos(\theta) = \frac{e^{i\theta} + e^{-i\theta}}{2}

sin(\theta) = \frac{e^{i\theta} - e^{-i\theta}}{2i}=\frac{i(e^{-i\theta}-e^{i\theta})}{2} ---------------------------------------------[4.9]

[译注,在 Euler公式中,令解度为 -θ,则有 e^{-i\theta} = cos(\theta) - i sin(\theta) ,将两式分别相加相减即可求出cos(θ)和sin(θ)的表达式。]

在开区间(0,2π)上重写离散函数的Fourier级数为

y(x) = \frac{a_0}{2} + a_1 cos(x) + b_1 sin(x) + a_2 cos(2x) + b_2 sin(2x) + ...

= \frac{a_0}{2} + \frac{a_1 e^{ix} }{2} +\frac{a_1 e^{-ix}}{2} + \frac{b_1 e^{ix}}{2} + \frac{b_1 e^{-ix}}{2} + \frac{a_2 e^{i2x}}{2} + \frac{a_2 e^{-i2x}}{2} + \frac{b_2 e^{i2x}}{2} + \frac{b_2 e^{-i2x}}{2} + ...

---------------------------------------------------------------------------------------------------------[4.10]

假如我们收集具有公共指数因子的项,则等式成为

y(x) = \frac{a_0}{2} +\frac{a_1-ib_1}{2}e^{ix} + \frac{a_1+ib_1}{2}e^{-ix} + \frac{a_2-ib_2 }{2}e^{i2x} + \frac{a_2+ib_2 }{2}e^{-i2x} + ...

 ---------------------------------------------------------------------------------------------------------[4.11]

现在,我们定义通用的Fourier系数的复数形式 c_k 为

c_k =\frac{a_k-ib_k}{2} e^{ix}

c_{-k} =\frac{a_k+ib_k}{2} e^{ix}

c_0=\frac{a_0}{2} ----------------------------------------------------------------------------------------[4.12]

则等式[4.7]的Fourier级数就转化成了

y(x) = c_0 + c_1 e^{ix} + c_{-1} e^{-ix} + c_2 e^{-2ix} + c_{-2} e^{-2ix} + ...

= \sum_{k=-N}^{N}(c_k e^{ikx})--------------------------------------------------------------[4.13]

Fourier级数的这种极其紧凑的形式在该主题的教科书作者中非常流行。请注意,用复数指数代替三角函数需要负谐波。 其原因在Euler方程 [4.9] 中很明显:即使是简单的余弦函数也是两个复数指数的和,一个具有正角,另一个具有负角。 图 4.5 显示了笛卡尔和极坐标形式的余弦波形的复值Fourier频谱的图形表示。

-----------------------------图 4.5 余弦波的复值Fourier频谱-----------------------------------------------------

负频率的含义最容易理解为反向旋转相量(参见练习 2.3),其中实部指向相同方向(因此增强)但虚部指向相反方向(因此抵消)这些成对相量的旋转速率是余弦函数的频率当两个相量反向旋转时它们之和的长度扫出一个余弦波形

一个潜在的混淆来源是用于显示实值Fourier频谱的频率轴(图 4.4)与用于显示复值频谱的频率轴(图 4.5)具有不同的含义。前者是指三角基函数的频率,而后者是指复指数函数的频率。 如果作者未能明确地说明使用哪种类型的基函数来计算Fourier频谱,则读者需根据上下文背景来自行决定。 如果频率轴包含负值,这很容易做到,因为只有复指数使用负频率;按照惯例,三角频率总是正的。 然而,如果只显示复值频谱的正半部分,就会出现潜在的混淆。当光谱以极坐标形式显示时,这种情况并不少见,因为对于实值数据,幅度谱总是关于 𝗒 轴对称,因此光谱的负半部分是多余的,并且经常被作者或出版商压制。

4.5 复数值Fourier系数

根据具有复系数的复数指数重写Fourier级数模型后,应该可以重复第 3 章中使用的三角模型分析路线,从而验证等式中的公式。[4.12] 将产生这些复数值Fourier系数的数值。 在这里验证 D = 3 的情况然后将结果推广到任何 D 就足够了。因此,我们采用与第 3.F(译注:3.6节) 节中相同的方法,并在每个 𝖷 值处我们有可用采样点时计算Fourier级数[4.13]。(译注:以下假设在开区间(0,2π)上采样)

\mathsf{Y}_0 = c_0 + c_1 e^{i0} + c_{-1} e^{i(-0)}.............@ X = 0

\mathsf{Y}_1 = c_0 + c_1 e^{(i2\pi)/3} + c_{-1} e^{i(-2\pi/3)} .............@ X = L/3

\mathsf{Y}_2 = c_0 + c_1 e^{(i4\pi)/3} + c_{-1} e^{i(-4\pi/3)} .............@ X = 2L/3

为了解这个方程组,我们首先写成矩阵形式 v = Q.h 如下

\begin{bmatrix} \mathsf{Y}_0\\ \mathsf{Y}_1 \\ \mathsf{Y}_2 \end{bmatrix} =\begin{bmatrix} 1 & e^{i0}& e^{i(-0)}\\ 1 & e^{i (2\pi/3)}& e^{i (-2\pi/3)}\\ 1& e^{i (4\pi/3)}& e^{i (-4\pi/3)} \end{bmatrix}\cdot \begin{bmatrix} c_0\\ c_1 \\ c_{-1} \end{bmatrix}--------------------[4.16]

当按这种方式书写时,矩阵Q的列应当考虑成列向量 Q_0Q_1,和 Q_{-1} ,这是由采样的指数函数创造的,采样指数函数组成了我们的Fourier模型的基。用h 表示复数的Fourier系数,我们也可以使用先前创立的对采样的三角向量使用的紧凑记法,写为(用向下的箭头表示列向量)

\mathsf{v} = \begin{bmatrix} Q_0 & Q_1 &Q_{-1} \\ \downarrow& \downarrow & \downarrow \end{bmatrix}\cdot \mathsf{h}-------------------------------------------------------------[4.17]

此等式意味着,向量 v 是基向量的加权和

\mathsf{v} = c_0 Q_0 + c_1 Q_1 + c_{-1} Q_{-1}。--------------------------------------------------[4.18]

对于在区间 2πD 采样的通用情况,其逆DFT关系 v = Q.h 是

\mathsf{v} = c_0 Q_0 + c_1 Q_1 + c_{-1} Q_{-1} + c_2 Q_2 + c_{-2} Q_{-2} + ...

= \sum_{k=-N}^{k=N}(c_k Q_k) (IDFT)--------------------------------------------------------------------[4.19]

 其中,通用基向量由

Q_k = ( e^0 , e^{ik\theta_1} , e^{ik\theta_2}, e^{ik\theta_3},...,e^{ik\theta_N}),其中,\theta_j = 2\pi x_j /L

给出。------------------------------------------------------------------- [4.20]

注意,当k是负数时,也适用复数基向量的描述,因为的k符号也包含在指数函数的指数中。

这一发展表明,如果我们遵循第 3 章中基函数是采样三角函数时使用的相同推理路线,那么对于由采样复数指数构成的基函数,也会出现类似的情况。这种发展是可能的,因为当矩阵和向量的元素是复数或只是实数时,矩阵代数定律同样适用。 因此,从代数的角度来看,即使很难在几何上可视化这些新的复数值基函数,方程 [4.18] 也是有意义的。

为了确定这种模型的Fourier系数,我们需要前向DFT关系 \mathsf{h} = Q^{-1}\cdot \mathsf{v} 我们之前使用的求逆矩阵的方法是将数据向量 v 依次投影到每个基向量上,形成一个内积。这是可行的,因为基向量是正交的。留作练习来验证基向量集 Q 是否相互正交,并且都具有相同的长度,并且都等于 \sqrt{D} 。 这些观察结果表明重新排序和缩放等式 [4.17] 中的项。得到反DFT公式

\mathsf{v}=\sqrt{D}\begin{bmatrix} \frac{Q_{-1}}{\sqrt{D}} & \frac{Q_{0}}{\sqrt{D}} & \frac{Q_{+1}}{\sqrt{D}}\\ \downarrow& \downarrow & \downarrow \end{bmatrix}\cdot \mathsf{h}----------------------------------------------[4.21]

通过用逆矩阵(通过转置和共轭变换矩阵获得)在两边预乘来求解 f 的等式 [4.21] 得到直接 DFT公式

\mathsf{h}=\frac{1}{\sqrt{D}}\begin{bmatrix} Q_{-1}^{*}/\sqrt{D} & \rightarrow\\ Q_{0}/\sqrt{D} & \rightarrow \\ Q_{+1}^{*}/\sqrt{D} & \rightarrow \end{bmatrix}\cdot \mathsf{v}---------------------------------------------------[4.22]

星号表示向量的复数共轭,它是通过取每个单独分量的共轭而获到的。这最后两个等式程是三角基函数[3.38]和[3.39]的类比。 类比于等式[3.30, 3.31]的复数值Fourier系数的显式公式是

c_k = \frac{1}{D} \mathsf{v} \bullet Q_{k} = \frac{1}{D} \sum_{j=0}^{D-1}\mathsf{Y}_j e^{ik\theta_j} ...\theta_j = 2\pi x_j /L

------------------------------------------------------------------------------------------------------------------------[4.23]

学生此时可能想知道,为什么Fourier分析这个主题已经足够复杂了,因为引入了复数值基函数和复数值Fourier系数而变得更加复杂。主要动机在于 DFT 等式 [4.22] 无论数据向量中的测量值是复数值还是实数值,都同样适用。换句话说,通过允许复数值数据,Fourier分析的范围通过承认那些具有两个属性而不是只有一个属性的物理变量而大大扩展。 例如,力、速度(velocity)、动量(momentum)、电磁波(electromagnetic waves)和无数其他本质上是二维的物理参数(即大小和方向),可以使用与分析本质上是1维的(例如电压、光强度、质量等)“实”函数完全相同的程序来进行分析。由于Fourier分析的整个主题可以像复数值函数一样容易地展开,实数值函数被视为一般结果涵盖的特例,这是大多数教科书作者和计算机程序员所青睐的方法。

4.6 复数值的和三角的Fourier系数之间的关系

考虑到许多作者倾向于使用复数形式的Fourier叶分析,以及初学者希望更接近三角基函数的“现实(reality)”,能够轻松地将这两种方法联系起来就变得很重要。为此,我们首先用三角函数展开基向量 Q。 例如,对于 D = 3 的情况

Q_1 = ( e^0, e^{i(2\pi/3)} , e^{i(4\pi/3)})

= (1,cos(2\pi/3)+ i sin(2\pi/3), cos(2\pi/3)+ i sin(4\pi/3))

= C_1 + i S_1 ------------------------------------------------------------------------------[4.24]

也就是说,新的基向量Q是采样余弦向量C和i乘以采样正弦向量S的和。换句话说,Q的实部等于C,Q的虚部等于S。 实际上,我们已经概括了第 2 章的思想(其中复数被视为相量以探索它们的几何性质),因此复向量被视为实向量和虚向量之和。另请注意,负频率的基向量是

Q_1 = ( e^{-0}, e^{i(-2\pi/3)} , e^{i(-4\pi/3)})

= (1,cos(2\pi/3)- i sin(2\pi/3), cos(2\pi/3)- i sin(4\pi/3))

= C_1 - i S_1

= Q_1^* -----------------------------------------------------------------------------------------------[4.25]

换句话说,正负频率的基向量是互为复数共轭的。

将这些表达式代入等式[4.22]将根据三角系数产生复数Fourier系数的向量

\mathsf{h}=\frac{1}{D}\begin{bmatrix} Q_{-1}^{*} &\rightarrow \\ Q_{0} & \rightarrow \\ Q_{+1}^{*} & \rightarrow \end{bmatrix}\cdot \mathsf{v}= \frac{1}{D}\begin{bmatrix} C_{1}+iS_1 &\rightarrow \\ C_{0} & \rightarrow \\ C_{1}-iS_1& \rightarrow \end{bmatrix}\cdot \mathsf{v}

=\frac{1}{D}\begin{bmatrix} C_{1} &\rightarrow \\ C_{0} & \rightarrow \\ C_{1} & \rightarrow \end{bmatrix}\cdot \mathsf{v}= \frac{i}{D}\begin{bmatrix} S_1 &\rightarrow \\ C_{0} & \rightarrow \\ -S_1& \rightarrow \end{bmatrix}\cdot \mathsf{v}-------------------------[4.26]

这些矩阵乘法所隐含的各种内积可从等式 [3.21] 和 [3.22]中所知。 因此,利用这些信息,我们拥有

\mathsf{h}=\frac{1}{2}\begin{bmatrix} a_1\\a_0 \\ a_1 \end{bmatrix}\cdot\mathsf{v}+\frac{i}{2}\begin{bmatrix} b_1\\0 \\ -b_1 \end{bmatrix}\cdot\mathsf{v}------------------------------------------------[4.27]

将这个结论推广以包括任何三角Fourier系数,复数系数是

c_{-k} =\frac{a_k+ib_k}{2}

c_0=m

c_{k} =\frac{a_k-ib_k}{2}-----------------------------------------------------------------------------------[4.28]

该结果与等式[4.12]中Fourier系数的原始定义相匹配。这是对前面的开发是否正确的有用验证。注意,c_k 和  c_{-k} 互为复数共轭。这意味着实数值离散函数的频谱具有一种特别对称性——Hermite对称或共轭对称,按下列关系定义

\mathsf{Re}[c_k] = \mathsf{Re}[c_{-k}] (偶对称)

\mathsf{Im}[c_k] = \mathsf{Im}[c_{-k}] (奇对称) ---------------------------------------------------------[4.29]

已知复系数,则三角系数是

m = \frac{a_0}{2} = c_0 

a_k = c_k + c_{-k}

b_k = i(c_k - c_{-k})

-----------------------------------------------------------------------------------------------------------------------[4.30]

这与等式[4.12]中定义的原始定义一致。

    上面以笛卡尔形式描述了三角函数和复数Fourier系数,但它们也可以用极坐标形式(即幅度、相位)表示。根据等式 [4.28] 复系数的大小是

|c_0| = m = \frac{a_0}{2}

|c_k| = |c_{-k}| = \frac{\sqrt{a_k^2+b_k^2}}{2} 

 =>c_k^2 = c_{-k}^2 = \frac{a_k^2+b_k^2}{4} 

=>c_k^2 + c_{-k}^2 = \frac{a_k^2+b_k^2}{4} ------------------------------------------------------------------[4.31]

请注意,两个模型中的常数项相同,但是将此结果与等式[4.8]进行比较,我们看到其他复数系数的大小恰好是三角系数极坐标大小的一半。即,

|c_0| = m = \frac{a_0}{2}

|c_k| = |c_{-k}| = \frac{m_k}{2} ----------------------------------------------------------------------------[4.32]

考察这个结论的一种方法是,当余弦函数用一对复指数表示时,它的振幅被分成两半。幅度的一半出现在频谱的正频率部分,另一半出现在频谱的负频率部分。至于相位,两种Fourier系数的相位角由下式给出

\Phi_k = \mathsf{tan}^{-1}(\frac{b_k}{a_k}) --------------------------------------------------------------------------------[4.33]

图 4.6 以笛卡尔(矩形)形式和极坐标形式显示了比较三角和复数Fourier频谱的假设(hypothetical)示例。注意左下方面板中的Hermite对称性。右下面板也存在类似的对称性,因为频谱的幅度部分具有偶对称性,而相位谱具有奇对称性。

 -------------------------------------------------图4.6 频率谱对比----------------------------------------------------

4.7  2维或多维离散Fourier变换

将等式[4.14]中给出的一维Fourier级数推广到在 L×L 平方上采样的2维函数世界得到

g(x,y) = \sum_{k=-N}^{N}\sum_{j=-M}^{M}c_{j,k} e^{i2\pi(jx+ky)/L} ------------------[4.34]

请注意,括号内的表达式是一维Fourier级数,其系数 c_{j,k} 是通过在数据矩阵的行上计算的一系列一维 DFT 得到的。结果是Fourier系数的二维矩阵,现在成为要对列进行一系列 DFT 计算的“数据”。因此,二维 DFT归结为一系列两个一维 DFT,其中第一个是为原始计算的数据,第二个根据第一个的结果计算。这种方法可以很容易地推广到 3 维体积数据等等到 N 维空间。

4.8  DFT的Matlab实现

根据Matlab文档,FFX(𝗑)返回向量 𝗑 的离散Fourier变换。对于长度为D的输入向量 𝗑 ,DFT 是一个长度为N的向量f , 其元素为

f (k)= \sum_{k=1}^D\{x(n)exp[-i2\pi(k-1)(n-1)/D)]\} ,1 <= k <= D -----------------[4.35]

(译注:exp记法以Euler数e为底的指数表达式,扩号中的部分为指数部分。)

请注意,此公式中使用 (n - 1) 意味着 MATLAB 假设采样时间从 0 开始,间隔长度为 2pi(译注:2π)。这意味着用户负责跟踪与实际采样时间相关的相移和物理频率。(我们将在第 6 章处理相移(phase shifts))。家庭作业练习中使用的另一种方法是使用真实采样时间来计算采样基函数。还要注意等式[4.35]的定义。不包括使变换矩阵正交所需的归一化常数 1/D。此外,根据文档,Fourier级数中DFT与Fourier系数a和b之间的关系

x(n) = a_0 + \frac{1}{L} \sum_{k=1}^{D/2}[a(k)cos(2\pi kt(n))+b(k)sin(2 kt(n))]

----------------------------------------------------------------------------------------------------------[4.36]

a_0 = 2* f (1)/D

a_k = 2* reak[f (k+1)]/ D

b_k = 2* imag[f (k+1)]/ D------------------------------------------[4.37]

其中,𝗑 是一个长度为 D 的向量,其包含连续函数在时刻t以跨度Δt = L/D间隔采样的离散值。等式 [4.36] 和我们的 [3.34] 之间的差异表明定义Fourier级数的不同约定。 我们选择在变换矩阵中包含样本点数 D 以获得正交矩阵,因此因子 D 包含在我们的Fourier系数中。然而,Matlab 将D 从变换矩阵中排除,因此该因子必须明确包含在等式[4.36]的Fourier级数中。这些差异对使用 Parseval 定理的方差统计(bookkeeping)有影响。

另请注意,FFT 返回的Fourier系数的排序对应于谐波数 0 到 D - 1,而不是 - D /2 到 D /2。 这里有两个问题需要解决。首先,似乎 Matlab 使用的谐波数都是正的,而不是一半正一半负。事实上,采样基函数的周期性导致大于 D/2 的正谐波数(逆时针旋转)等于负谐波数(顺时针旋转)。 图 4.7 以图形方式显示了这一事实。 其次,Matlab 首先报告频率轴正半部分的傅里叶系数,然后是负半部分。 为了颠倒这个顺序,Matlab 提供了一个函数 FFTSHIFT(FFT(x))来交换Fourier向量的两半。 这将零频率放在Fourier矢量的中间,便于绘制频谱。但是,在使用Matlab函数IFFT执行逆 DFT 之前,使用 IFFTSHIFT 将Fourier向量返回到标准格式非常重要。

 ------------------------------------------------图4.7 复数基函数---------------------------------------------------

4.9  重新审视Parseval定理

Parseval 定理在第 3 章中被表述为

|\mathsf{v}|^2 = \sum_{k=1}^{D}\mathsf{Y}_k^{2} = \frac{D}{2}[\frac{a_0^{2}}{2} + \sum_{k=1}^{N}(a_k^2+b_k^2) = \frac{D}{2}|f|^2------------[3.45]

用等式中给出的复值Fourier系数替换 [3.45] 中的三角系数。 [4.30] 结果是

\frac{|f|^2}{2} = \frac{1}{D}\sum_{k=1}^{D}\mathsf{Y}_k^{2} = \frac{1}{2}\sum_{k=0}^{N}\{(c_k+c_{-k})^{2}+ [i(c_k+c_{-k})]^{2}\}

= \frac{1}{2}\sum_{k=0}^{N}[c_k^2+2c_kc_{-k}+c_{-k}^2-(c_k^2-2c_kc_{-k}+c_{-k}^2)]]

= \frac{1}{2}\sum_{k=0}^{N}4c_k c_{-k} = 2\sum_{k=0}^{N}|c_k |^2

= \sum_{k=-N}^{N}|c_k|^2

= |h|^2 -----------------------------------------------------------------------------------------[4.38]

在Matlab中,这个结果写为v*v’/D = h*h’ ,其中,v是数据向量,h是对复指数基函数取得的Fourier系数向量。

内容来源:

<< Fourier Analysis for Beginners>> Larry N. Thibos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/549577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+Redis实现浏览量+1

当用户点击新闻查看详情后&#xff0c;数据库新闻的浏览量字段要加一&#xff0c;当在高并发场景下&#xff0c;很多人查看新闻详情直接操作数据库使浏览量字段加一对数据库压力过大&#xff0c;并且容易造成脏数据&#xff0c;这里结合redis实现浏览量加一。 业务逻辑&#x…

chatgpt赋能Python-pythonfoo

Pythonfoo: 优秀的Python库提高开发效率 Python是一门被广泛应用的动态编程语言&#xff0c;提供了各种各样的库来帮助开发人员完成不同类型的任务。在这些Python库中&#xff0c;Pythonfoo是一款旨在提高开发效率和代码简洁性的出色的Python库。 什么是Pythonfoo&#xff1f…

一种用于超低功耗无线传感器网络的消息传递算法(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 无线传感器网络是由一定数量的无线传感器节点组成的网络系统,各节点可采集环境数据并通过无线通信进行数据传输,目前已广泛应用…

使用cubeMX生成USB HID设备

一&#xff0c;简介 本文主要介绍如何使用stm32F407开发板和cubeMX生成USB FS HID设备&#xff0c;供参考。 二&#xff0c;操作步骤 本次总共分以下几个步骤&#xff1a; 1&#xff0c;创建cubeMX工程&#xff0c;并配置HID&#xff0c;生成工程代码&#xff1b; 2&#xf…

光伏防逆流系统的介绍

安科瑞虞佳豪 5月17日&#xff0c;新疆和田地区洛浦县国家电投洛浦光伏电站&#xff0c;今年2月刚刚并网发电的200兆瓦光伏发电项目坐落于戈壁滩上&#xff0c;占地5500亩的368004块光伏面板在阳光照射下熠熠生辉&#xff0c;为和田地区经济社会发展持续提供着绿色能源。 洛浦…

HNU-操作系统OS-实验Lab6

OS_Lab6_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 实验目的 理解操作系统的调度管理机制熟悉 ucore 的系统调度器框架,以及缺省的Round-Robin 调度算法基于调度器框架实现一个(Stride Scheduling)调度算法来替换缺省的调度算…

第12章_MySQL数据类型精讲

第12章_MySQL数据类型精讲 1. MySQL中的数据类型 类型类型举例整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT浮点类型FLOAT、DOUBLE定点数类型DECIMAL位类型BIT日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP文本字符串类型CHAR、VARCHAR、TINYTEXT、TE…

chatgpt赋能Python-pythondeque函数

Python deque函数&#xff1a;高效地操作双向队列 介绍 在Python中&#xff0c;deque函数是一个非常重要的内置函数&#xff0c;用于创建双向队列。双向队列是一个序列容器&#xff0c;可以从两端添加或删除元素&#xff0c;这使得它成为许多常见问题的解决方案。deque函数是…

Vue--》深入理解 Vue 3 导航守卫,掌握前端路由的灵魂技能!

目录 vue3导航守卫讲解与使用 element-ui的安装与使用 配置路由和设置路径别名 设置登录页面并实现规则跳转 设置导航前置守卫 设置导航后置守卫 其他路由相关操作 vue3导航守卫讲解与使用 导航守卫是在 Vue Router 中提供的一种功能&#xff0c;它允许你在切换路由之前…

chatgpt赋能Python-pythonfirst

PythonFirst&#xff1a;Python编程新手的最佳起点 作为一门简洁而又强大的编程语言&#xff0c;Python在过去的几年中得到了越来越多的关注和应用。它广泛应用于数据分析、人工智能、Web开发、自动化等领域&#xff0c;成为了许多程序员的首选语言。如果你也是刚刚开始接触Py…

有哪些简单而知道的人少的excel操作技巧?

以下是 Excel 里鲜为人知而又简单、逆天的操作技巧&#xff1a; 1. 快速选中数据区域&#xff1a;双击数据区域左上角的方格即可快速选中整个数据区域。 2. 使用自动筛选快速查找和筛选数据&#xff1a;在 Excel 数据表中&#xff0c;使用自动筛选可以快速找到和筛选特定数据…

【Robot Dynamics Lecture Notes学习笔记之浮动基动力学】

Robot Dynamics Lecture Notes学习笔记之浮动基动力学 Contact ForcesSoft Contact Model Contact Forces from Constraints Constraint Consistent DynamicsContact Switches and Impact CollisionsImpulse TransferEnergy Loss 浮动基座系统的广义坐标分别由驱动关节坐标 q j…

小程序-基础加强(二):使用npm包

使用npm包 1.小程序对npm的支持与限制 目前&#xff0c;小程序中已经支持使用npm安装第三方包&#xff0c;从而来提高小程序的开发效率。但是&#xff0c;在小程序中使用npm包有如下3个限制&#xff1a; ①不支持依赖于Node.js内置库的包 ②不支持依赖于浏览器内置对象的包 …

Springboot +spring security,登录表单进阶配置及原理分析

一.简介 登录表单配置实操 二.创建项目 如何创建一个SpringSecurity项目&#xff0c;前面文章已经有说明了&#xff0c;这里就不重复写了。 三.配置默认用户信息 配置文件添加如下用户信息&#xff0c;代码如下&#xff1a; spring:security:user:name: lglbcpassword: 1…

HNU数据结构与算法分析-作业7-算法设计技术

1. (简答题, 10分)请简述分治法所能解决的问题一般具有哪些特征&#xff1f; 2. (简答题, 10分)请简述动态规划法的四个求解步骤。 3. (简答题, 10分)请比较动态规划法和贪心法&#xff0c;并写出两者的区别。 4. (简答题, 10分)请写出分支限界法和回溯法的区别。 二. 算法设计…

chatgpt赋能Python-pythonendswith

Python endswith方法&#xff1a;介绍、用法和示例 在编程中&#xff0c;经常需要查找字符串是否以特定字符结尾。Python提供了一个方便易用的方法——endswith()。 什么是Python endswith()方法&#xff1f; Python endswith()方法是用于检查字符串是否以特定子字符串结尾的…

第六章总结-莫凡商城的注册、登录功能

1.微信小程序表单组件 1.1button按钮组件 type的属性值有三种 primary 绿色default 白色warn 红色 除了这种方式可以设置按钮大小&#xff0c;还有其他的通过视图来控制按钮的方式&#xff0c;因为我们知道&#xff0c;微信小程序的按钮并不都是这三种颜色。其他方式比如把按…

Web APIs之DOM

一.Web API基本认知 二.获取DOM对象 三.操作元素内容 四. 操作元素属性 五.定时器-间歇函数 一、Web API基本认知 *作用和分类 *什么是DOM *DOM树 *DOM对象 1.作用和分类 &#xff08;1&#xff09;作用&#xff1a;使用JS去操作html和浏览器 &#xff08;2&#xff09…

service mesh学习

背景 单体服务的痛点导致单体服务被拆分为多个微服 每个微服必须要解决负载均衡、服务发现、熔断等功能 为了让上层开发更加快速和无需关注通用能力&#xff0c;在网络栈和应用业务层之间抽出一个透明网络代理层。 Service Mesh 轻量级网络代理&#xff0c;负责微服之间的通…

H5 实现蜂巢(六边形)导航,支持用户交互和动态添加,纯css实现无需布局计算

最近公司的项目出了版新的UI设计图&#xff0c;所以准备进行样式改版 而其中就有个导航要改成蜂巢(六边形)导航&#xff0c;当我看到时其实也挺迷糊的。 说一下我一开始的想法哈&#xff1a; 我一开始是打算使用背景颜色线性渐变 或者 用4个子元素覆盖4角 来实现 六边形的视觉…