当前位置: 首页 > news >正文

【信号处理】为什么功率谱不是幅度谱的平方

为什么功率谱不是幅度谱的平方


幅度谱:magnitude=2N⋅∣FFT∣magnitude = \frac{2}{N} \cdot |FFT|magnitude=N2FFT
功率谱:power_spectrum=2N2⋅∣FFT∣2power\_spectrum = \frac{2}{N^2} \cdot |FFT|^2power_spectrum=N22FFT2

如果你直接用幅度谱平方,会得到4N2⋅∣FFT∣2\frac{4}{N^2} \cdot |FFT|^2N24FFT2,正好是功率谱的 2 倍。
所以,功率谱确实不是幅度谱的简单平方,根源在于“振幅”和“物理功率”之间的关系,以及单边谱的折叠方式。

下面我用最直白的方式把原因拆开。

  1. 一个正弦波的“振幅”和“平均功率”
    假设有一个电压正弦波:
    x(t)=Acos⁡(2πf0t)x(t) = A \cos(2\pi f_0 t)x(t)=Acos(2πf0t)
    它的振幅是AAA(峰值电压)。

在 1 Ω 电阻上,它的瞬时功率是x2(t)x^2(t)x2(t),平均功率是:
Pavg=1T∫0TA2cos⁡2(2πf0t) dt=A22P_{\text{avg}} = \frac{1}{T} \int_{0}^{T} A^{2} \cos^{2}(2\pi f_{0} t) \, dt = \frac{A^2}{2}Pavg=T10TA2cos2(2πf0t)dt=2A2
结论:正弦波的平均功率 = 振幅² ÷ 2。

  1. FFT 得到的双边谱是什么样的
    对这个正弦波做 FFT(离散傅里叶变换),会在正频率
    +f0+f_0+f0和负频率−f0-f_0f0各出现一个峰。
    两个峰的幅度(忽略相位)都是A/2A/2A/2的量级(乘以点数 N 等比例,这里先不纠结 N)。

可以理解为:

总信号被“拆成”两半,一半能量在正频率,一半在负频率。

所以正频率分量的振幅是A/2A/2A/2,负频率也是A/2A/2A/2

  1. 单边幅度谱为什么要“乘 2”
    实际频谱图通常只显示正频率(单边谱)。
    为了让它直接显示出原始正弦波的振幅AAA,我们会把负频率的分量“合并”到正频率上,也就是将正频率的幅度乘以 2:

单边幅度 =2×A2=A2 \times \frac{A}{2} = A2×2A=A
所以我的代码里:magnitude = (2/N) * |FFT|
得到的峰值就是振幅 1.0 和 0.5,符合直觉。

  1. 单边功率谱为什么要“乘 2”但最后又只有一半
    功率是振幅的平方,所以当我们把负频率的功率合并到正频率时,功率也要加倍(因为负频率的功率和正频率相等)。
    于是正频率的原始功率(基于双边谱)是(A/2)2=A2/4(A/2)^2 = A^2/4(A/2)2=A2/4,加倍后变成2×A2/4=A2/22 \times A^2/4 = A^2/22×A2/4=A2/2

看到了吗?单边功率谱的正频率峰值是A2/2A^2/2A2/2,恰好等于正弦波的平均功率,而不是A2A^2A2

如果用公式表达:

单边功率谱
2×(∣X(f)∣N)2=2N2∣FFT∣22 \times \left( \frac{|X(f)|}{N} \right)^2 = \frac{2}{N^2} |\text{FFT}|^22×(NX(f))2=N22FFT2

如果直接用刚才的单边幅度谱AAA平方,会得到A2A^2A2,这相当于将平均功率乘了 2,物理上不正确。

  1. 直观对比
对象物理意义正频率峰值数值(A=1)
单边幅度谱振幅AAA1
单边幅度谱振幅AAA1
单边幅度谱的平方(无直接物理意义)A2A^2A21
单边功率谱平均功率A2/2A^2 / 2A2/20.5

所以关系是:

功率谱=2×= 2 \times=2×幅度谱2^22

这就是差一个因子 2 的原因。

  1. 代码印证
    你可以在自己代码里加一行,直接验证:
# 直接用幅度谱平方,再除以 $2$ power_from_magnitude = magnitude**2 / 2 # 画出对比 plt.plot(positive_freqs, power_spectrum, label='直接计算的功率谱') plt.plot(positive_freqs, power_from_magnitude, '--', label='幅度谱$^2$/2') plt.legend()

两条线会完全重合。

一句话总结:

幅度谱描述每个频率的“振荡幅度”(峰值);

功率谱描述每个频率贡献的“平均功率”;

对于正弦波,平均功率=A2/2= A^2 / 2=A2/2,而不是A2A^2A2,所以功率谱天然比幅度谱的平方少一半。单边谱折叠时这个1/21/21/2因子被保留了下来。

http://www.gsyq.cn/news/1605250.html

相关文章:

  • 每天5分钟玩转 Kubernetes
  • 深入解析PCM178x系列DAC:Delta-Sigma架构原理与音频硬件设计实战
  • 牛客周赛 Round 150
  • Java计算机毕设之基于 SpringBoot+Vue 的社区老龄关爱服务管理系统 公益助老项目发布与预约服务平台设计实现(完整前后端代码+说明文档+LW,调试定制等)
  • 【精通】RustMark v2.4:CI/CD 与发布工程 — Cargo Workspace 与 DevOps 深度实战
  • Java毕设项目:便民助老资源统筹服务平台基于前后端分离实现 数字化爱老助老公益服务管理平台设计与开发 (源码+文档,讲解、调试运行,定制等)
  • ABB工业机器人编程基础(十一)流程控制:FOR、WHILE 与示教器交互指令
  • 总结 6.29
  • RAG检索准不准怎么量化:recall@k和MRR实操
  • 基于本地大语言模型的AI助手中间件:ai-berkshire部署与集成指南
  • Vue 组件通信的多种实现思路
  • 银行网点实时语音识别解决方案客服沟通合规质检 业务沟通全量留痕
  • GLM-5.2 编程实战全解:744B MoE、1M 无损上下文、Code Arena 全球第一,国产开源长程 Coding 模型怎么用
  • Ubuntu CentOS 安装配置SSH完整教程
  • ISP Pipeline中径向递减锐化方案实现(四)
  • 2026年Vue3项目架构从零到一:目录、分层、代码,每一行都给你说明白
  • 一、linux系统安装与环境准备
  • YgoMaster终极PvP对战指南:如何轻松实现局域网联机与好友对战
  • 【Excel】使用“数据透视表”统计所有项的工作量
  • 我觉得目前脚本速度已经足够快了-----再快就不像人了
  • 【限时解密】ChatGPT API费用优化白皮书(含23个真实客户账单审计案例+自动识别高成本prompt的CLI工具)——OpenAI Partner认证专家独家释放
  • 华为MetaERP 财务 ERP 解决方案架构师(EBS+SAP+MetaERP 复合背景)全国需求现状 + 城市潜力分级一、全国整体市场需求(2026 年现状)1. 需求整体判断:结构性紧缺,复
  • dotnet 10 run file 支持多文件
  • JavaScript--错误处理
  • AI Agent开发实战:从零构建一个能自主规划任务的智能体
  • AI 学习助手:基于 HarmonyOS ArkTS 的智能学习伴侣开发实践
  • 使用visual studio和ai制作ppt
  • 关于多线程归并排序的性能瓶颈与优化方案的技术7
  • HFSS求解设置实战解析:从驱动求解到本征模求解的核心配置
  • GoChatIAI -Go语言AI应用服务平台(1)