matlab/simulink中关于如何使得信号FFT和IFFT前后功率保持一致

news2025/2/28 23:58:19

快速傅里叶变换FFT其实是一种对离散傅里叶变换DFT的快速算法
为了便于公式推导和理解,本文从DFT的公式出发进行解释,在帕萨瓦尔定律的条件下,探究如何保证FFT/IFFT前后信号功率保持一致

目录

    • 模型假设
    • FFT前后功率保持一致
    • IFFT前后功率保持一致
    • 总结


模型假设

我们假设有一长度为1024的序列 x ( n ) x(n) x(n),作N=1024点的FFT后得到 X ( K ) X(K) X(K)
X ( k ) = D F T [ x ( n ) ] = ∑ n = 0 N − 1 x ( n ) e − j 2 π N n k ( 0 ≤ k ≤ N − 1 ) X(k) = DFT[x(n)]= \sum_{n=0}^{N-1} x(n) e^{-j\frac{2\pi }{N}nk} (0\leq k\leq N-1) X(k)=DFT[x(n)]=n=0N1x(n)ejN2πnk(0kN1)
x ( n ) = I D F T [ X ( k ) ] = 1 N ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) x(n) = IDFT[X(k)]= \frac{1}{N}\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) x(n)=IDFT[X(k)]=N1k=0N1X(k)ejN2πkn(0nN1)
可以简单记作 x ( n ) ↔ X ( k ) x(n) \leftrightarrow X(k) x(n)X(k)
根据有限长序列帕萨瓦尔定律(具体推导可见该博客)
∑ n = 0 N − 1 ∣ x ( n ) ∣ 2 = 1 N ∑ k = 0 N − 1 ∣ X ( k ) ∣ 2 \sum_{n=0}^{N-1} |x(n)|^2 = \frac{1}{N}\sum_{k=0}^{N-1} |X(k)|^2 n=0N1x(n)2=N1k=0N1X(k)2
可以得知,对于有限长序列,在一个频域带限内,频域上的功率谱之和与时域上信号的功率有一个N倍的关系。

简单来说,FFT之后的信号的功率比原始信号的功率大了N倍。

FFT前后功率保持一致

在这里插入图片描述
仿真结果如上图所示,0.01152/0.00001125=1024,FFT后的信号功率大了1024倍。为了使得FFT前后信号功率保持一致,需要对FFT后的数据乘以系数 1 N \frac{1}{\sqrt{N}} N 1。对一个复数乘以 1 N \frac{1}{\sqrt{N}} N 1的增益,则其功率变为原来的 1 N \frac{1}{N} N1,保证了FFT前后信号功率一致。
在这里插入图片描述

IFFT前后功率保持一致

simulink的IFFT模块中,默认是不勾选“除以N”这个选项的。
也就是说IFFT的公式
x ( n ) = I D F T [ X ( k ) ] = 1 N ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) x(n) = IDFT[X(k)]= \frac{1}{N}\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) x(n)=IDFT[X(k)]=N1k=0N1X(k)ejN2πkn(0nN1)
在simulink中默认是
I D F T [ X ( k ) ] = ∑ k = 0 N − 1 X ( k ) e j 2 π N k n ( 0 ≤ n ≤ N − 1 ) IDFT[X(k)]=\sum_{k=0}^{N-1} X(k) e^{j\frac{2\pi }{N}kn} (0\leq n\leq N-1) IDFT[X(k)]=k=0N1X(k)ejN2πkn(0nN1)

在这里插入图片描述
我们是习惯于不改变模块默认值的,以便模型具有通用性。因此,我们通常在IFFT模块后面添加一个 1 N \frac{1}{N} N1的增益模块
在这里插入图片描述

这样我们就得到了标准的 x ( n ) ↔ X ( k ) x(n) \leftrightarrow X(k) x(n)X(k)
而之前我们说过,对于标准的离散傅里叶变换对,其频域功率是时域功率的N倍。因此我们需要在标准的IFFT之后,对于时域信号再添加一个 N \sqrt{N} N 的增益模块。
1 N \frac{1}{N} N1的增益模块和 N \sqrt{N} N 的增益模块可以合并为 1 N \frac{1}{\sqrt{N}} N 1的增益模块。因此,我们在默认的IFFT模块后面也只需要添加一个 1 N \frac{1}{\sqrt{N}} N 1的增益模块即可使得IFFT前后的信号功率保持一致。
在这里插入图片描述

总结

不论是IFFT还是FFT,都需要在默认的IFFT/FFT模块后面添加一个 1 N \frac{1}{\sqrt{N}} N 1的增益模块,即可使得时域信号和频域信号的功率保持一致。

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

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

相关文章

Bluetooth LE相关学习笔记

The Bluetooth LE Specifications The Bluetooth Core Specification 核心规范适用于 Bluetooth LE和Bluetooth Classic,它定义了蓝牙的体系结构及其层次,描述和定义了蓝牙的关键特性,定义了设备在协议栈的特定层上进行重要操作的方法和通信…

【圣诞限定】2022的末尾,送TA一颗圣诞树吧

2022年圣诞节,很高兴能遇见你。 一、前言 不知不觉又到年末啦,今年遇到了超级超级棒的人,希望能跟他一起做很多很多事,完成很多很多未完成的心愿。既然是圣诞节限定,那就送他一颗圣诞树吧🎄天天开心&#…

开发者百宝箱——DevToys

开发者百宝箱——DevToys 文章目录 简介安装转换类型编码/解码格式化生成器文本处理图片设置参考文献 简介 DevToys 是一个开发人员的工具箱,基于 UWP 开发,免费开源无广告,支持中文,功能有: 转换类型 JSON / YAML…

