0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Python的numpy進行的數(shù)字信號的頻譜分析詳解

dKBf_eetop_1 ? 2017-12-12 14:16 ? 次閱讀

Python 是目前的熱門語言,一直覺得掌握一門編程語言對作為搞技術(shù)的來說還是很有必要的,結(jié)合工作中能用到的一些數(shù)據(jù)處理和分析的內(nèi)容,覺得從數(shù)據(jù)分析入手,爭取能夠掌握Python在數(shù)據(jù)處理領(lǐng)域的一些應(yīng)用。下面是基于Python的numpy進行的數(shù)字信號的頻譜分析介紹

一、傅里葉變換

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

二、基于Python的頻譜分析

# _*_ coding:utf-8 _*_

import numpy as np #導(dǎo)入一個數(shù)據(jù)處理的模塊

import pylab as pl #導(dǎo)入一個繪圖模塊,matplotlib下的模塊

sampling_rate = 8000 ##取樣頻率

fft_size =512 #FFT處理的取樣長度

t = np.arange(0,1.1,1.0/sampling_rate)

#np.arange(起點,終點,間隔)產(chǎn)生1s長的取樣時間

x = np.sin(2*np.pi*156.25*t)+2*np.sin(2*np.pi*234.375*t)

#兩個正弦波疊加,156.25HZ和234.375HZ,因此如上面簡單

#的介紹FFT對于取樣時間有要求,

#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個復(fù)數(shù),分別表示從0(Hz)

#到sampling_rate/2(Hz)的分。

#于是可以通過下面的np.linspace計算出返回值中每個下標(biāo)對應(yīng)的真正的頻率:

freqs = np.linspace(0,sampling_rate/2,fft_size/2+1)

# np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

#在指定的間隔內(nèi)返回均勻間隔的數(shù)字

xfp = 20*np.log10(np.clip(np.abs(xf),1e-20,1e1000))

#最后我們計算每個頻率分量的幅值,并通過 20*np.log10()

#將其轉(zhuǎn)換為以db單位的值。為了防止0幅值的成分造成log10無法計算,

#我們調(diào)用np.clip對xf的幅值進行上下限處理

pl.figure(figsize=(8,4))

pl.subplot(211)

pl.plot(t[:fft_size], xs)

pl.xlabel(u"時間(秒)")

pl.title(u"The Wave and Spectrum 156.25Hz234.375Hz")

pl.subplot(212)

pl.plot(freqs, xfp)

pl.xlabel(u"Hz")

pl.subplots_adjust(hspace=0.4)

pl.show()

#繪圖顯示結(jié)果

現(xiàn)在來看看頻譜泄露,將采樣對象的頻率改變

x = np.sin(2*np.pi*100*t)+2*np.sin(2*np.pi*234.375*t)

我們明顯看出,第一個對象的頻譜分析出現(xiàn)“泄露”,能量分散到其他頻率上,

沒法準(zhǔn)確計算到計算對象的頻譜特性。

窗函數(shù)

上面我們可以看出可以通過加“窗”函數(shù)的方法來處理,盡量保證FFT長度內(nèi)

的取樣對象是對稱的。

import pylab as pl

import scipy.signal as signal

pl.figure(figsize=(8,3))

pl.plot(signal.hann(512))#漢明窗函數(shù)

pl.show()

對上述出現(xiàn)頻譜泄露的函數(shù)進行加窗處理,后面會介紹一下各種加窗函數(shù)的原理和效果。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84068
  • 傅里葉變換
    +關(guān)注

    關(guān)注

    6

    文章

    426

    瀏覽量

    42478

原文標(biāo)題:基于Python的數(shù)字信號處理初步

