python實(shí)現(xiàn)周期方波信號(hào)頻譜圖
在學(xué)習(xí)傅里葉變換的時(shí)候遇到了求周期方波信號(hào)頻譜圖的例子,在書上和網(wǎng)上查閱了一些資料,發(fā)現(xiàn)大都是討論的都是下圖左邊的周期信號(hào)的頻譜,課程老師的PPT中也只列出了另一種周期信號(hào)頻譜圖的結(jié)論,沒有在進(jìn)行傅里葉變換,自己便根據(jù)定義推導(dǎo)了一遍,貼在這里作記錄和分享之用。
關(guān)于傅立葉級(jí)數(shù)展開的另一討論在我的另一篇文章http://www.dbjr.com.cn/article/144194.htm
2016年11月21號(hào)更新
在第二個(gè)周期方波信號(hào)的傅里葉變換里,注意是
轉(zhuǎn)換為sin函數(shù)下為
之前寫錯(cuò)了,今天更正。
對(duì)于這兩種方波信號(hào),我們也可以編程驗(yàn)證一下,就是用正弦函數(shù)去逼近方波信號(hào),Python的實(shí)現(xiàn)代碼如下:
# 分析傅里葉級(jí)數(shù)分解之后cos和sin的和項(xiàng)的圖像輸出 from numpy import mgrid,sin,cos,array,pi from matplotlib.pyplot import plot,show,title,legend,xlabel,ylabel x = mgrid[0:10:0.02] # 這里類似于MATLAB用冒號(hào)產(chǎn)生步長為0.02的序列,但是語法和MATLAB不同 # 下面的這段循環(huán)實(shí)現(xiàn)y=sin(x)+sin(3x)+...+sin(19x) def cos_square(): y1 = 0; for i in range(0,20,1): b = (-1)**(i)*cos((2*i+1)*x)/(2*i+1) y1=b+y1 # 這種求和的方法是從C語言移植過來的 plot(x,y1,'orange',linewidth=0.6) title('cos_square') xlabel('Time') ylabel('Amplitude') show() def sin_square(): y2 = 0 for i in range(0,20,1): b = sin((2*i+1)*x)/(2*i+1) y2=b+y2 # 這種求和的方法是從C語言移植過來的 plot(x,y2,'g',linewidth=0.6) title('sin_square') xlabel('Time') ylabel('Amplitude') show() cos_square() sin_square()
輸出結(jié)果如下:
由結(jié)果可以看兩種不同的方波級(jí)數(shù)展開是正確的
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python內(nèi)置庫之webbrowser模塊用法詳解
webbrowser模塊是Python自帶的標(biāo)準(zhǔn)庫,無需安裝,可以直接在Python中使用該模塊來打開網(wǎng)頁、PDF文件等,本文給大家詳細(xì)介紹了Python webbrowser模塊用法,需要的朋友可以參考下2023-08-08Python動(dòng)態(tài)屬性與反射機(jī)制方式
深入探索Python中的反射機(jī)制和動(dòng)態(tài)屬性的細(xì)節(jié),對(duì)我們來說是編寫具有適應(yīng)性和高可擴(kuò)展性程序的關(guān)鍵,本篇文章旨在通過詳盡的概念介紹和精心設(shè)計(jì)的代碼示例,加強(qiáng)您對(duì)這些核心概念的把握,并助您在實(shí)踐中運(yùn)用自如2024-06-06python?實(shí)時(shí)獲取kafka消費(fèi)隊(duì)列信息示例詳解
這篇文章主要介紹了python實(shí)時(shí)獲取kafka消費(fèi)隊(duì)列信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07