【C语言进阶】指针的进阶

在初级阶段的《指针》章节已经接触过了,我们知道了指针的概念: 1. 指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 2. 指针的大小是固定的4/8个字节(32位平台/64位平台)。 3. 指针是有类型&#…

Word处理控件Aspose.Words功能演示:使用 C# 将 PowerPoint 演示文稿转换为 Word 文档

Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处…

Android自动化打包记录--Jenkins+Docker+WSL2

Android自动化打包记录--JenkinsDockerWSL2前言自动化流程测试环境生产环境自动化原理Windows下安装Ubuntu安装步骤相关error处理error: 0x8007019eerror: 0x800701bc、0x80370102WSL访问WindowsWSL访问内网Ubuntu下Docker内容安装运行HelloWorld拉取镜像镜像和容器命令创建镜像…

你不一定了解MySQL中的Decimal数据类型

一、前言 在此之前笔者写过一篇博客《你说精通MySQL其实很菜jī(1):你不一定会的基本技巧或知识点(值得一看)》,本文内容是从那篇博客截取出来的。MySQL中Decimal数据类型大家经常使用到,但是&a…

从零了解多线程(万字详解)

目录 为什么要引入多线程? 为什么线程更轻? 线程和进程的关系 多线程的弊端 Thread类 用Thread类创建一个线程并启动它 用一段通过多线程体现并发执行的效果 start和run的区别 使用jdl自带的工具包jconsole查看当前java进程中的所有线程 调用栈 注意: jave中创建线…

Duplicate File Finder Pro - 重复文件查找器,给你的 Mac 清理出大量磁盘空间

Duplicate File Finder Pro - 重复文件查找器,给你的 Mac 清理出大量磁盘空间 重复文件查找器 Duplicate File Finder Pro 是一个实用程序,只需3次点击就能在Mac上找到重复的文件。拖放功能和尽可能多的文件夹,你想,然后按下扫描按…

理解Linux中的进程状态

文章目录运行状态阻塞状态挂起状态磁盘睡眠状态暂停状态追踪停止状态僵尸状态死亡状态孤儿状态Linux内核进程状态源代码一台电脑一般只有一个CPU、一个磁盘(无论一台电脑有几个CPU、磁盘,数量都是远少于进程的,这里举例用一个)。运…

2022年广西食品安全管理员模拟试题及答案

百分百题库提供食品安全管理员考试试题、食品安全管理员考试预测题、食品安全管理员考试真题、食品安全管理员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 一、单选题 1.(重点)《上海市集体用餐配…

深度对比MemcacheD 和 Redis,论你不知道的二三事

谈到深度对比MemcacheD 和 Redis,作为老牌程序员首先想到的就是Memcache好一点,毕竟更节省内存。还可以存图片视频之类的,大部分市面上的cache都是MemcacheD。 但是评价一款cache并不能只看这一方面不是~ 数据存储的安全系数 要知道&#…

2023春招面试题:Redis数据库面试题整理

redis是什么?(必会) Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能非关系型(NoSQL)的(key-value)键值对数据库。可以用作数据库、缓存、消息中间件等。 redis…

STM32F103学习

目录 1、框架了解 2.GPIO (1)开漏输出与推挽输出 (2)基本知识了解 HAL库函数: 配置流程: (3)按键实验:STM32的按键开发基础_哔哩哔哩_bilibili 3、时钟 时钟框图…

力扣(leetcode)经典题目分享第3期——栈和队列

栈和队列一. 选择题1.1 进出栈顺序1.2 循环队列1.3 队列的基本运算1.4 循环队列的有效长度二. OJ练习题2.1 括号匹配问题2.2 用队列实现栈2.3 用栈实现队列2.4 循环队列总结:一. 选择题 1.1 进出栈顺序 若进栈序列为 1,2,3,4 ,进栈过程中可以出栈&…

unreal编译源码搭建dedicated server的流水账——但是细

参考视频: B站的视频: https://www.bilibili.com/video/BV1wk4y1m7wz/?spm_id_from333.337.search-card.all.click&vd_sourced33b44674c517c8b7928e8d3ac316b37 YouTube的视频: https://www.youtube.com/watch?vAKiGajA7AXM 和上面的视…

基于STM32CUBEMX驱动多个VL6180X

概述 VL6180X是基于ST FlightSense™专利技术的最新产品。这是一个突破性的技术,实现了独立于目标反射率的绝对距离测量。现有技术通过测量反射光的光量来估算距离,这种方法的最大缺点是被测物体的颜色和表面对测量精度影响很大,而VL6180X则…

云端办公后,协同软件也能轻松做好项目管理

最近很多朋友在后台问我,数字化移动办公环境下如何做好项目管理,但是问题不够聚焦,所以我决定从自己的理解出发,分享一下项目管理的一些心得。需要说明的是,传统项目管理和互联网项目管理存在很大的差异,尤…

MyBatis源码(二)如何执行sql

前言 接着environmentElement获取数据源信息后,同级执行代码的mappersElement。 Mybatis源码(三)如何操作数据库 MyBatis源码(二)如何执行sql Mybatis源码(一)获取数据源 结构小结 分析ma…

Leetcode 2. 两数相加(高精度加法模板)

Leetcode 2. 两数相加 题目 思路 链表从头开始存放数据的个位十位 百位新建一个链表C,将链表A和B每一个相加的结果存放在C中,注意加法的进位 代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode n…