日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

基于Python的频谱分析(一)

發(fā)布時間:2023/12/29 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 基于Python的频谱分析(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、傅里葉變換
  傅里葉變換是信號領域溝通時域和頻域的橋梁,在頻域里可以更方便的進行一些分析。傅里葉主要針對的是平穩(wěn)信號的頻率特性分析,簡單說就是具有一定周期性的信號,因為傅里葉變換采取的是有限取樣的方式,所以對于取樣長度和取樣對象有著一定的要求。

2、基于Python的頻譜分析
  將時域信號通過FFT轉換為頻域信號之后,將其各個頻率分量的幅值繪制成圖,可以很直觀地觀察信號的頻譜。
   具體分析見代碼注釋。

import numpy as np#導入一個數(shù)據(jù)處理模塊
import pylab as pl#導入一個繪圖模塊,matplotlib下的模塊

sampling_rate = 8000#采樣頻率為8000Hz
fft_size = 512 #FFT處理的取樣長度
t = np.arange(0, 1.0, 1.0/sampling_rate)#np.arange(起點,終點,間隔)產生1s長的取樣時間
x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t)#兩個正弦波疊加,156.25HZ和234.375HZ
# N點FFT進行精確頻譜分析的要求是N個取樣點包含整數(shù)個取樣對象的波形。因此N點FFT能夠完美計算頻譜對取樣對象的要求是n*Fs/N(n*采樣頻率/FFT長度),
# 因此對8KHZ和512點而言,完美采樣對象的周期最小要求是8000/512=15.625HZ,所以156.25的n為10,234.375的n為15。
xs = x[:fft_size]# 從波形數(shù)據(jù)中取樣fft_size個點進行運算
xf = np.fft.rfft(xs)/fft_size# 利用np.fft.rfft()進行FFT計算,rfft()是為了更方便對實數(shù)信號進行變換,由公式可知/fft_size為了正確顯示波形能量
# rfft函數(shù)的返回值是N/2+1個復數(shù),分別表示從0(Hz)到sampling_rate/2(Hz)的分。
#于是可以通過下面的np.linspace計算出返回值中每個下標對應的真正的頻率:
freqs = np.linspace(0, sampling_rate/2, fft_size/2+1)
# np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
#在指定的間隔內返回均勻間隔的數(shù)字
xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100))
#最后我們計算每個頻率分量的幅值,并通過 20*np.log10()將其轉換為以db單位的值。為了防止0幅值的成分造成log10無法計算,我們調用np.clip對xf的幅值進行上下限處理

#繪圖顯示結果
pl.figure(figsize=(8,4))
pl.subplot(211)
pl.plot(t[:fft_size], xs)
pl.xlabel(u"Time(S)")
pl.title(u"156.25Hz and 234.375Hz WaveForm And Freq")
pl.subplot(212)
pl.plot(freqs, xfp)
pl.xlabel(u"Freq(Hz)")
pl.subplots_adjust(hspace=0.4)
pl.show()

3、繪圖結果顯示

如果你放大其頻譜中的兩個峰值的部分的話,可以看到其值分別為:

>>>xfp[10]
-6.0205999132796251
>>>xfp[15]
-9.6432746655328714e-16

即156.25Hz的成分為-6dB, 而234.375Hz的成分為0dB,與波形的計算公式中的各個分量的能量(振幅值/2)符合。
---------------------
作者:趙至柔
來源:CSDN
原文:https://blog.csdn.net/qq_39516859/article/details/79794549
版權聲明:本文為博主原創(chuàng)文章,轉載請附上博文鏈接!

總結

以上是生活随笔為你收集整理的基于Python的频谱分析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。