继续讲解!什么是EbNo呢?通信专业的学生必须要了解这个概念,以后会时不时的接触它!先看看百度怎么讲这个概念的?Eb表示单位比特的能量,单位是焦耳(Joules)。No表示功率谱密度,单位是瓦特/赫兹(Watts/Hz)。
为什么仿真要用EbNo而不用SNR呢?因为用EbNo可以直观的看到系统性能,比如采用QPSK,那么误码率BER达到千分之一时,EbNo大约为7dB。如果采用了信道编码又进行了均衡,也采用QPSK星座映射,但EbNo为7dB时,BER为百分之一,那就证明系统设计有问题或者仿真出错了。因为SNR和EbNo是线性关系,所以用SNR为参数看BER只能看到大概的趋势,不能知晓系统性能到底如何。
SNR与Eb/No的关系用公式来表达可以是这样的:SNR=10*log10(Eb/No) 。
10*log10(Eb/No)是在计算用dB做单位衡量的Eb/No。
接着上堂课的程序继续讲解。
来到了接收机部分!
%%%% 接收机 %%%%
%%%% 解调器
%%% 载波恢复
% 生成本地载波
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
% 滤波
rcos_msg_source_MF = filter( rcos_fir, 1, rcos_msg_source_LP ); % filter
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);
% 涉及三个滤波器,固含有三个滤波器延迟累加。
figure(9)
plot(rcos_msg_source_MF_option,'-*')
title('时域波形')
%%% 判决
msg_source_MF_option_sign = sign(rcos_msg_source_MF_option);
aaa = 1; % 调试断点
%%%%%% 译码器
%%% 帧信息送入译码器
msg_source_frame = msg_source_MF_option_sign(41:40+15*100);
% 取中间一段进行译码
aaa = 1; % 调试断点
%%% 数据类型转换
msg_source_frame_bi = (msg_source_frame + 1)/2;
% 二进制转换
msg_source_reshape = reshape(msg_source_frame_bi,15,length(msg_source_frame_bi)/15);
msg_source_frame_gf = gf(msg_source_reshape');
% 转换为伽罗华域
%%% BCH译码
msg_source_decode = bchdec(msg_source_frame_gf, bch_n, bch_k);
aaa = 1; % 调试断点
%%% 并串转换
msg_source_decode_s = reshape( msg_source_decode', 1, []);
%%% 伽罗华域转换为十进制数
msg_source_decode_dec = ones(1,length(msg_source_decode_s));
for i=1:length(msg_source_decode_s)
if msg_source_decode_s(i)==0
msg_source_decode_dec(i) = 0;
else
msg_source_decode_dec(i) = 1;
end
end
%%%%% 信宿 %%%%%%
%%% 误码性能比对
% [err_number,bit_err_ratio] = biterr(x,y) % 函数示例
% 无编解码状态下误码性能比对
% [err_number1,bit_err_ratio1] = biterr();
% 编解码状态下误码性能比对
[err_number2,bit_err_ratio2] = biterr(msg_source(1:length(msg_source_decode_dec)),msg_source_decode_dec);
aaa = 1; % 调试断点
%%%% 仿真结果 %%%%%
%%% 误码性能数据
%%% 图形显示
% semilogy
%%%%% 结论 %%%%%
% 完成了BPSK编码调制解调器的仿真,程序仿真结果正确。
% 注意shape函数的用法,按列进行数据排序。
% 所以需要进行多次矩阵转置。
% 2017-1-9
% 优化程序语句。进行有无编解码状态下误码性能比对。
% 2017-1-13
未完,待续!
20181107记录:
最近越来越感到需要在微信里面做“减法”。因为和很多人进行微信交流,发现非常的不通畅。很多人经常不回你的微信(包括学生、朋友)。遇到这种现象会让人觉得交流很困难。与其交流困难,那么就不交流吧。避免双方都烦恼。早年在企业担任领导职务的时候,总是在回到老家的时候到一位初中同学那买烟。从来没有要过发票。也算是一种帮忙吧。结果人家赞赏我文章一块钱还要在微信里面给我特地留言:我赞赏了哦。以前每年回家都是我组织同学聚会,至少请大家吃好喝好,但别人不领你的情,自然也就很难交往了。这样类似的初高中同学有好几个。既然不同路,那就散了。还有个初中同学李某某更搞笑,带着情人来南京买车,没钱找我借。我认为初中同学怎么会骗我呢?而且他说第二天就还。于是我用信用卡帮他付了四万块。结果鸟无音讯了。那几日把我给郁闷的不行。他来南京,我好吃好喝的招待,结果人家这么对你。这就是所谓的同学情?还好隔了一个月把钱还给我了,但搞得我信用卡逾期。这样的同学少见,但确实有。请擦亮你的眼!!!
社会就是这么千姿百态,同学们进入社会请多留一份心眼。坏人脸上不会写坏字。其实大学校园里面也有类似的学生,我在课堂上就遇到好几个,怎么办?只能采用不理睬策略,也没办法管。
坚持教学,不断努力传播知识!
其他事莫问!问了也没用!
修订记录
20181109 完成初稿;
20221202 修订内容v2;
-
通信网络
+关注
关注
21文章
2028浏览量
51971
原文标题:计算机通信与网络v2 实验课程(18)
文章出处:【微信号:gh_30373fc74387,微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论