文章目錄
前言
《通訊原理》這門課程的第一次研討中,老師提供了一個關於SSB調製的研討方向。本文彙總了咱們小組準備的資料,分紅SSB的理論實現部分和基於MATLAB的仿真部分兩部分,帶領你們詳細探討SSB調製過程,但願你們有所收穫。(若是各位看官發現問題,還請不吝指出,謝謝~)html
1、SSB調製的起源
1. 信號的幅度調製:
《通訊原理》(第2版)的定義:用消息信號去控制載波的瞬時幅度,使載波的幅度隨調製信號而變化。
聽着很抽象是否是?如下是通俗易懂版本:
無線通訊的發射端須要把信號加在一個功率很大的載波信號上,纔可以確保在很遠的地方接收到信號,這個過程能夠參考射頻傳輸加以瞭解。
網絡
2. AM和DSB-SC:
常規調幅(AM):
時域表達式:
優勢:接收端的製造成本低(只須要使用包絡檢波電路就能夠實現);
在須要大量接收機的時候有優點;
缺點:調製效率不高(發送的過程當中發送了大量純載波,也就是「1」);
抑制載波雙邊帶調製(DSB-SC):
時域表達式:
優勢:沒有了載波「1」,傳輸效率能夠達到100%;
缺點:提升了接收端的成本(須要使用鎖相環進行相干解調);
dom
3. SSB調製:
改進:DSB-SC使用的雙邊帶調製,在頻帶資源很緊張的狀況下,傳輸雙邊帶顯然會形成資源浪費,由於根據傅里葉變換的性質,實函數(真實傳輸的信號)的正負頻率部分是共軛對稱的。函數
實現方式一:濾波法
用濾波法產生SSB信號的原理框圖以下:
性能
由上圖可知,邊帶濾波器有兩種,其中,Husb(w)用於剔除下邊帶,Hlsb(w)用於剔除上邊帶。spa
實現方式二:相移法(MATLAB仿真)
用相移法產生SSB信號的原理框圖以下:
.net
2、MATLAB仿真
1.Hilbert變換的仿真:
理論基礎部分:3d
-
解析信號 = 原(實)信號 + j * 通過Hilbert變換以後的原信號,即:z(t) = x(t) + j * hilbert(x(t));code
-
MATLAB中的hilbert()函數獲得的是覆信號,緣由爲:hilbert()的做用是將原信號中正頻率的部分相移 -π/2,負頻率部分相移π/2,所以須要經過實部和虛部一塊兒表示信號(能夠瀏覽附錄一的圖片加以理解);orm
關鍵代碼展現:
%% %時域分析 ts = 0.0025; fs = 1/ts; N = 200; f = 50; k = 0:N-1; t = k*ts; % 結論:sin信號通過Hilbert變換後變爲cos信號 y = sin (2* pi *f*t); yh = hilbert(y); % matlab函數獲得信號是合成的覆信號 yi = imag (yh); % 虛部爲相移以後的原信號 %% %頻域分析 y_length=length(y); yi_length=length(yi); NFFT_y = 2^nextpow2(y_length); NFFT_yi = 2^nextpow2(yi_length); F_Y_domain = (fs/2)*linspace(0,1,NFFT_y/2); F_YI_domain = (fs/2)*linspace(0,1,NFFT_yi/2); Y = fft(y,NFFT_y)/y_length; YI = fft(yi,NFFT_yi)/yi_length; Amp_Y = 2*abs(Y(1:NFFT_y/2)); Amp_YI = 2*abs(YI(1:NFFT_yi/2)); ANG_Y = angle(Y(1:NFFT_y/2)); ANG_YI = angle(YI(1:NFFT_yi/2));
仿真結果展現:
2.「sin(t)」+"cos(t)"的仿真:(以正弦信號爲例驗證Hilbert變換)
理論基礎部分:
- 正弦函數的FT變換以下:
咱們不妨作如下嘗試來驗證Hilbert變換:
a. 對通過hilbert變換以後的正弦信號翻轉π/2(即*j),而後看這個處理以後的信號在實軸的投影,若是這個信號的投影爲0,而且它的相位譜和原信號的相位譜相同,則說明Hilbert變換確實改變了信號的相位;
b. 看原信號和通過上述特殊處理的信號相加獲得的疊加信號的頻譜,若是在正頻率上的幅度譜是直接相加獲得的,則說明Hilbert變換確實沒有改變信號的幅度譜。
關鍵代碼展現:
%% %信號翻轉 y = sin (2* pi *f*t); yh = hilbert(y); % matlab函數獲得信號是合成的覆信號 yi = j * imag (yh); % *j 作翻轉 %% %信號疊加 y_yi = y + yi; y_yi_length=length(y_yi); NFFT_y_yi = 2^nextpow2(y_yi_length); F_Y_YI_domain = (fs/2)*linspace(0,1,NFFT_y_yi/2); Y_YI = fft(y_yi,NFFT_y_yi)/y_yi_length; Amp_Y_YI = 2*abs(Y_YI(1:NFFT_y_yi/2)); ANG_Y_YI = angle(Y_YI(1:NFFT_y_yi/2));
仿真結果展現:
3.SSB的仿真:(以理想的「u(t)-u(t-1) 」信號做爲原信號)
理論基礎部分:
- 本仿真過程當中採用的是剔除下邊帶SSB調幅法,即:
- 因爲MATLAB中的Hilbert()變換階數有限,因此對一個理想的窗函數進行Hilbert變換以後,得不到理想的衝擊函數,而是有必定的高度;
- 因爲Hilbert變換在頻率爲零的附近沒有定義,爲了保證幅度譜的連續性,MATLAB會強制在零頻率幅值,因此一個理想的窗函數通過Hilbert變換以後,在頻域上得不到理想的sinc函數;
- 載波的頻率爲5000hz,因此原信號和通過了Hilbert變換以後的信號相加獲得的疊加信號的幅度譜,在5000hz的右邊(上邊帶)爲兩個信號的幅度譜直接相加,在5000hz的左邊(下邊帶)爲兩個信號的幅度譜直接相減;
- 因爲MATLAB都是使用DFT進行信號的處理,因此仿真出來的結果不會出現理想的狀況。
關鍵代碼展現:
變量表示的意思: y:cos載波信號; y_h:sin載波信號; m:原信號; m_h:通過Hilbert變換以後的原信號; y_m:原信號加載在cos載波信號; y_h_m_h:通過Hilbert變換以後的原信號加載在sin載波信號; y_m_y_h_m_h:y_m + y_h_m_h %% %定義相移法中用到的載波 ts = 0.000025; fs = 1/ts; N_zai = 200; f_zai = 5000; k = 0:N_zai; t_zai = k*ts; %獲得cos載波信號 y = cos (2* pi *f_zai*t_zai); yh = hilbert(y); %獲得sin載波信號 y_h = imag (yh); %% %原函數:使用理想的u(t)-u(t-1) (時域) f_yuan = 50; t = -2:1/f_yuan:2; ut1 = stepfun(t,0); ut2 = stepfun(t,1); m = ut1 - ut2; mh = hilbert(m); m_h = imag (mh); %原函數:使用理想的u(t)-u(t-1) (頻域) m_length=length(m); NFFT_m = 2^nextpow2(m_length); F_M_domain = (fs/2)*linspace(0,1,NFFT_m/2); M = fft(m,NFFT_m)/m_length; Amp_M = 2*abs(M(1:NFFT_m/2)); M_H = fft(m_h,NFFT_m)/m_length; Amp_M_H = 2*abs(M_H(1:NFFT_m/2)); %% %SSB的相移過程:(默認Ac=1) y_m = m.*y; y_h_m_h = (j*m_h).*(j*y_h); y_m_y_h_m_h = y_m + y_h_m_h; y_m_length=length(y_m); y_h_m_h_length=length(y_h_m_h); y_m_y_h_m_h_length=length(y_m_y_h_m_h); NFFT_y_m = 2^nextpow2(y_m_length); NFFT_y_h_m_h = 2^nextpow2(y_h_m_h_length); NFFT_y_m_y_h_m_h = 2^nextpow2(y_m_y_h_m_h_length); F_Y_M_domain = (fs/2)*linspace(0,1,NFFT_y_m/2); F_Y_H_M_H_domain = (fs/2)*linspace(0,1,NFFT_y_h_m_h/2); F_Y_M_Y_H_M_H_domain = (fs/2)*linspace(0,1,NFFT_y_m_y_h_m_h/2); Y_M = fft(y_m,NFFT_y_m)/y_m_length; Y_H_M_H = fft(y_h_m_h,NFFT_y_h_m_h)/y_h_m_h_length; Y_M_Y_H_M_H = fft(y_m_y_h_m_h,NFFT_y_m_y_h_m_h)/y_m_y_h_m_h_length; Amp_Y_M = 2*abs(Y_M(1:NFFT_y_m/2)); Amp_Y_H_M_H = 2*abs(Y_H_M_H(1:NFFT_y_h_m_h/2)); Amp_Y_M_Y_H_M_H= 2*abs(Y_M_Y_H_M_H(1:NFFT_y_m_y_h_m_h/2)); ANG_Y_M = angle(Y_M(1:NFFT_y_m/2))*180/pi; ANG_Y_H_M_H = angle(Y_H_M_H(1:NFFT_y_h_m_h/2))*180/pi; ANG_Y_M_Y_H_M_H = angle(Y_M_Y_H_M_H(1:NFFT_y_m_y_h_m_h/2))*180/pi;
仿真結果展現:
總結
原信號通過Hilbert變換器獲得與原信號相位不一樣、幅值相同的新信號,而後經過一個簡單的加法器就能夠進行疊加,最後實現SSB調製。這種調製方式既可以解決AM調製效率不高的問題,又可以解決DSB-SC浪費頻帶的問題,是如今實現幅度調製比較好而且能夠調製性能比較高的調幅方式。
最後,特別感謝通訊原理第一小組的全部組員們(因爲網絡隱私問題,這裏就不寫你們的名字了)。可以獲得最後仿真的成果,是由於你們一塊兒準備的材料,尤爲是你們彙總的PPT,能夠說,這篇文章,只是把你們彙總的PPT進行了書面的表達。因此,再次感謝你們~
引用(感謝如下做者)
文章名字 | 文章做者 |
---|---|
通訊原理第一小組(研討題:31) | 通訊原理第一小組全體組員 |
經常使用傅里葉變換對 | 楊老師 |
【 MATLAB 】sinc 函數簡介 | 李銳博恩 |
深刻淺出傅里葉變換(目前看到的講得最好的一篇文章) | 聰聰那年_ |
希爾伯特變換(Hilbert Transform)簡介及其物理意義 | 江戶川柯壯 |
附錄:四次Hilbert變換