一、信號的調制
在通信系統中,信源輸出的是由原始信息變換成的電信號,這種信號通常具有較寬的頻譜,並且在頻譜的低端分布較大的能量,稱為基帶信號。但是多數信道是低頻端受限的,無法長距離傳輸低頻信號。因此在傳輸過程中需要將基帶信號所蘊含的信息轉載到高頻載波上,這一過程叫做信號的調制。而在接收端將接收到的信號進行解調,以獲取傳遞的信息。
二、調制定理
我們知道一個余弦函數的傅里葉變換為
那么一個信號\(m(t)\)與之相乘,其結果的傅式變換為\(\pi [M(w+w_0)+M(w-w_0)]\),它所表示的物理含義就是是信號\(m(t)\)的幅度譜\(M(\omega)\)分別向高頻和低頻搬移\(\omega_0\)。
我們將信號\(m(t)\)看作信源所產生的最高頻率為\(\omega_m\)低頻寬帶信號,要使其能夠在信道上傳輸,就可以乘以一個頻率高到足以匹配信道的余弦信號(即高頻載波),使其所包含的頻譜信息都搬移至\([\omega_0-\omega_m,\omega_0+\omega_m]\)的位置,這就是調制定理。
調制的過程實質是完成信息的轉載。
三、希爾伯特變換
在信號處理領域中,一個實信號的希爾伯特變換(Hilbert transform)是將其通過一個沖激響應為\(h(t)=\frac{1}{\pi t}\)的系統所得到的輸出信號。該系統的頻率響應為\(H(j\omega)=-sgn(\omega)\)。這種變換所表示的物理含義為信號正頻域的部分相移\(-\frac{\pi}{2}\),信號負頻域的部分相移\(\frac{\pi}{2}\)。
歐拉公式\(e^{j\omega_0t}=cos(\omega_0t)+jsin(\omega_0t)\)中我們可以將\(cos(\omega_0t)\)與\(sin(\omega_0t)\)看作一對希爾伯特變換,而任一實信號\(x(t)\)均可表示為一系列\(e^{j\omega_0t}\)的線性組合,那么\(x(t)\)與其希爾伯特變換也可以通過這種方式擴展成一個復信號,方便信號的處理。
四、常規調幅(AM)
常規調幅(Conventional Amplitude Modulation)的過程是將基帶信號m(t)的電平抬高A0再乘以高頻載波c(t)實現頻譜的搬移。
<img src="E:\學!\通信原
其數學表達式為
1. 理論分析
基帶調制信號m(t)在常規調幅的過程中要保證加入抬高電平\(A_0\)之后信號的任意一個時刻的幅度要大於零,即\(|A_0|>=|m(t)|_{max}\)。這里引入一個參數 調幅深度β,即\(β_{AM}=\frac{|m(t)|_{max}}{A_0}\)。為了保證不出現”過調幅”的現象,調幅深度應滿足β=<1(一般取小於0.8的值)。
下面以單音信號為例進行分析。
設調制信號\(m(t)=A_mcos(\omega_mt)\),抬高電平為\(A_0\),載波為\(c(t)=cos(\omega_0t)\)。則已調信號為
其頻域表達式為
即\(A_0+m(t)的頻譜被搬移到\omega_0處\),那么\(S_{AM}(\omega)\)的圖像應該是
2. AM仿真
針對這一過程我們在MATLAB中進行仿真驗證,結果如下:
這與我們的理論推導結果相符合。
仔細觀察我們可以看到仿真后頻域的圖像中所出現的並非是沖激信號,中間會留有空隙。
這是因為在計算機信號都是數字的形式,我們無法直接對模擬信號進行處理,只能對模擬信號進行采樣、量化、編碼,將其近似為數字信號,而在這一過程中發生的頻譜泄漏現象即為圖中“沖激信號”的留白部分,我們可以通過增加采樣點數來抑制這一現象。
3. 包絡檢波
在整個通信系統中我們不能只考慮信源發出的信號信道能否傳輸,還要考慮信宿如何去從已調信號中獲取我們傳遞的信息。
常規調幅的過程其實就是將調制信號所包含的信息通過載波轉載后存放在已調信號的幅度中,在MATLAB仿真中我們繪制出了已調信號時域波形的包絡,可以發現其包絡就是我們的調制信號。而信宿要接收的信號是從這一已調信號通過解調器解析出來。這里解調器的工作就是獲取這一包絡。
已調信號的有上下兩個包絡,它們是一樣的(只是幅度正負不同),我們只要其一即可,這里我們可以通過半波整流來達到這一效果。隨后通過一個低通濾波器,將已調信號的高頻分量(來自載波)被濾去,就會只剩下低頻的基帶信號。包絡檢波可以用一種非常簡單的電路來實現。
4. “過調幅”現象
前面我們提到AM的調幅深度不能小於1,這是因為獲取的已調信號的包絡是上下對稱的,當\(β_{AM}>1\)時,我們並不能保證信號在任意時刻的幅度都大於零,在調制之后中是沒問題的,但是在包絡檢波的第一步半波整流之后就出錯了。在這一步我們發現信號的包絡線與調制信號並不相符,所展示出的部分是上下兩個包絡線大於零的部分即二者之間發生了相互干擾。
加入抬高電平\(A_0\)並使調幅深度小於1就是為了讓二者不發生干擾以保證后續能夠解調出原信號波形。
5. 希爾伯特變換與解析包絡
雖然我們在前面闡述了包絡檢波的一種簡單思路,它可以通過一些簡單的模擬器件實現,但是我們難以通過一些數學表達式來分析檢波的這一過程。這里我們可以用希爾伯特變換進行分析。
對於我們的基帶信號\(m(t)\),它經過常規調幅之后所得到的輸出信號為\(s_{AM}(t)=(A_0+m(t))·cos(\omega_0t)\)。這里我們將\((A_0+m(t))\)看作一個整體\(x(t)\),將\(s_{AM}(t)\)與其希爾伯特變換構建成一個復信號,即
那么這個復信號的幅值就是\(x(t)\)的包絡,在MATLAB中可以用abs()函數取其幅值。
需要注意的是在MATLAB中希爾伯特變換的函數Hilbert()所得到的是該實信號與其希式變換構造出的復信號而不只是一個變換。
用這種方式解析出的信號如下。
可以看出我們的基帶信號已被成功解調,但是端點處有失真(另一端也有,這里坐標軸限定了長度,后半部分未顯示)。
從我們的理論推導來看,這種方式應該是無失真解調,但是這里卻出現了失真,這一問題我們稱之為端點效應。
由於數字實現過程涉及與原始信號構造相位差為Π/2的共軛信號,而共軛信號通過“Fourier變換-雙邊譜對折為單邊譜-Fourier逆變換”求取,對周期信號進行非完整周期采樣時,Fourier變換將引起Gibbs現象,發生頻率泄露。而對單邊譜進行Fourier變換的逆變換時,這種頻率泄露造成的誤差無法抵消,導致信號兩端產生“飛逸”,使求取的Hilbert譜無法准確反映原始信號的本質特性。
--引自《希爾伯特-黃變換端點效應抑制算法綜述》
7. MATLAB代碼
Am = 1; %調制信號幅度
fm = 5; %調制信號頻率
beta = 0.5; %調幅深度
f0 = 50;%載波頻率
A0 = Am/beta;%抬高電平
%{ 常規調幅 %}
%{
fs = 500; %大於二倍最高頻率
T = 1;
dt = 0.0001;
N = T/dt; %采樣點數
t = [0:N-1] * dt; %采樣點的時間序列
dt與fs應該成倒數關系,直接設定容易錯
%}
fs = 500; %采樣頻率
T = 1;
N = 8192; %采樣點數 N是fs整數倍的時候不會出現端點效應 ???
n = 0:N-1; %采樣點的時間序列
t = n/fs;
m = Am*cos(2*pi*fm*t);%調制信號
c = cos(2*pi*f0*t);%載波
s = (A0+m).*c;
figure(1);
subplot(4,1,1)
plot(t,m)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
%line畫線函數[a,b],[c,d]是從(a,c)畫到(b,d)
title('調制信號m(t)')
subplot(4,1,2)
plot(t,c)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
title('高頻載波c(t)')
subplot(4,1,3)
plot(t,s)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
hold on
plot(t,A0+m,'r--') %繪制包絡線
hold on
plot(t,-(A0+m),'r--') %繪制包絡線
title('AM已調信號s(t)')
%{
包絡檢波(非相干解調)
半波整流->低通濾波->隔斷直流
%}
s_banbo = s;
s_banbo(s_banbo<0)=0; %將小於零的部分置零
subplot(4,1,4)
plot(t,s_banbo)
axis([0 1 -4 4])
line([0,1],[0,0],'color','r');
hold on
plot(t,A0+m,'r--') %繪制包絡線
title('半波整流后')
figure(2)
subplot(4,1,1)
n=(-N/2):1:(N/2 -1);
f = (n-1).*fs/N;
plot(f,fftshift(abs((2/N)*fft(A0+m))))
axis([-110 110 0 4])
title('A0+m(t)幅度譜')
subplot(4,1,2)
plot(f,fftshift(abs((2/N)*fft(c))))
axis([-110 110 0 2])
title('載波信號幅度譜')
subplot(4,1,3)
plot(f,fftshift(abs((2/N)*fft(s))))
axis([-110 110 0 4])
title('已調信號幅度譜')
subplot(4,1,4)
plot(f,fftshift(abs((2/N)*fft(s_banbo))))
axis([-110 110 0 2])
title('半波整流后信號幅度譜')
figure(3)
s_m =abs(hilbert(s));
% matlab的hilbert得到的是構建出的復信號而不是其希爾伯特
plot(t,s_m-mean(s_m)); %均值(直流)
axis([0 1 -4 4])
title('解調出的信號為')