資源簡介
matlab進行HARQ協(xié)議仿真,采用漢明碼糾錯編碼,BPSK調制,分析BER和SNR的關系

代碼片段和文件信息
%modify?date:?08.12.10
%?模擬的假設,信道情況穩(wěn)定,不會有丟包現(xiàn)象,不需要處理超時的情況。
%?不需要處理重復幀的情況
clear?all
%?N?=?100000;?
%計算漢明碼,m為數(shù)據(jù)位
m=3;
%總長計算,2^m-1?>?k?+?m
n?=?2^m-1;
%?發(fā)包相關計算
k?=?4;%(nk)
length_block?=?k*20;
num_block?=?1500;?%分組數(shù)
N?=?length_block*num_block;
num_minerr?=?10;??%?測試過程中,出錯數(shù)達到最小錯誤停止
num_maxARQ?=?1;?%允許最大傳輸次數(shù)
snr_array?=?0:11;%14;????????????????%?0?1?2?3?4?5?6?...?14??信噪比序列,遞進測試
ber_array?=?zeros(size(snr_array));??%?0?0?0?0?0?0?0?...?0
seed?=?[487944?44984];
%?這個是想干嘛?感覺沒用
rand(‘state‘?seed(1));??%===>randsrc
randn(‘state‘?seed(2));?%===>awgn
%產(chǎn)生傳輸隨機信息
alphabet?=?[0?1];
%?每行為一個block?共1500個block,每個80bit
msg_orig?=?randsrc(num_block?length_block?alphabet);
%(74)漢明編碼?
msg_encode?=?zeros(num_blocklength_block*n/k);
for?msg_row?=?1:num_block
????%?每行分別漢明碼?nk為參數(shù)?k
????msg_encode(msg_row:)?=?encode(msg_orig(msg_row:)nk‘hamming‘);
end;
%BPSK調制
msg_tx?=?msg_encode*2-1;
%加噪ARQ過程
%?對不同的信噪比(遞增的)進行測試
for?i?=?1:length(snr_array)
????n_trans?=?1;
????%?一次完整的ARQ-SAW(停等)過程?送進去的數(shù)據(jù)是15000?*?80大小的數(shù)據(jù)?
????n_biterr?=?transmit(msg_origmsg_txnum_blocklength_blocknum_maxARQsnr_array(i)nk);
????%?測試達到10次錯誤所經(jīng)過的總傳輸次數(shù)(這里是指針對同一個信噪比)
????while(n_biterr?????????n_trans?=?n_trans?+?1;
????????n_biterr?=?n_biterr?+?transmit(msg_origmsg_txnum_blocklength_blocknum_maxARQsnr_array(i)nk);
????end;
????%?統(tǒng)計這個信噪比的誤碼率??(總的錯誤比特?/?總比特數(shù))
????ber_array(i)?=?n_biterr/(N?*?n_trans);
end;
%作圖
%0??‘r*‘?‘r-‘50
%1??‘b+‘?‘b:‘20
%2??‘g.‘?‘g-.‘10
%3??‘kx‘?‘k--‘40
hold?on;%
semilogy(snr_arrayber_array‘kx‘snr_arrayber_array‘k--‘);?
axis?tight;?
axis([0?15?0?1]);???????????????????%?????????????
xlabel(‘SNR(dB)‘);???????????????????????????????????????????
ylabel(‘BER‘);?
legend(‘Simulation‘‘Analytical‘);?%
hold?off;?%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2060??2012-07-17?19:40??harq.m
?????文件????????2994??2012-07-17?19:40??transmit.m
評論
共有 條評論