Matlab實現模擬調製與解調
原標題:Matlab實現模擬調製與解調
本文會介紹簡單的模擬調製解調方法,涉及AM、DSB、SSB,但沒有VSB,VSB相關的資料會在後文附上。
簡單的說,幅度調製的作用就是使得載波的幅度承載信息。
設正弦型載波爲:
式中:A爲載波幅度,ω爲載波角頻率,φ爲載波初始相位
幅度已調信號一般可表示爲:
式中:m(t)爲基帶調製信號
設m(t)的頻譜爲M(ω),則s(t)的頻譜爲:
從頻域表達式可以看出,幅度調製信號爲調製信號在頻域上的線性搬移。不過實際上,任何一種調製都是非線性的。
調幅的時域表達式爲:
式中:A0爲外加直流分量,Ac爲載波信號的最大幅值,Ka爲調製度
matlab實現過程如下:
生成調製信號
生成載波信號
生成已調信號
滿調製的效果如下:
通過調節Ka的值,可以控制調製深度
Ka<1時爲欠調製,效果如下:
Ka>1時爲過調製,效果如下:
在幅度調製中,載波分量並不攜帶信息。爲了提高效率,將AM調製的A0去掉,同時也可以減小功率,從而得到雙邊帶調製。
其時域表達式爲:
matlab實現過程如下:
調製信號和載波信號用前面給出的,以下是已調信號:
效果如下:
注意看就會發現,DSB的頻譜上邊帶和下邊帶是一樣的,完全可以去掉其中一個邊帶,這樣可以節省一半的帶寬,這種調製方式就是單邊帶調製。
一想到要去掉一個邊帶,自然就會想到使用濾波的方法。
頻域表達式爲:
matlab實現爲:
濾波器的實現如下:
效果如下:
VSB調製有點複雜,實現的過程我還是不太清楚,只知道大致的作用。
雖然SSB在一般情況下是沒有問題的,但是當調製信號頻率較低(比如模擬電視信號),上邊帶和下邊帶頻率會在載波頻率重合,這種情況下設計一個直接隔離這兩條邊帶的濾波器是基本不可能的(濾波器的歸一化值不能小於0.01,假設目標頻率爲6MHz,那麼過渡帶最少就需要600Hz),從而會導致信號丟失一些信息。
在參考資料中有提供VSB的詳細文檔介紹
解調有兩種方法:相干解調和非相干解調(包絡檢波)
相干解調原理很簡單,就是將搬移後的已調波頻譜再搬移回去。
這就需要一個與發送已調波載波信號同頻同向的本地載波,它與接收的已調信號相乘後,經過低通濾波後就得到原始基帶信號。
已調信號一般時域表達式爲:
與本地載波相乘後得到:
經過一個低通濾波器濾除ω載波分量後,就可以得到原始基帶信號。
matlab實現如下:
濾波器實現如下:
效果如下:
DSB解調方法和AM解調一樣,就不貼代碼了
效果如下:
SSB的解調需要注意的是,由於削去了一半的信號,所以解調出來的信號不再是原始基帶信號的一半幅度,而是四分之一,從時域表達式也可以看得出。
SSB的時域表達式爲:
因此matlab實現需要稍作修改:
效果如下:
複製鏈接到瀏覽器可以下載代碼
https://www.colorado.edu/ECE/ecen4242/linmod2.m
他做了GUI,而且他的濾波器是用模擬濾波器,比我對模擬調製解調友好一些(畢竟是模擬的嘛),我用數字濾波器做完後才反應過來,我是對信號採樣後用數字濾波器處理的。
個人博客
微信公衆號:greedyhao