离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证

离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证

一、 离散傅里叶变换中的能量守恒公式

离散傅里叶变换中的能量守恒公式:

∑ n = 0 N − 1 ∣ x [ n ] ∣ 2 = 1 N ∑ k = 0 N − 1 ∣ X [ k ] ∣ 2 (1) \sum\limits_{n = 0}^{N - 1} {|x[n]{|^2}} = \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {|X[k]{|^2}} \tag1 n=0N1x[n]2=N1k=0N1X[k]2(1)
其中, x [ n ] x[n] x[n]是原始信号的离散时间域表示, X [ k ] {X[k]} X[k]是信号离散傅里叶变换后的频域表示, N N N是信号的长度。

该公式表示了信号在时间域和频率域中的能量之间的关系。

左侧是原始信号的能量,通过计算每个样本值的平方后求和。

右侧是信号的频率域表示的能量,通过计算每个频率分量的平方求和,并除以信号长度。两者之间存在一个归一化因子 1 N \frac{1}{N} N1,用于保持能量守恒。

这个公式的意义在于,它表明信号在时间域和频率域中的能量总量是相等的,即信号的能量在傅里叶变换过程中保持不变。

在该公式中暗含了 n ∈ [ 0 , N − 1 ] , k ∈ [ 0 , N − 1 ] n \in [0,N - 1],k \in [0,N - 1] n[0,N1]k[0,N1].

二、基于短长度信号程序的验证

2.1 问题描述

通过编写matlab程序来简单验证,该能量守恒公式。假设时域信号x=[6,2,5],根据式(1)可得,时间域能量=6×6+2×2+5×5=65。

2.2 通过matlab程序验证

所编写的程序如下:

clc
clear all
close all
% 1.构建一个序列x
x=[6,2,5];
N=length(x);

% 2.计算时间域能量energy_time
energy_time=x*x'

% 3.计算频率域能量energy_frequency
X=fft(x,N);
X_module=abs(X);
energy_frequency=sum(X_module.^2)/N

运行结果:
离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证_第1张图片
图1 运行结果比较
根据运行结果(图1),可以很看到时频域能量相等,公式准确。

三、基于大长度信号程序的验证

3.1 问题描述

通过编写matlab程序来验证较长尺度信号的时频域能量守恒公式。
比如长度为2001采样率为1000的信号:
x = 10 sin ⁡ ( 2 π ⋅ 300 ⋅ t ) x = 10\sin (2\pi \cdot 300 \cdot t) x=10sin(2π300t)
的时频域能量守恒。

3.2 通过matlab程序验证

clc
clear all
close all

% 1.构建一个序列x
fs=1000;
dt=1/fs;
t=0:dt:2;
x=10*sin(2*pi*300*t)  ;

% 2.计算时间域能量energy_time
N=length(x);
energy_time=x*x'

% 3.计算频率域能量energy_frequency
X=fft(x,N);
X_module=abs(X);
energy_frequency=sum(X_module.^2)/N

运行结果

离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证_第2张图片
图2 运行结果比较

根据运行结果(图2),可以很看到时频域能量相等,公式准确。

你可能感兴趣的:(Parseval等式,帕斯瓦尔定理,离散傅里叶变换,DFT)