Main ���
SNRindB1=0:2:10;
SNRindB2=0:0.1:10;
for i=1:length(SNRindB1)
[pb,ps]=cm_sm32(SNRindB1(i)); %����������
smld_bit_err_prb(i)=pb;
smld_symbol_err_prb(i)=ps;
end;
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10); %���
theo_err_prb(i)=Qfunct(sqrt(2*SNR)); %�������
end;
%�������
semilogy(SNRindB1,smld_bit_err_prb,'*');
hold on;
semilogy(SNRindB1,smld_symbol_err_prb,'o');
semilogy(SNRindB2,theo_err_prb);
hold off;
����cm_sm32.m
function [pb,ps]=cm_sm32(snr_in_dB)
N=10000;
E=1; %�����
snr=10^(snr_in_dB/10); %���
sgma=sqrt(E/snr)/2; %����
%����
s00=[1 0];
s01=[0 1];
s11=[-1 0];
s10=[0 -1];
%������
for i=1:N
temp=rand;
89
if (temp<0.25) %���(0,1)����������
dsource1(i)=0; %������00����� 1/4
dsource2(i)=0;
elseif (temp<0.5) %������01����� 1/4
dsource1(i)=0;
dsource2(i)=1;
elseif (temp<0.75) %������10����� 1/4
dsource1(i)=1;
dsource2(i)=0;
else %������11����� 1/4
dsource1(i)=1;
dsource2(i)=1;
end;
end;
%���������
numofsymbolerror=0;
numofbiterror=0;
for i=1:N