訊號處理之功率譜原理與python實現

2022-07-30 12:06:10 字數 2067 閱讀 4997

目錄功率譜圖又叫功率譜密度圖

功率譜是功率譜密度函式的簡稱,它定義為單位頻帶內的訊號功率。它表示了訊號功率隨著頻率的變化情況,即訊號功率在頻域的分布狀況。

功率譜表示了訊號功率隨著頻率的變化關係。常用於功率訊號(區別於能量訊號)的表述與分析,其曲線(即功率譜曲線)一般橫座標為頻率,縱座標為功率。由於功率沒有負值,所以功率譜曲線上的縱座標也沒有負數值,功率譜曲線所覆蓋的面積在數值上等於訊號的總功率(能量)。

知乎使用者crisyang對功率譜、能量譜、幅值譜之間的關係進行了詳細的說明:

在頻譜分析中幅度和功率是由緊密聯絡的兩個不同的物理量:能量能表述為幅值的平方和,也能表述為功率在時間上的積分;功率譜密度,是指用密度的概念表示訊號功率在各頻率點的分布情況,是對隨機變數均方值的量度,是單位頻率的平均功率量綱;也就是說,對功率譜在頻域上積分就可以得到訊號的平均功率,而不是能量。能量譜密度是單位頻率的幅值平方和量綱,能量譜密度曲線下面的面積才是這個訊號的總能量。於是,功率譜、能量譜、幅值譜之間的緊密關係主要表述為:能量譜是功率譜密度函式在相位上的卷積,也是幅值譜密度函式的平方在頻率上的積分;功率譜是訊號自相關函式的傅利葉變換,能量譜是訊號本身傅利葉變換幅度的平方。

from scipy.fftpack import fft, fftshift, ifft

from scipy.fftpack import fftfreq

import numpy as np

import matplotlib.pyplot as plt

import warnings

warnings.filterwarnings("ignore")

fs = 1000

#取樣點數

num_fft = 1024;

"""生成原始訊號序列

在原始訊號中加上雜訊

np.random.randn(t.size)

"""t = np.arange(0, 1, 1/fs)

f0 = 100

f1 = 200

x = 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_fft

ax=plt.subplot(513)

ax.set_title('direct method')

plt.plot(20*np.log10(ps[:num_fft//2]))

"""相關功譜率 power spectrum using correlate

間接法"""

關於能量譜 功率譜和時域訊號

能量譜與功率譜分別是針對能量有限的訊號和功率有效的訊號。在進行訊號的譜分析的時候一定更要看準這是乙個能量訊號還是乙個功率訊號,應用不同的譜進行分析會使問題的解決思路更加明確。cn 1t t1 t t1f t e jn t dt f j limt ta n 2 lim 0 a n f j f t e ...

訊號的能量譜和功率譜解析

訊號可以分成能量訊號與功率訊號,非週期能量訊號具有能量譜密度,是傅利葉變換的平方,功率訊號具有功率譜密度,其與自相關函式是一對傅利葉變換對,等於傅利葉變換的平方 區間長度。不能混淆。能量訊號是沒有功率譜的。胡廣書老師的書上找到這麼一段話,隨機訊號在時間上是無限的,在樣本上也是無窮多,因此隨機訊號的能...

為什麼用功率譜密度來描述隨機訊號?

我們知道訊號可以分成能量訊號和功率訊號,能量訊號指能量有限,平均功率為0的訊號,具體表現就是時間軸上有限的訊號。功率訊號指的是平均功率有限而能量無窮大的訊號,具體表現是時間軸上無窮的訊號。重點提一下週期訊號,週期訊號也是功率訊號,時間上延續無窮,它的平均功率等於時間上負無窮到正無窮能量的積分除以無窮...