資源簡介
本程序是通過生成碼本和采用OSTBC的ALAMOUTI預編碼來獲得需要的BER,所得到的的BER隨著SNR的值增大而變化。該程序能夠實現良好的性能特點

代碼片段和文件信息
%?Alamouti_2x1_precoding.m
%MIMO-OFDM?Wireless?Communications?with?MATLAB㈢???Yong?Soo?Cho?Jaekwon?Kim?Won?Young?Yang?and?Chung?G.?Kang
%2010?John?Wiley?&?Sons?(Asia)?Pte?Ltd
clear?all;?clf
%%%%%%?Parameter?Setting?%%%%%%%%%
N_frame=1000;??N_packet=100;????
b=2;??M=2^b;
mod_obj=modem.qammod(‘M‘M‘SymbolOrder‘‘Gray‘‘InputType‘‘bit‘);
demod_obj?=?modem.qamdemod(mod_obj);
%?MIMO?Parameters
T_TX=4;?code_length=64;?
NT=2;?NR=1;?%?Numbers?of?transmit/receive?antennas
N_pbits=NT*b*N_frame;??N_tbits=N_pbits*N_packet;
code_book?=?codebook_gen;
fprintf(‘====================================================\n‘);
fprintf(‘??Precoding?transmission‘);
fprintf(‘\n??%d?x?%d?MIMO\n??%d?QAM‘?NTNRM);
fprintf(‘\n??Simulation?bits?:?%d‘?N_tbits);
fprintf(‘\n====================================================\n‘);
SNRdBs?=?[0:2:10];?sq2=sqrt(2);
for?i_SNR=1:length(SNRdBs)
???SNRdB?=?SNRdBs(i_SNR);?
???noise_var?=?NT*0.5*10^(-SNRdB/10);?sigma?=?sqrt(noise_var);
???rand(‘seed‘1);?randn(‘seed‘1);??N_ebits=0;
???for?i_packet=1:N_packet
??????msg_bit??=?randint(N_pbits1);?%?Bit?generation
??????%%%%%%%%%%%%%?Transmitter?%%%%%%%%%%%%%%%%%%
??????s?=?modulate(mod_objmsg_bit);
??????Scale?=?modnorm(s‘avpow‘1);?%?Normalization
??????S?=?reshape(Scale*sNT1N_frame);?%?Transmit?symbol
??????Tx_symbol?=?[S(11:)?-conj(S(21:));?S(21:)?conj(S(11:))];?????
??????%%%%%%%%%%%%%?Channel?and?Noise?%%%%%%%%%%%%%
??????H?=?(randn(NRT_TX)+j*randn(NRT_TX))/sq2;
??????for?i=1:code_length
?????????cal(i)?=?norm(H*code_book(::i)‘fro‘);??
??????end???
??????[valIndex]?=?max(cal);?
??????He?=?H*code_book(::Index);
??????norm_H2?=?norm(He)^2;?%?H?selected?and?its?norm2
??????for?i=1:N_frame
?????????Rx(::i)?=?He*Tx_symbol(::i)+sigma*(randn(NR2)+j*randn(NR2));????????????
??????end?????????????
??????%%%%%%%%%%%%%?Receiver?%%%%%%%%%%%%%%%%%%
??????for?i=1:N_frame
?????????y(1i)?=?(He(1)‘*Rx(:1i)+He(2)*Rx(:2i)‘)/norm_H2;
?????????y(2i)?=?(He(2)‘*Rx(:1i)-He(1)*Rx(:2i)‘)/norm_H2;
??????end??????
??????S_hat?=?reshape(y/ScaleNT*N_frame1);
??????msg_hat?=?demodulate(demod_objS_hat);
??????N_ebits?=?N_ebits?+?sum(msg_hat~=msg_bit);
???end
???BER(i_SNR)?=?N_ebits/N_tbits;
end
semilogy(SNRdBsBER‘-k^‘?‘LineWidth‘2);?hold?on;?grid?on;
xlabel(‘SNR[dB]‘)?ylabel(‘BER‘);?legend(‘Precoded?Alamouti‘);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2391??2017-07-05?16:48??codebook_generator\Alamouti_2x1_precoding.m
?????文件?????????595??2017-07-05?16:48??codebook_generator\codebook_generator.m
?????目錄???????????0??2018-05-02?21:42??codebook_generator\
- 上一篇:lm317可調穩壓電源
- 下一篇:交通燈的匯編語言源代碼程序
評論
共有 條評論