?? ber_23_ml_zf_bpsk.m
字號(hào):
clc;
clear;
tic
Frame_Length=160; %The length of each frame
Frame_number=40; %The number of frames
Meantimes=20; %The times of mean
Testnum=15; %The times of test
error1=zeros(Meantimes,Testnum);
error2=zeros(Meantimes,Testnum);
H=[0.5 0.25;
0.125 0.5;
0.25 0.125];
[N,B]=size(H);
h1=H(1,:);
h2=H(2,:);
h3=H(3,:);
for times=1:Meantimes,
snr_in_db=0;
for testcount=1:Testnum,
snr_in_db=2*(testcount-1);
SNR=10^(snr_in_db/10);
for Frame_count=1:Frame_number
%*************************************************************************************%
% 產(chǎn)生高斯噪聲 %
%*************************************************************************************%
L=Frame_Length;
noise1=randn(1, L/2)/(sqrt(2*SNR));
noise2=randn(1, L/2)/(sqrt(2*SNR));
noise3=randn(1, L/2)/(sqrt(2*SNR));
%*************************************************************************************%
% 編碼算法 %
%*************************************************************************************%
input_bits=randint(1,L);
% BPSK調(diào)制
BPSK = [-1 1]; % refer to Table82 on page21 of IEEE802.11a
input_bits1 = BPSK(input_bits+1);
send=reshape(input_bits1,B,L/B);
%接收信號(hào)
R1=h1*send+noise1;
R2=h2*send+noise2;
R3=h3*send+noise3;
% R1=h1*send;
% R2=h2*send;
%*************************************************************************************%
% 接收端解碼算法 %
%*************************************************************************************%
% ML譯碼
output_bits1=decode_ML23_BPSK(H,L/B,R1,R2,R3);
% ZF譯碼
output_bits2=decode_ZF23_BPSK(H,L/B,R1,R2,R3);
%*************************************************************************************%
% 誤碼率統(tǒng)計(jì) %
%*************************************************************************************%
errornumber1=output_bits1-input_bits;
for q=1:Frame_Length,
if errornumber1(1,q)~=0
error1(times,testcount)=error1(times,testcount)+1;
end
end
errornumber2=output_bits2-input_bits;
for q=1:Frame_Length,
if errornumber2(1,q)~=0
error2(times,testcount)=error2(times,testcount)+1;
end
end
end
end
end
ber=mean(error1)/(Frame_Length*Frame_number);
horiaxis=[0:2:2*(Testnum-1)];
semilogy(horiaxis,ber,'*-');
xlabel('SNR(dB)');
ylabel('Bit Error Rate');
title('ML and ZF 2*3 BPSK');
grid;
hold on;
ber2=mean(error2)/(Frame_Length*Frame_number);
horiaxis=[0:2:2*(Testnum-1)];
semilogy(horiaxis,ber2,'o-');
legend('ML','ZF')
toc
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -