在视频课程里面,我提到了一些编程技巧!
同学们还有印象吗?
比如:循环仿真误码的时候要注释掉某些语句。
画图语句是肯定要注释掉的。
某些参数的显示语句也可以注释掉。
这样可以节省仿真时间。
接着看程序吧。
%%%%%%%% 接收机 %%%%%%%%
%%%%%% 解调器
%%% 载波恢复
% 生成本地载波
rcos_msg_source_noise = rcos_msg_source_carrier_noise.*cos(2*pi*fre_carrier.*time/fre_sample);
% 滤波高频,保留基带信号
LPF_fir128 = fir1(128,0.2); % 生成低通滤波器
rcos_msg_source_LP = filter( LPF_fir128, 1, rcos_msg_source_noise );
% 延时64个采样点输出。
% figure(5)
% plot(rcos_msg_source_LP)
% title('时域波形')
% figure(6)
% plot(abs(fft(rcos_msg_source_LP)))
% title('频域波形')
% 生成匹配滤波器
rolloff_factor = 0.5; % 滚降因子
rcos_fir = rcosdesign(rolloff_factor, 6, symbol_sample_rate);
% 生成匹配滤波器 a square-root raised cosine FIR filter with rolloff factor
% 滤波
% filter
rcos_msg_source_MF = filter( rcos_fir, 1, rcos_msg_source_LP );
% figure(7)
% plot(rcos_msg_source_MF,'-*')
% title('时域波形')
% figure(8)
% plot(abs(fft(rcos_msg_source_MF)))
% title('频域波形')
%%% 最佳采样点
% 选取最佳采样点,一个符号取一个点进行判决
decision_site = 160; % (96+128+96)/2 = 160 三个滤波器延迟值
rcos_msg_source_MF_option = rcos_msg_source_MF(decision_site: symbol_sample_rate : end);
% 涉及三个滤波器,固含有三个滤波器延迟累加。
%%% 判决
msg_source_MF_option_sign = sign(rcos_msg_source_MF_option);
% figure(9)
% plot(rcos_msg_source_MF_option,'-*')
% title('时域波形')
%%%%%%%%% 解码器
% bchdecode % BCH译码
%%%%%%%% 信宿 %%%%%%%%
%%% 误码性能比对
% [err_number,bit_err_ratio] = biterr(x,y)
[err_number(i),bit_err_ratio(i)] = biterr(msg_source(1:length(rcos_msg_source_MF_option)), (msg_source_MF_option_sign + 1)/2);
end % for i
%%%%% 仿真结果 %%%%%%%
%%%%%% 结论 %%%%%%%%
% 完成了BPSK调制解调器的仿真。
% 没有包含编译码内容。
% 2019-4-23
BPSK调制解调器是仿真知识的重要基础!
程序涉及到的每个知识点都要搞清楚,
这样才能学习更深的知识!
未完,待续!