Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制...
謝謝董老師,董老師是個(gè)好老師。
心情久久不能平靜,主要是高頻這門課的分析方法實(shí)在是讓我難以理解,公式也背只是,還是放放吧。
近期厭惡了Matlab臃腫的體積和頻繁的讀寫對(duì)我的Mac的損害,所以學(xué)習(xí)了一下Python這一輕量級(jí)的腳本。發(fā)現(xiàn)“Python自誕生那天就跟科學(xué)計(jì)算分不開”這個(gè)事實(shí)。
無(wú)聊,寫寫心得。
配置環(huán)境什么的還是弄了幾個(gè)晚上的。
在Mac下用PyCharm還是非常好滴。裝上NumPy,SciPy等等一眾免費(fèi)的,非常不錯(cuò)的Python包。就能夠灰了。
1.Hilbert變換及其在單邊帶(SSB)包絡(luò)檢波的應(yīng)用
定義神馬的,性質(zhì)神馬的自己百度去。我也懶得寫公式了。大家將就著看。
先定義個(gè)東西,H(t)為Hilbert變換后的時(shí)域信號(hào),f(t)為原始時(shí)域信號(hào)。那么其包絡(luò)為:
Envelop = sqrt(H^2(t)+f^2(t))。
好了,寫代碼什么的都簡(jiǎn)單了。
import numpy as npimport pylab as plimport scipy.signal as signalfrom scipy import fftpackt = np.arange(0, 0.3, 1/20000.0)x = np.sin(2*np.pi*1000*t) * (np.sin(2*np.pi*20*t) + np.sin(2*np.pi*8*t) + 3.0)hx = fftpack.hilbert(x)pl.subplot(221)pl.plot(x, label=u"Carrier")pl.plot(np.sqrt(x**2 + hx**2), "r", linewidth=2, label=u"Envelop")pl.title(u"Hilbert Transform")pl.legend()然后是它的結(jié)果。看,是不是逼格高高的不可一世。~~
2.FIR_LPF設(shè)計(jì)
用Python這樣的動(dòng)態(tài)語(yǔ)言寫幾百個(gè)參數(shù)的有限沖激響應(yīng)數(shù)字低通濾波器(Finite Impulse Response-Low Pass Digital Filter)。實(shí)在是太難為人家了。還是用內(nèi)置的函數(shù)或者內(nèi)嵌C吧。看那一長(zhǎng)串,我還想再打一遍,有限沖激響應(yīng)數(shù)字低通濾波器,逼格高高的!
!
以下是代碼。FIR濾波器在這里我預(yù)計(jì)參數(shù)不下100,所以內(nèi)嵌吧,否則慢死。
。
import numpy as npimport pylab as plimport scipy.signal as signalfrom scipy import fftpackdef h_ideal(n, fc):return 2*fc*np.sinc(2*fc*np.arange(-n, n, 1.0))b = h_ideal(30, 0.25)b2 = signal.firwin(len(b), 0.6)w, h = signal.freqz(b)w2, h2 = signal.freqz(b2)#pl.figure(figsize=(8,6))pl.subplot(222)pl.plot(w/2/np.pi, 20*np.log10(np.abs(h)), label=u"h_ideal")pl.plot(w2/2/np.pi, 20*np.log10(np.abs(h2)), label=u"firwin")pl.xlabel(u"Normalized Frequency Rad/Sample")pl.ylabel(u"Magnitude (dB)")pl.title(u"FIR Low Pass Filter")pl.legend()pl.subplot(224)pl.plot(b, label=u"h_ideal")pl.plot(b2, label=u"firwin")pl.legend()pl.show()看這逼格高高的,都不說(shuō)了。。
3.以下是董老師指導(dǎo)我的,盡管非常easy。
。
FM調(diào)制
董老師說(shuō)mf的參數(shù)調(diào)小了,我看果然是。課本不可信。給的參數(shù)都mv毫伏級(jí),坑爹。
碼代碼這樣的小事就簡(jiǎn)單多了
import numpy as np import pylab as pl import scipy as sp from scipy import integrate from scipy import fftpacksample_rate = 10000t = np.arange(0, 1.0, 1.0 / sample_rate) # generate time samplingomega_base = 40 omega_carrier = 800mf = 1 v0 = 5 v_omega = 10base = np.cos(omega_base * t)pm = v0 * np.cos(omega_carrier * t + v_omega * base) pl.plot(base) pl.plot(pm) pl.show()綠的是最后的信號(hào)。藍(lán)的是原始信號(hào)。
好了,說(shuō)完了第一部分,第二部分寫啥還沒有想好,到時(shí)再說(shuō),嗯。
今天好娘快。晚上繼續(xù)學(xué)高頻。
董老師是個(gè)好人。好人一生平安。。。
。。
。
近期我這樣的傻事怎么。。
。!
!
版權(quán)聲明:本文博主原創(chuàng)文章。博客,未經(jīng)同意不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java设计模式6:策略模式
- 下一篇: 信息安全系统设计基础第十一周 2013