繼續講解!什么是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;
原文標題:計算機通信與網絡v2 實驗課程(18)
文章出處:【微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
-
通信網絡
+關注
關注
21文章
2074瀏覽量
52783
原文標題:計算機通信與網絡v2 實驗課程(18)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
微軟OmniParser V2:大模型轉化為計算機智能體
微軟OmniParser V2發布:大模型轉化為計算機智能體
BU-67121W實驗室航空電子接口計算機North Hills
工業中使用哪種計算機?

評論