文章出處:【微信號:eetop-1,微信公眾號:EETOP】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    怎么用頻譜分析法測量數(shù)字信號電平?

    數(shù)字電視、數(shù)字傳輸、數(shù)據(jù)通信中,其信號是采用多種調(diào)制方式的數(shù)字信號,這時的數(shù)字信號電平已不能用一般傳統(tǒng)的方法來定度和測量,用
    發(fā)表于 08-08 07:44

    應(yīng)用FFT對信號進行頻譜分析

    實驗 應(yīng)用FFT對信號進行頻譜分析一、 實驗?zāi)康?、在理論學(xué)習(xí)的基礎(chǔ)上,通過本次實驗,加深對快速傅里葉變換的理解,熟悉FFT算法及其程序的編寫。2、熟悉
    發(fā)表于 05-10 10:00 ?64次下載

    信號頻譜分析和測試

    信號頻譜分析和測試 1.了解周期函數(shù)的傅立葉變換理論及虛擬頻譜分析儀的工作原理;2.熟悉典型信號的波形和頻譜特征,并能夠從
    發(fā)表于 06-22 09:16 ?5971次閱讀
    <b class='flag-5'>信號</b><b class='flag-5'>頻譜分析</b>和測試

    虛擬信號頻譜分析儀的設(shè)計

    虛擬信號頻譜分析儀的設(shè)計 隨著計算機技術(shù)的迅速發(fā)展,利用軟件進行信號處理技術(shù)的應(yīng)用日益廣泛,已開發(fā)的用于虛擬儀器的數(shù)字信號處理和圖
    發(fā)表于 01-21 17:12 ?1544次閱讀
    虛擬<b class='flag-5'>信號</b><b class='flag-5'>頻譜分析</b>儀的設(shè)計

    復(fù)平面內(nèi)信號頻譜分析

    給出了一種在復(fù)平面內(nèi),用圖形分析進行信號頻譜分析的方法,詳細地分析數(shù)字頻率與模擬頻率之間的關(guān)系
    發(fā)表于 02-07 11:58 ?29次下載
    復(fù)平面內(nèi)<b class='flag-5'>信號</b><b class='flag-5'>頻譜分析</b>

    數(shù)字信號處理教程之數(shù)字信號頻譜的詳細資料說明

    數(shù)字信號處理教程之數(shù)字信號頻譜的詳細資料說明包括了:1 頻譜的意義,2 非周期數(shù)字信號頻譜,3
    發(fā)表于 11-13 17:08 ?24次下載

    數(shù)字信號全相位譜分析與濾波技術(shù)的PDF電子書免費下載

    數(shù)字信號全相位譜分析與濾波技術(shù)》是2009年02月電子工業(yè)出版社出版的圖書,作者是王兆華。該書系統(tǒng)地介紹了一種新的信號處理方法——全相位數(shù)字信號處理方法,并且利用這種新方法對
    發(fā)表于 08-06 08:00 ?92次下載
    <b class='flag-5'>數(shù)字信號</b>全相位<b class='flag-5'>譜分析</b>與濾波技術(shù)的PDF電子書免費下載

    詳解頻譜分析儀的基本原理

    本文的目的是為您提供關(guān)于頻譜儀或信號分析儀的基本概述。您或許想要進一步了解與頻譜分析相關(guān)的更多其他話題,您可訪問頻譜分析儀網(wǎng)頁。這里將重點介
    的頭像 發(fā)表于 04-28 10:18 ?4983次閱讀

    頻譜分析儀對信號進行頻譜分析誤差有哪幾方面?

    示波器、跟蹤示波器、分析示波器、諧波分析器、頻率特性分析儀或傅里葉分析儀等?,F(xiàn)代頻譜分析儀能以模擬方式或
    的頭像 發(fā)表于 12-27 10:47 ?2566次閱讀
    <b class='flag-5'>頻譜分析</b>儀對<b class='flag-5'>信號</b><b class='flag-5'>進行頻譜分析</b>誤差有哪幾方面?

    應(yīng)用MATLAB(或Python)對數(shù)據(jù)進行數(shù)字特征估計與頻譜分析

    實驗?zāi)康模簯?yīng)用MATLAB MATLAB(或Python)對數(shù)據(jù)進行數(shù)字特征估計與頻譜分析 實驗內(nèi)容:實驗數(shù)據(jù)一為某氣象站若干年每日氣象數(shù)據(jù),實驗數(shù)據(jù)二為某氣象站每小時氣象數(shù)據(jù)。試
    發(fā)表于 08-02 16:19 ?15次下載

    頻譜分析儀的功能和特點

    頻譜分析儀最核心的功能是對信號進行頻譜分析,即將信號從時域轉(zhuǎn)換到頻域,以顯示信號的頻率組成。通過頻譜分析
    的頭像 發(fā)表于 05-08 16:18 ?904次閱讀

    頻譜分析儀的用途與應(yīng)用詳解

    頻譜分析儀,作為電子測量領(lǐng)域的重要工具,其應(yīng)用廣泛且功能強大。它主要用于分析信號頻譜特性,即信號在頻域上的分布和變化。在現(xiàn)代通信、雷達、電
    的頭像 發(fā)表于 05-14 15:52 ?1027次閱讀

    頻譜分析儀怎么測量數(shù)字信號

    在現(xiàn)代通信、數(shù)據(jù)傳輸和信號處理等領(lǐng)域,數(shù)字信號的應(yīng)用日益廣泛。數(shù)字信號以其高可靠性、抗干擾能力強和易于處理等優(yōu)點,成為現(xiàn)代通信系統(tǒng)的核心。然而,對于數(shù)字信號的測量和
    的頭像 發(fā)表于 05-17 18:10 ?813次閱讀

    頻譜分析儀是否有磁性原理

    儀的工作原理主要包括以下幾個步驟: 輸入信號頻譜分析儀接收待測信號,這些信號可以是模擬信號數(shù)字信號
    的頭像 發(fā)表于 06-03 09:23 ?302次閱讀

    Keysight 頻譜分析儀(信號分析儀)

    Keysight頻譜分析儀(信號分析儀)足夠的性能和卓越的可靠性,幫助您更輕松、更快速地應(yīng)對常見的射頻-微波測試測量挑戰(zhàn)。可靠的頻譜分析儀和信號
    的頭像 發(fā)表于 09-12 08:10 ?110次閱讀
    Keysight <b class='flag-5'>頻譜分析</b>儀(<b class='flag-5'>信號</b><b class='flag-5'>分析</b>儀)