%% 本测试为 不同信道环境下系统误码率曲线
%%
close all;clear all; clc; tic ; %计时开始
global CP_len; %定义全局变量
global nSubC;
global ifft_len;
global bitPerSymbol;
global symbolPerCarrier;
global s_len;
global fade; %信道衰弱
%% 测试参数
%SNR = 40; % dB
CP_len = 0;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50;
% 开始测试
s_len = nSubC*bitPerSymbol* symbolPerCarrier;
SNR = 0:2:20;
ber1 = zeros(1,length(SNR));ber2 = zeros(1,length(SNR));ber3 = zeros(1,length(SNR));
for kk = 1:length(SNR)
max = floor((2^kk)/10)+10;
fprintf('仿真信噪比: %d\n', SNR(kk));
fprintf('仿真点数: %d\n', max*bitPerSymbol*symbolPerCarrier*nSubC);
fade = [0]; % 信道参数,下标为延时点数,值为衰减系数
ber = 0;
for m = 1:max
% 生成用于测试的随机比特
s_in = floor( rand(1, s_len )*2 );
sch = ofdm_mod_eq(s_in);
sch = channel(sch,SNR(kk));
s_out = ofdm_demod_eq(sch);
%计算误比特率
err_count = sum(abs(s_in-s_out));
ber = ber + err_count/s_len;
end
ber1(kk) = ber/max;
fade = [0, 0, 0, 0, 0.4]; % 信道参数
ber = 0;
for m = 1:max
s_in = floor( rand(1, s_len )*2 );
sch = ofdm_mod_eq(s_in);
sch = channel(sch,SNR(kk));
s_out = ofdm_demod_eq(sch);
%计算误比特率
err_count = sum(abs(s_in-s_out));
ber = ber + err_count/s_len;
end
ber2(kk) = ber/max ;
fade = [0, 0, 0, 0, 0.4, 0.3]; % 信道参数,下标为延时点数,值为衰减系数
ber = 0;
for m = 1:max
% 生成用于测试的随机比特
s_in = floor( rand(1, s_len )*2 );
sch = ofdm_mod_eq(s_in);
sch = channel(sch,SNR(kk));
s_out = ofdm_demod_eq(sch);
%计算误比特率
err_count = sum(abs(s_in-s_out));
ber = ber + err_count/s_len;
end
ber3(kk) = ber/max ;
end
figure(2);
semilogy(SNR,ber1,'o-');
hold on;semilogy(SNR,ber2,'r*-');hold on;
semilogy(SNR,ber3,'gv-');xlabel('SNR in dB');ylabel('Bit Error Rate');
legend('AWGN','AWGN + 2 path','AWGN + 3 path');grid;
toc