modem.asv
来自「数字通信中的4QAM调制下的解调程序」· ASV 代码 · 共 45 行
ASV
45 行
%4QAM Ber simulink
Ber = zeros(1,10);
%simulink from 1dB to 10dB for Eb/N0
for i =1:10
%EbN0 = idB
EbN0 = i/2;%unit is dB
%get SNR in ratio unit, for BPSK, without channel code & alpha index, SNR = EbN0
SNR = 10^(EbN0/10);
%calculate AWGN sigma^2
sigma2 = 1/(2*SNR);
sigma = sigma2^0.5;
Error_bit = 0;
iter_No = 0;%iterative No
%start to simulink
while (1)
%produce random bit
x = (sign(randn(1,100))+1)/2; % random bits
x1 = x(1:2:99);%save x1,x3,x5,...x99
x2 = x(2:2:100);%save x2,x4,x6...x100
real = x2.*2 -1;
%add AWGN noise to real
reak =
img = x1.*2 -1;
%add AWGN noise to img
%4QAM
y = real + img*i;
z = y + sigma*randn(1,100);%add AWGN
%demodulation
yo = zeros(1,100);
yo = z>0;
%record error demodulated bit No, iterative No
iter_No = iter_No +1;
Error_bit = Error_bit + size(find(yo-x),2);
if (Error_bit >= 100)
break;
end;
end;
%BER calculate
Ber(i) = Error_bit/(iter_No*100);
end;
figure, semilogy(Ber);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?