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 test2.m
word文档 可自由复制编辑
%% 多径信道下,有无添加CP的系统误码率曲线 close all;clear all; clc; tic ; %计时开始 global CP_len; global nSubC; global ifft_len; global bitPerSymbol; global symbolPerCarrier; global s_len;
global fade; %信道衰弱 %% 测试参数
CP_len = 0;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50; fade = [0, 0, 0, 0.4, 0.3]; % 信道参数 % 开始测试
s_len = nSubC*bitPerSymbol* symbolPerCarrier; SNR = 0:2:30;
ber1 = zeros(1,length(SNR));ber2 = zeros(1,length(SNR)); for kk = 1:length(SNR)
max = floor((2^(kk))/50)+10; fprintf('仿真信噪比: %d\\n', SNR(kk));
fprintf('仿真点数: %d\\n', max*nSubC*bitPerSymbol*symbolPerCarrier); CP_len = 0; ber = 0; for m = 1:max
% 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_neq(s_in); sch = channel(sch,SNR(kk)); s_out = ofdm_demod_neq(sch); %计算误比特率
err_count = sum(abs(s_in-s_out));
word文档 可自由复制编辑
ber = ber + err_count/s_len ; end
ber1(kk) = ber/max;
fprintf('cp=0 :%f\\n',ber1(kk)); CP_len = 16; ber = 0; for m = 1:max
% 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_neq(s_in); sch = channel(sch,SNR(kk)); s_out = ofdm_demod_neq(sch); %计算误比特率
err_count = sum(abs(s_in-s_out)); ber = ber + err_count/s_len; end
ber2(kk) = ber/max ;
fprintf('cp=16 :%f\\n\\n',ber2(kk)); end
figure(2);semilogy(SNR,ber1,'o-');hold on;
semilogy(SNR,ber2,'r*-');xlabel('SNR in dB');ylabel('Bit Error Rate'); legend('no CP','CP');grid; toc test3.m
%% 本测试为 有无使用均衡情况下的系统误码率曲线 %%
close all;clear all; clc; tic ; %计时开始 global CP_len; global nSubC;
word文档 可自由复制编辑
global ifft_len; global bitPerSymbol; global symbolPerCarrier; global s_len;
global fade; %信道衰弱 %% 测试参数 %SNR = 40; % dB
CP_len = 16;nSubC = 48;ifft_len = 256;bitPerSymbol = 2;symbolPerCarrier = 50; fade = [0, 0, 0, 0.4, 0.3]; % 信道参数,下标为延时点数,值为衰减系数 % 开始测试
s_len = nSubC*bitPerSymbol*symbolPerCarrier; SNR = 0:2:20;
ber1 = zeros(1,length(SNR));ber2 = 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); CP_len = 16 ; ber = 0; for m = 1:max
% 生成用于测试的随机比特 s_in = floor( rand(1, s_len )*2 ); sch = ofdm_mod_neq(s_in); sch = channel(sch,SNR(kk)); s_out = ofdm_demod_neq(sch); %计算误比特率
err_count = sum(abs(s_in-s_out)); ber = ber + err_count/s_len; end
ber1(kk) = ber/max;
word文档 可自由复制编辑
fprintf('无均衡 BER = %f\\n',ber1(kk)); CP_len = 16; 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 ;
fprintf('均衡和CP BER = %f\\n\\n',ber2(kk)); end
figure(2);semilogy(SNR,ber1,'o-');hold on;
semilogy(SNR,ber2,'r*-');xlabel('SNR in dB');ylabel('Bit Error Rate'); legend('without equilizer','with equlizer');grid; toc
参考文献:
[1] 吕爱琴,等,基于MATLAB的OFDM系统仿真及性能分析[A],计算机仿真,2005,10-0164-05
[2] 徐发强,等,OFDM系统在短波宽带信道上均衡方法 [3] 尹泽明,等,精通MATLAB6[M],清华大学出版社,2002 [4] 王文播,等,宽带无线通信OFDM技术,人民邮电出版社,2003 [5] 尹长川,等编,多载波宽带无线通信技术,北京邮电大学出版社,2004
word文档 可自由复制编辑
毕业论文:OFDM通信系统抗多径衰落性能仿真



