尚影,陳曙光
(1.阜陽幼兒師范??茖W校 小學教育學院,安徽 阜陽 236000;2.阜陽師范大學 電學院,安徽 阜陽 236000)
抽樣定理在我們的生活中有著廣泛的應用,你看不見它但它卻是處處存在。我們打的電話通過聲波產生模擬信號,再通過抽樣把模擬信號轉成數(shù)字信號,通過線路或無線電的傳輸在接收端把數(shù)字信號恢復成模擬信號,這里面就有著對信號抽樣與恢復的處理。連續(xù)時間的模擬信號的抽樣,雖然在理論上不是必須按照等時間間隔抽樣進行的,但是實際上多是如此。模擬信號抽樣后成為抽樣信號,它在時間上是離散的,在取值上卻是連續(xù)地形成離散模擬信號,其在經(jīng)過量化形成數(shù)字信號后編碼調制變成二進制碼元在通信系統(tǒng)中進行傳輸[1]。當今是信息高速發(fā)展的時代,信息無處不在,它伴隨在人們生活的方方面面,人們需要了解接收它并加以傳遞。而在傳輸信息的過程中,例如我們看電視、聽收音機、上網(wǎng)等等,都要用到抽樣定理智能化算法。
MATLAB是一個集成的系統(tǒng),集成的有科學計算、圖像和聲音的處理等功能,它有友好的用戶界面與使用幫助功能[2]。
作圖功能是MATLAB的主要功能,要對抽樣定理智能化算法實現(xiàn)仿真就要有一個原始的模擬信號,對模擬信號進行抽樣形成抽樣信號以及對抽樣信號恢復成原始的信號,這一過程中的信號都可在MATLAB中很容易地制作出來。我們在仿真中,對抽樣定理智能化算法進行實現(xiàn)就可以用MATLAB軟件,它可以很容易使實驗的進行很少受實驗室硬件的影響,達到比較理想的結論,并且能減少實驗過程中的人力與財力的浪費,縮短實驗的時間與計算量[3]。
抽樣定理智能化算法的定義:對一個頻帶限制在(0,fh)內的時間連續(xù)信號f(t),如果以小于等于1/(2fh)的時間間隔對它進行抽樣,那么根據(jù)這些抽樣值就能無失真的恢復原信號。設連續(xù)信號的最高頻率為Fmax,若抽樣頻率Fs≥2Fmax,則抽樣信號能做到無失真的恢復出原始的連續(xù)信號;否則Fs<2Fmax會使抽樣信號中的頻譜出現(xiàn)混疊現(xiàn)象,致使抽樣信號不能恢復原連續(xù)信號而產生失真[4]。
抽樣過程原理圖如下[6]:
在理想抽樣的情形下對一個連續(xù)信號fa(t)進行抽樣,其抽樣信號就是這個信號和周期性脈沖信號的乘積,即:
(1)
(2)
(3)
將上面的(2)式代入(1)式,并進行傅里葉變換,得出下式:
式中的fa(nT)就是抽樣后的序列f(n),即:f(n)=fa(nT),而f(n)的傅里葉變換為
(5)
(6)
從中可看出兩者之間只在頻率上差一個常數(shù)因子T。為了便于觀察分析各種序列的頻域特性,通常對F(ejω)在[0,2π]上選擇M點抽樣進行觀察分析。對長度為N的有限長序列f(n),有
(7)
通常M取值應大一些,以便能觀察到譜的細節(jié)變化。取模|F(ejωk)|就可以制作出幅頻特性曲線[7]。
設信號f(t)被抽樣后形成的抽樣信號為fs(t),信號的重構是指由抽樣信號fs(t)利用時域卷積關系求得輸出信號,即恢復出原連續(xù)信號f(t)。又稱為信號恢復。
信號恢復的時域表達式為:
f(t)=h(t)*fs(t)
(8)
將h(t)及fs(t)代入式(8)得:
(9)
式(9)表明連續(xù)信號f(t)可以展開成Sa函數(shù)的無窮級數(shù),級數(shù)的系數(shù)等于抽樣值f(nTs)。也可以說在抽樣信號fs(t)的每個抽樣值上畫一個峰值為f(nTs)的Sa函數(shù)的波形,由此合成的信號就是f(t)。式(9)即為用f(nTs)求解f(t)的表達式,利用時域卷積關系得出,是完成由抽樣信號恢復原來信號的MATLAB基本關系式[8]。
內插公式(9)表明模擬信號f(t)等于各抽樣點函數(shù)f(nTs)乘以相對應內插函數(shù)的總和,所以只要抽樣頻率大于兩倍模擬信號最高頻率,則它的抽樣信號便可以完全用來代表整個連續(xù)模擬信號,而不會丟失模擬信號的信息,這就是抽樣定理智能化算法的意義[9]。
利用MATLAB來對模擬信號進行仿真實現(xiàn),它是通過MATLAB語言的編程在MATLAB界面上作出連續(xù)信號的圖像和其對應的頻譜,然后利用MATLAB對模擬信號進行抽樣操作,得到抽樣后的信號圖像和其對應的頻譜,再利用抽樣信號恢復原信號并與原模擬信號對比得出結論。
其抽樣頻率選擇分三種情況進行:①模擬信號最高頻率的2倍大于抽樣頻率時的結果;②模擬信號最高頻率的2倍與抽樣頻率相等時的結果;③模擬信號最高頻率的2倍小于抽樣頻率時的結果。然后觀察比較其分別對應的頻譜得出結論。
設連續(xù)信號為:
f(x)=sin(2π*60*t)+cos(2π*25*t)+cos(2π*30*t);
可知Fmax=60Hz
利用MATLAB作出連續(xù)信號f(x)的波形和其對應的頻譜,然后作出抽樣后的信號和抽樣信號的頻譜。
MATLAB編程代碼如下:
%首先輸入的變量是原連續(xù)信號函數(shù)Fy用字符串格式輸入
%第二個輸入的變量是抽樣頻率
TP=0.1;Fs0=10000;
T=[-TP:1/Fs0:TP];
K1=0:999; K2=-999:-1;
M1=lengTh(K1); M2=lengTh(K2);
F=[Fs0*K2/M2,Fs0*K1/M1]; %設置頻率數(shù)組
W=[-2*Pi*K2/M2,2*Pi*K1/M1];
Fx1=eval(Fy);
FX1=Fx1*exP(-j*[1:lengTh(Fx1)]'*W);
%求原信號的傅里葉變換
Figure
% 畫原信號的波形圖
subPloT(2,1,1),PloT(T,Fx1,'r')
TiTle('原信號'), xlabel('時間T (s)')
axis([Min(T),Max(T),Min(Fx1),Max(Fx1)]) % 畫原信號幅度頻譜圖
subPloT(2,1,2),PloT(F,abs(FX1),'r')
TiTle('原信號幅度頻譜') , xlabel('頻率F (Hz)')
axis([-100,100,0,Max(abs(FX1))+5]) % 對原信號進行抽樣
Ts=1/Fs; %信號的抽樣周期
T1=-TP:Ts:TP; %抽樣的時間序列
F1=[Fs*K2/M2,Fs*K1/M1]; %設置抽樣信號的頻率數(shù)組
T=T1; %變量的替換
Fz=eval(Fy); %獲取抽樣序列
FZ=Fz*exP(-j*[1:lengTh(Fz)]'*W);
%抽樣信號的傅里葉變換
Figure
% 畫抽樣序列波形圖
subPloT(2,1,1),sTeM(T,Fz,'.'),
TiTle('抽樣信號') , xlabel('時間T (s)')
line([Min(T),Max(T)],[0,0])
% 畫頻譜圖
subPloT(2,1,2),PloT(F1,abs(FZ),'M')
TiTle('抽樣信號幅度頻譜') , xlabel('頻率F (Hz)')
利用MATLAB對抽樣信號進行恢復,得到恢復信號波形和恢復信號頻譜。 MATLAB編程代碼如下(子函數(shù)Ⅱ):
%信號的恢復以及頻譜函數(shù)
FuncTion Fh=huiFu(Fz,Fs)
%從抽樣信號得到原信號
%首先輸入是抽樣序列變量
%然后輸入得到抽樣序列所用的抽樣頻率變量
T=1/Fs; DT=T/10; TP=0.1;
T=-TP:DT:TP; n=-TP/T:TP/T;
TMN=ones(lengTh(n),1)*T-n'*T*ones(1,lengTh(T));
Fh=Fz*sinc(Fs*TMN); % 由抽樣信號恢復原信號
K1=0:999; K2=-999:-1;
M1=lengTh(K1); M2=lengTh(K2);
W=[-2*Pi*K2/M2,2*Pi*K1/M1];
FH=Fh*exP(-j*[1:lengTh(Fh)]'*W);
%信號的傅里葉變換
Figure
% 畫恢復后的信號的波形圖
subPloT(2,1,1),PloT(T,Fh,'g'),
sT1=sPrinTF('由抽樣頻率Fs=%D',Fs);
sT2='恢復后的信號';
sT=[sT1,sT2]; TiTle(sT) , xlabel('時間T (s)')
axis([Min(T),Max(T),Min(Fh),Max(Fh)])
line([Min(T),Max(T)],[0,0]) % 畫重構信號的幅度頻譜圖
F=[10*Fs*K2/M2,10*Fs*K1/M1]; %設置頻率數(shù)組
subPloT(2,1,2),PloT(F,abs(FH),'g')
TiTle('恢復后信號的頻譜') , xlabel('頻率F (Hz)')
axis([-100,100,0,Max(abs(FH))+2]);
%主函數(shù)
F1='sin(2*Pi*60*T)+cos(2*Pi*25*T)+cos(2*Pi*30*T)';%輸入一個信號
Fs0=chouyang(F1,80); %頻率,即欠頻率抽樣
Fr0=huiFu(Fs0,80);
Fs1=chouyang(F1,120);%頻率,臨界頻率抽樣
Fr1=huiFu(Fs1,120);
Fs2=chouyang(F1,150);%頻率,即過頻率抽樣
Fr2=huiFu(Fs2,150);
原信號的波形及幅度頻譜圖形如圖2:
(1)抽樣頻率為等于80 Hz時,抽樣信號和恢復的信號圖形如圖3、圖4。
比較圖4與圖2就可看出,恢復后信號與原信號差別較大,信號失真,頻譜發(fā)生重疊。這是因為抽樣間頻率過小致使抽樣信號的頻譜混疊,不能夠從抽樣信號中得出原信號所表示的信息,原信號不能夠恢復。
(2)抽樣頻率等于120Hz時,抽樣信號和恢復的信號圖形如圖5、圖6。
由圖6與圖2相比較就可看出,恢復后信號與原信號差別較小,但與原信號相比存在失真,頻譜中高頻信號未恢復。由于抽樣頻率比原信號中的低頻信號的兩倍要高,所以低頻信號能夠得到恢復;而高頻信號頻率的兩倍等于或大于抽樣頻率致使高頻段信號發(fā)生頻譜混疊,而不能完全地從抽樣信號中得到恢復致使信息缺失。
(3)抽樣頻率等于150Hz時,抽樣信號和恢復的信號圖形如圖7、圖8。
由圖8與圖2相比較可以看出,信號恢復成功,頻域中也沒出現(xiàn)頻譜的交疊。由于原模擬信號中的低頻、高頻信號的頻率的兩倍都低于抽樣頻率,抽樣信號的頻譜沒有混疊,所以能夠完整地表達原信號中信息,從中可以恢復出原信號。
通過本次設計過程可得出:從第一種情況中可以看出,抽樣信號不能完整地表達原始信號,致使原信號中的信息在恢復時出現(xiàn)錯誤;從第二種情況中可以看出,抽樣信號只能表達原信號中的低頻信號,造成原信號中高頻信號的缺失,信息表達不完整,是不可取的;而從第三種情況中可以看出抽樣信號可以完全地表達原信號,其信息也能完整地表示,能達到理想的狀態(tài)。所以能得出這樣一個結論:一個連續(xù)模擬信號f(t)中的最高頻率