信号处理之功率谱原理与python实现

更多技术,第一时间送达

功率谱简介

功率谱图又叫功率谱密度图

功率谱是功率谱密度函数的简称,它定义为单位频带内的信号功率。它表示了信号功率随着频率的变化情况,即信号功率在频域的分布状况。

功率谱表示了信号功率随着频率的变化关系。常用于功率信号(区别于能量信号)的表述与分析,其曲线(即功率谱曲线)一般横坐标为频率,纵坐标为功率。由于功率没有负值,所以功率谱曲线上的纵坐标也没有负数值,功率谱曲线所覆盖的面积在数值上等于信号的总功率(能量)。

功率谱、能量谱、幅值谱之间的关系

知乎用户CrisYang对功率谱、能量谱、幅值谱之间的关系进行了详细的说明:

在频谱分析中幅度和功率是由紧密联系的两个不同的物理量:能量能表述为幅值的平方和,也能表述为功率在时间上的积分;功率谱密度,是指用密度的概念表示信号功率在各频率点的分布情况,是对随机变量均方值的量度,是单位频率的平均功率量纲;也就是说,对功率谱在频域上积分就可以得到信号的平均功率,而不是能量。能量谱密度是单位频率的幅值平方和量纲,能量谱密度曲线下面的面积才是这个信号的总能量。于是,功率谱、能量谱、幅值谱之间的紧密关系主要表述为:能量谱是功率谱密度函数在相位上的卷积,也是幅值谱密度函数的平方在频率上的积分;功率谱是信号自相关函数的傅里叶变换,能量谱是信号本身傅立叶变换幅度的平方。

功率谱python实现

from scipy.fftpack import fft, fftshift, ifftfrom scipy.fftpack import fftfreqimport numpy as npimport matplotlib.pyplot as pltimport warningswarnings.filterwarnings("ignore")
fs = 1000#采样点数num_fft = 1024;
"""生成原始信号序列
在原始信号中加上噪声np.random.randn(t.size)"""t = np.arange(0, 1, 1/fs)f0 = 100f1 = 200x = np.cos(2*np.pi*f0*t) + 3*np.cos(2*np.pi*f1*t) + np.random.randn(t.size)
plt.figure(figsize=(15, 12))ax=plt.subplot(511)ax.set_title('original signal')plt.tight_layout()plt.plot(x)
"""FFT(Fast Fourier Transformation)快速傅里叶变换"""Y = fft(x, num_fft)Y = np.abs(Y)
ax=plt.subplot(512)ax.set_title('fft transform')plt.plot(20*np.log10(Y[:num_fft//2]))
"""功率谱 power spectrum直接平方"""ps = Y**2 / num_fftax=plt.subplot(513)ax.set_title('direct method')plt.plot(20*np.log10(ps[:num_fft//2]))
"""相关功谱率 power spectrum using correlate间接法"""cor_x = np.correlate(x, x, 'same')cor_X = fft(cor_x, num_fft)ps_cor = np.abs(cor_X)ps_cor = ps_cor / np.max(ps_cor)ax=plt.subplot(514)ax.set_title('indirect method')plt.plot(20*np.log10(ps_cor[:num_fft//2]))plt.tight_layout()plt.show()
(0)

相关推荐

  • 频域图像增强-锐化

    图像增强技术根据增强处理过程所在的空间不同,可分为基于频域的算法和基于空域的算法两大类.基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法,把图像看成一种二维信号 ...

  • 在 Google Colab 中使用 OpenCV 进行图像处理简介

    重磅干货,第一时间送达 在这篇文章中,我们将实现如何使用 OpenCV 在 google colaboratory 中进行图像处理.为此,我们应该了解一些 Python 基础知识,下面给出的步骤将帮助 ...

  • 你还弄不懂的傅里叶变换,神经网络只用了30多行代码就学会了

    明敏 发自 凹非寺 在我们的生活中,大到天体观测.小到MP3播放器上的频谱,没有傅里叶变换都无法实现. 通俗来讲,离散傅里叶变换(DFT)就是把一串复杂波形中分成不同频率成分. 比如声音,如果用声波记 ...

  • 使用Python进行机器学习:从0到1,构建回归模型(附完整教程)

    摘要 在本文中,我将使用数据科学和Python来解释回归用例的主要步骤,从数据分析到理解模型输出. 我将介绍一些非常有用的Python代码,当你遇到相同的情况时,只需要复制,粘贴,运行,就能轻松使用. ...

  • python实现语音信号处理常用度量方法

    目录 信噪比(SNR) 峰值信噪比(PSNR) 分段信噪比(SegSNR) 信号回声比 (Signal to echo ratio, SER) 回声损失增强 (Echo Return Loss Enh ...

  • 模拟和数字信号的桥梁——奈奎斯特采样定理

    在我们周围有着各种各样的模拟信号,比如,电流,电磁波,温度,声音等等.作为计算机系统来说,它只认识0和1,意味着它只能处理数字信息,但是,它是如何处理我们周围的这些模拟信号的呢?要理解这个问题,我们需 ...

  • 使用傅立叶变换清理时间序列数据噪声

    傅立叶变换是一种从完全不同的角度查看数据的强大方法:从时域到频域. 但是这个强大的运算用它的数学方程看起来很可怕. 将时域波变换为频域的公式如下: 下图很好地说明了傅立叶变换:将一个复杂的波分解成许多 ...

  • 信号处理之频谱原理与python实现

    更多技术干货第一时间送达 EEG信号是大脑神经元电活动的直接反应,包含着丰富的信息,但EEG信号幅值小,其中又混杂有噪声干扰,如何从EEG信号中抽取我们所感兴趣的信号是一个极为重要的问题.自1932年 ...

  • 信号处理之倒频谱原理与python实现

    更多技术,第一时间送达 倒频谱定义  倒频谱可以分析复杂频谱图上的周期结构,分离和提取在密集调频信号中的周期成分,对于具有同族谐频.异族谐频和多成分边频等复杂信号的分析非常有效.倒频谱变换是频域信号的 ...

  • 手把手教你EMD算法原理与Python实现

    更多技术干货第一时间送达 Hello,大家好! Rose小哥今天主要介绍一下EMD算法原理与Python实现. SSVEP信号中含有自发脑电和大量外界干扰信号,属于典型的非线性非平稳信号.传统的滤波方 ...

  • CCA典型关联分析原理与Python案例

    更多技术干货第一时间送达 Hello,大家好! Rose小哥今天分享一下CCA的相关原理以及Python应用,CCA在EEG等脑电数据的特征提取中使用很多,很有必要熟悉其原理. CCA典型相关分析 C ...

  • TCP/IP通信原理,Python网络编程详解!

    TCP/IP通信原理,Python网络编程详解!

  • 什么是网络爬虫?Python爬虫工作原理!

    随着互联网的发展,大家对于爬虫这个词已经不再陌生了.但是什么是爬虫?爬虫的工作原理是什么呢?对于IT小白还是非常疑惑的,今天小编就为大家详细的介绍一下. 什么是网络爬虫? 网络爬虫就是一种从互联网抓取 ...

  • 译|Python幕后(2):CPython编译器原理

    https://m.toutiao.com/is/eHxcK7P/ 这是一篇译文,原文系列地址: https://tenthousandmeters.com/tag/python-behind-the ...

  • Python进阶:探秘描述符的工作原理

    作者:Magic Kaito 来源:水滴与银弹 在 Python 开发中,你可能听说过「描述符」这个概念,由于我们很少直接使用它,所以大部分开发人员并不了解它的原理. 但作为熟练使用 Python,想 ...