黃家彬
【摘 要】本文主要嘗試通過Matlab編程實(shí)現(xiàn)通信系統(tǒng)仿真。
【關(guān)鍵詞】系統(tǒng)仿真;差分脈沖編碼;huffman編碼;漢明碼;DPSK;Matlab編程
1 仿真設(shè)計(jì)
以30Hz和17Hz的正弦信號的疊加信號作為信號源。然后采用90Hz速率對這個信號持續(xù)1秒進(jìn)行抽樣,得到的是間隔為0.011s的離散抽樣值。再進(jìn)行32級(4bit)、1階DPCM差分脈沖量化編碼。對DPCM編碼的數(shù)據(jù)流進(jìn)行哈夫曼(huffman)編碼壓縮再漢明編碼。隨后進(jìn)行調(diào)制,在發(fā)送端對碼流進(jìn)行DPSK數(shù)字鍵控調(diào)制,采用的載波是100kHz的正弦波,然后送上信道進(jìn)行傳輸。信道是最常見的高斯加性白噪聲信道,信號傳輸過程中受到高斯噪聲的干擾,信噪比為20dB。在接收端對接收到的信號進(jìn)行解調(diào)、漢明碼解碼,最后解DPCM信號并恢復(fù)所發(fā)送的信號。
本例只是就如何通過Matlab的編程實(shí)現(xiàn)整個系統(tǒng)的仿真,系統(tǒng)中的參數(shù)選取在現(xiàn)實(shí)應(yīng)用中的意義不作考究。
2 仿真實(shí)現(xiàn)
Matlab代碼如下:
Dt=0.0001;t=0:Dt:1;f1=30; f2=17;fs=90;n=7;k=4;m=2;snr=20;Fc
10000;Fd=5600;Fs=56000;unham=[];
source=sin(2*pi*f1*t)+sin(2*pi*f2*t)
sam=sampling(source,Dt,fs);len=2^4; ord=1;
[predictor,codebook,partition]=dpcmopt(sam,ord,len);
dpcm=dpcmenco(sam,codebook,partition,predictor);
[huff,htable]=huffman(dpcm,len);[ham,add]=encode(huff,7,4,'hamming');
dpsk=dmod(difcode(ham),F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m);gdpsk=awgn(dpsk,snr);
undpsk=undifcode(ddemod(gdpsk,F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m));
[unham_t,b1,b2,cerr]=decode(undpsk,n,k,'hamming');
for temp=1:length(unham_t)-add
unham(temp)=unham_t(temp);end
unhuff=dehuffman(unham,htable,len);
undpcm=dpcmdeco(unhuff,codebook,predictor);
unsam=unsampling(undpcm,t,Dt,fs);
3 數(shù)據(jù)分析
源信號與還原信號比較圖(圖1)如下:
圖1
可以定義:D = 源信號的均方值 — 還原信號的均方值 為這兩個信號的差異參數(shù)。
在代碼末尾加上
D= (sum(source.^2-unsam.^2))/length(source)
Err= sum(cerr)
D值越大本系統(tǒng)對源信號的還原就越差,Err是差錯控制糾正誤碼的數(shù)量,正常情況下Err為0表示沒有誤碼。改變仿真代碼中的snr變量的值即可改變仿真系統(tǒng)的信道信噪比,在不同信道信噪比之下,D和Err的變化結(jié)果如下(表1):
表1
上面僅為某幾次試驗(yàn)的值,當(dāng)不斷重復(fù)運(yùn)行仿真代碼時即發(fā)現(xiàn):信噪比大于5dB時,D和Err的值都分別衡定在0.0121和0,由此推斷信道信噪比大于5dB時,還原信號的誤差主要是由系統(tǒng)的抽樣、量化和還原的環(huán)節(jié)造成的。信噪比在小于5dB時D和Err的值與信噪比成反比增長,這時,信道噪聲對系統(tǒng)的影響逐漸增大。當(dāng)信噪比小于-8dB時程序經(jīng)常提示運(yùn)行出錯,這是因?yàn)檎`碼數(shù)已經(jīng)大大超過漢明碼的糾正范圍出現(xiàn)誤譯碼,導(dǎo)致之后的程序無法按原參數(shù)執(zhí)行,導(dǎo)致出錯。
4 結(jié)語
本文所述的仿真例子還沒十分完善,只是仿真了通信系統(tǒng)中的一些最基本的環(huán)節(jié)。本文最終目的是論述Matlab是如何在通信系統(tǒng)仿真中發(fā)揮作用的。從上面來看,Matlab的在其一般編程環(huán)境中不能產(chǎn)生嚴(yán)格意義的模擬信號仿真這一點(diǎn)上確有不足,但并不影響其在通信系統(tǒng)仿真特別是數(shù)字通信系統(tǒng)仿真的應(yīng)用優(yōu)勢。
【參考文獻(xiàn)】
[1]馬海武,達(dá)新宇,等.通信原理[Z].
[2][加]Joyce Van de Vegte.數(shù)字信號處理基礎(chǔ)[Z].
[3]孫屹. MATLAB.通信仿真開發(fā)手冊[Z].
[4]張森,張正亮.MATLAB.仿真技術(shù)與實(shí)里例應(yīng)用教程[Z].
[責(zé)任編輯:薛俊歌]
【摘 要】本文主要嘗試通過Matlab編程實(shí)現(xiàn)通信系統(tǒng)仿真。
【關(guān)鍵詞】系統(tǒng)仿真;差分脈沖編碼;huffman編碼;漢明碼;DPSK;Matlab編程
1 仿真設(shè)計(jì)
以30Hz和17Hz的正弦信號的疊加信號作為信號源。然后采用90Hz速率對這個信號持續(xù)1秒進(jìn)行抽樣,得到的是間隔為0.011s的離散抽樣值。再進(jìn)行32級(4bit)、1階DPCM差分脈沖量化編碼。對DPCM編碼的數(shù)據(jù)流進(jìn)行哈夫曼(huffman)編碼壓縮再漢明編碼。隨后進(jìn)行調(diào)制,在發(fā)送端對碼流進(jìn)行DPSK數(shù)字鍵控調(diào)制,采用的載波是100kHz的正弦波,然后送上信道進(jìn)行傳輸。信道是最常見的高斯加性白噪聲信道,信號傳輸過程中受到高斯噪聲的干擾,信噪比為20dB。在接收端對接收到的信號進(jìn)行解調(diào)、漢明碼解碼,最后解DPCM信號并恢復(fù)所發(fā)送的信號。
本例只是就如何通過Matlab的編程實(shí)現(xiàn)整個系統(tǒng)的仿真,系統(tǒng)中的參數(shù)選取在現(xiàn)實(shí)應(yīng)用中的意義不作考究。
2 仿真實(shí)現(xiàn)
Matlab代碼如下:
Dt=0.0001;t=0:Dt:1;f1=30; f2=17;fs=90;n=7;k=4;m=2;snr=20;Fc
10000;Fd=5600;Fs=56000;unham=[];
source=sin(2*pi*f1*t)+sin(2*pi*f2*t)
sam=sampling(source,Dt,fs);len=2^4; ord=1;
[predictor,codebook,partition]=dpcmopt(sam,ord,len);
dpcm=dpcmenco(sam,codebook,partition,predictor);
[huff,htable]=huffman(dpcm,len);[ham,add]=encode(huff,7,4,'hamming');
dpsk=dmod(difcode(ham),F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m);gdpsk=awgn(dpsk,snr);
undpsk=undifcode(ddemod(gdpsk,F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m));
[unham_t,b1,b2,cerr]=decode(undpsk,n,k,'hamming');
for temp=1:length(unham_t)-add
unham(temp)=unham_t(temp);end
unhuff=dehuffman(unham,htable,len);
undpcm=dpcmdeco(unhuff,codebook,predictor);
unsam=unsampling(undpcm,t,Dt,fs);
3 數(shù)據(jù)分析
源信號與還原信號比較圖(圖1)如下:
圖1
可以定義:D = 源信號的均方值 — 還原信號的均方值 為這兩個信號的差異參數(shù)。
在代碼末尾加上
D= (sum(source.^2-unsam.^2))/length(source)
Err= sum(cerr)
D值越大本系統(tǒng)對源信號的還原就越差,Err是差錯控制糾正誤碼的數(shù)量,正常情況下Err為0表示沒有誤碼。改變仿真代碼中的snr變量的值即可改變仿真系統(tǒng)的信道信噪比,在不同信道信噪比之下,D和Err的變化結(jié)果如下(表1):
表1
上面僅為某幾次試驗(yàn)的值,當(dāng)不斷重復(fù)運(yùn)行仿真代碼時即發(fā)現(xiàn):信噪比大于5dB時,D和Err的值都分別衡定在0.0121和0,由此推斷信道信噪比大于5dB時,還原信號的誤差主要是由系統(tǒng)的抽樣、量化和還原的環(huán)節(jié)造成的。信噪比在小于5dB時D和Err的值與信噪比成反比增長,這時,信道噪聲對系統(tǒng)的影響逐漸增大。當(dāng)信噪比小于-8dB時程序經(jīng)常提示運(yùn)行出錯,這是因?yàn)檎`碼數(shù)已經(jīng)大大超過漢明碼的糾正范圍出現(xiàn)誤譯碼,導(dǎo)致之后的程序無法按原參數(shù)執(zhí)行,導(dǎo)致出錯。
4 結(jié)語
本文所述的仿真例子還沒十分完善,只是仿真了通信系統(tǒng)中的一些最基本的環(huán)節(jié)。本文最終目的是論述Matlab是如何在通信系統(tǒng)仿真中發(fā)揮作用的。從上面來看,Matlab的在其一般編程環(huán)境中不能產(chǎn)生嚴(yán)格意義的模擬信號仿真這一點(diǎn)上確有不足,但并不影響其在通信系統(tǒng)仿真特別是數(shù)字通信系統(tǒng)仿真的應(yīng)用優(yōu)勢。
【參考文獻(xiàn)】
[1]馬海武,達(dá)新宇,等.通信原理[Z].
[2][加]Joyce Van de Vegte.數(shù)字信號處理基礎(chǔ)[Z].
[3]孫屹. MATLAB.通信仿真開發(fā)手冊[Z].
[4]張森,張正亮.MATLAB.仿真技術(shù)與實(shí)里例應(yīng)用教程[Z].
[責(zé)任編輯:薛俊歌]
【摘 要】本文主要嘗試通過Matlab編程實(shí)現(xiàn)通信系統(tǒng)仿真。
【關(guān)鍵詞】系統(tǒng)仿真;差分脈沖編碼;huffman編碼;漢明碼;DPSK;Matlab編程
1 仿真設(shè)計(jì)
以30Hz和17Hz的正弦信號的疊加信號作為信號源。然后采用90Hz速率對這個信號持續(xù)1秒進(jìn)行抽樣,得到的是間隔為0.011s的離散抽樣值。再進(jìn)行32級(4bit)、1階DPCM差分脈沖量化編碼。對DPCM編碼的數(shù)據(jù)流進(jìn)行哈夫曼(huffman)編碼壓縮再漢明編碼。隨后進(jìn)行調(diào)制,在發(fā)送端對碼流進(jìn)行DPSK數(shù)字鍵控調(diào)制,采用的載波是100kHz的正弦波,然后送上信道進(jìn)行傳輸。信道是最常見的高斯加性白噪聲信道,信號傳輸過程中受到高斯噪聲的干擾,信噪比為20dB。在接收端對接收到的信號進(jìn)行解調(diào)、漢明碼解碼,最后解DPCM信號并恢復(fù)所發(fā)送的信號。
本例只是就如何通過Matlab的編程實(shí)現(xiàn)整個系統(tǒng)的仿真,系統(tǒng)中的參數(shù)選取在現(xiàn)實(shí)應(yīng)用中的意義不作考究。
2 仿真實(shí)現(xiàn)
Matlab代碼如下:
Dt=0.0001;t=0:Dt:1;f1=30; f2=17;fs=90;n=7;k=4;m=2;snr=20;Fc
10000;Fd=5600;Fs=56000;unham=[];
source=sin(2*pi*f1*t)+sin(2*pi*f2*t)
sam=sampling(source,Dt,fs);len=2^4; ord=1;
[predictor,codebook,partition]=dpcmopt(sam,ord,len);
dpcm=dpcmenco(sam,codebook,partition,predictor);
[huff,htable]=huffman(dpcm,len);[ham,add]=encode(huff,7,4,'hamming');
dpsk=dmod(difcode(ham),F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m);gdpsk=awgn(dpsk,snr);
undpsk=undifcode(ddemod(gdpsk,F(xiàn)c,F(xiàn)d,F(xiàn)s,'psk',m));
[unham_t,b1,b2,cerr]=decode(undpsk,n,k,'hamming');
for temp=1:length(unham_t)-add
unham(temp)=unham_t(temp);end
unhuff=dehuffman(unham,htable,len);
undpcm=dpcmdeco(unhuff,codebook,predictor);
unsam=unsampling(undpcm,t,Dt,fs);
3 數(shù)據(jù)分析
源信號與還原信號比較圖(圖1)如下:
圖1
可以定義:D = 源信號的均方值 — 還原信號的均方值 為這兩個信號的差異參數(shù)。
在代碼末尾加上
D= (sum(source.^2-unsam.^2))/length(source)
Err= sum(cerr)
D值越大本系統(tǒng)對源信號的還原就越差,Err是差錯控制糾正誤碼的數(shù)量,正常情況下Err為0表示沒有誤碼。改變仿真代碼中的snr變量的值即可改變仿真系統(tǒng)的信道信噪比,在不同信道信噪比之下,D和Err的變化結(jié)果如下(表1):
表1
上面僅為某幾次試驗(yàn)的值,當(dāng)不斷重復(fù)運(yùn)行仿真代碼時即發(fā)現(xiàn):信噪比大于5dB時,D和Err的值都分別衡定在0.0121和0,由此推斷信道信噪比大于5dB時,還原信號的誤差主要是由系統(tǒng)的抽樣、量化和還原的環(huán)節(jié)造成的。信噪比在小于5dB時D和Err的值與信噪比成反比增長,這時,信道噪聲對系統(tǒng)的影響逐漸增大。當(dāng)信噪比小于-8dB時程序經(jīng)常提示運(yùn)行出錯,這是因?yàn)檎`碼數(shù)已經(jīng)大大超過漢明碼的糾正范圍出現(xiàn)誤譯碼,導(dǎo)致之后的程序無法按原參數(shù)執(zhí)行,導(dǎo)致出錯。
4 結(jié)語
本文所述的仿真例子還沒十分完善,只是仿真了通信系統(tǒng)中的一些最基本的環(huán)節(jié)。本文最終目的是論述Matlab是如何在通信系統(tǒng)仿真中發(fā)揮作用的。從上面來看,Matlab的在其一般編程環(huán)境中不能產(chǎn)生嚴(yán)格意義的模擬信號仿真這一點(diǎn)上確有不足,但并不影響其在通信系統(tǒng)仿真特別是數(shù)字通信系統(tǒng)仿真的應(yīng)用優(yōu)勢。
【參考文獻(xiàn)】
[1]馬海武,達(dá)新宇,等.通信原理[Z].
[2][加]Joyce Van de Vegte.數(shù)字信號處理基礎(chǔ)[Z].
[3]孫屹. MATLAB.通信仿真開發(fā)手冊[Z].
[4]張森,張正亮.MATLAB.仿真技術(shù)與實(shí)里例應(yīng)用教程[Z].
[責(zé)任編輯:薛俊歌]