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

本文主要是介绍离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

∑ 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),可以很看到时频域能量相等,公式准确。

这篇关于离散傅里叶变换中的能量守恒公式(帕斯瓦尔定理)及其程序举例验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330418

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

SpringBoot中ResponseEntity的使用方法举例详解

《SpringBoot中ResponseEntity的使用方法举例详解》ResponseEntity是Spring的一个用于表示HTTP响应的全功能对象,它可以包含响应的状态码、头信息及响应体内容,下... 目录一、ResponseEntity概述基本特点:二、ResponseEntity的基本用法1. 创

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

Java 结构化并发Structured Concurrency实践举例

《Java结构化并发StructuredConcurrency实践举例》Java21结构化并发通过作用域和任务句柄统一管理并发生命周期,解决线程泄漏与任务追踪问题,提升代码安全性和可观测性,其核心... 目录一、结构化并发的核心概念与设计目标二、结构化并发的核心组件(一)作用域(Scopes)(二)任务句柄

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python