繼續講解!上堂課留了兩個問題給同學們。不知道同學們有沒有在課后查找資料!無思考,無進步!那滾降成型濾波器到底如何使用呢?什么是EbNo呢?先看看百度怎么講的?數字信號在傳輸過程中受到疊加干擾與噪聲,從而出現波形失真。1928年,瑞典科學家奈奎斯特為解決電報傳輸問題提出了數字波形在無噪聲線性信道上傳輸時的無失真條件,稱為奈奎斯特準則。其中奈奎斯特第一準則是抽樣點無失真準則,是關于接收機不產生碼間串擾的接收脈沖形狀問題。對于基帶傳輸系統,要達到上述目的,系統傳輸函數 H(f) 是單邊帶寬為1/2T的矩形函數(理想奈奎斯特濾波器),其時域波形為 h(t)=sinc(t/T),稱為理想奈奎斯特脈沖成形。理想奈奎斯特濾波系統的傳輸函數形狀為矩形,其脈沖響應為無限長,顯然該脈沖成形濾波器在物理上是不可實現的,只能近似,稱為奈奎斯特濾波器和奈奎斯特脈沖。奈奎斯特濾波器的頻率傳輸函數可以表示為矩形函數和任意一個實偶對稱頻率函數的卷積;奈奎斯特脈沖可以表示為 sinc(t/T) 函數與另一個時間函數的乘積。脈沖成形就是一種濾波。數字通信系統的信號都必須在一定的頻帶內,但是基帶脈沖信號的頻譜是一個Sa函數,在頻帶上是無限寬的,那么單個符號的脈沖將會延伸到相鄰符號碼元內產生碼間串擾,這樣就會干擾到其他信號,這是不允許的。為了消除干擾,信號在發射之前要進行脈沖成形濾波,把信號的頻譜約束在帶內,這樣就不會和其他信號產生沖突。
在MATLAB中,涉及升余弦濾波器的函數有很多:rcosflt?使用升余弦濾波器對輸入信號進行濾波,rcosine設計升余弦濾波器,rcosiir?設計升余弦IIR濾波器,firrcos?升余弦濾波器設計。它們大部分已經逐漸被拋棄(新版本的MATLAB將逐漸的不再使用這些函數,但是會因為兼容性的歷史原因被保留)。建議使用新函數來替代!下堂課再講EbNo的相關內容。
先來看看有編碼的BPSK程序是什么樣子?
%%% BPSK調制解調器誤碼性能仿真程序 %%%
%%%% code_BPSK_modem_sim1.m %%%
%% date: 2016-01-05 author: 算法工匠 %%
%%%%% 程序說明
% 完成BPSK調制解調器的仿真,含有編解碼。
% 比較不同信噪比下的誤碼性能。
% 通信體制具體內容如下:
% 調制方式:BPSK 編碼方式:bch
% 滾降因子:0.5
% 解調方式:相干解調 譯碼方式:時域譯碼
% 噪聲:加性高斯白噪聲中頻信號仿真
%%% 仿真環境
% 軟件版本:matlab 2015b
% 有些函數已經不用,但程序依舊正常運行。
%%% sim系列說明之處
%
clear all;
close all;
format long;
%%************* 程序主體 *************%%
%%%%%% 系統參數 %%%%%
bit_rate = 1000;
symbol_rate = 1000;
fre_sample = 16000;
symbol_sample_rate = 16; % 一個符號內的采樣倍數
fre_carrier = 4000;
%%%%%%%% 信源 %%%%%%%
%%% 幀信息
% msg_source = randint(1,1000);
msg_source = randint(1,960); % 隨機信號
% 通常幀頭會采用擴頻序列,為了方便調試,可以采用全1和全0。
% randint函數需要用randi函數來替換。
%%% 幀頭
frame_head = [ones(1,20) zeros(1,20)];
%%%%%%% 發射 %%%%%%
%%%%%% 編碼器
%%% BCH編碼
bch_m = 4;
bch_n = 2^bch_m-1;
% Codeword length
bch_k = 5;
% Message length
nwords = 10;
% Number of words to encode
%%% 函數應用示例
% rand_msg = randi([0 1], nwords, bch_k);
% msg = gf(rand_msg);
% msg_code = bchenc( msg, bch_n, bch_k);
% Encode the message
%%% 串并轉換
msg_source_reshape = reshape(msg_source,5,length(msg_source)/5);
msg_source_gf = gf(msg_source_reshape');
msg_source_code = bchenc(msg_source_gf, bch_n, bch_k);
% Encode the message
% 只對幀內容進行編碼
%%% 并串轉換
msg_source_code_s = reshape( msg_source_code', 1, []);
%%% 伽羅華域轉換為十進制數
msg_source_code_dec = ones(1,length(msg_source_code_s));
for i=1:length(msg_source_code_s)
if msg_source_code_s(i)==0
msg_source_code_dec(i) = 0;
else
msg_source_code_dec(i) = 1;
end
end
%%%%%% 組幀
frame_msg_code = [frame_head msg_source_code_dec];
%%%%%%%% 調制器
%%% 雙極性變換
bipolar_msg_source = 2*frame_msg_code - 1;
%%% 濾波器
% rcosflt 滾降成型濾波函數
rcos_msg_source = rcosflt(bipolar_msg_source,1000,16000);
% Rolloff factor=0.5。
%建議替換!可以使用rcosine和filter兩個函數來替換!
% 時域頻域觀察
fft_rcos_msg_source = abs(fft(rcos_msg_source));
figure(1)
plot(rcos_msg_source)
title('時域波形')
figure(2)
plot(fft_rcos_msg_source)
title('頻域波形')
aaa = 1; % 調試斷點
%%% 載波發送
time =[1:length(rcos_msg_source)];
rcos_msg_source_carrier = rcos_msg_source'.*cos(2*pi*fre_carrier.*time/fre_sample);
% 時域頻域觀察
fft_rcos_msg_source_carrier = abs(fft(rcos_msg_source_carrier));
figure(3)
plot(rcos_msg_source_carrier)
title('時域波形')
figure(4)
plot(fft_rcos_msg_source_carrier)
title('頻域波形')
aaa = 1; % 調試斷點
%%%%%%%% 信道 %%%%%%%%
% 設置信噪比
snr = 10; % 不是比特信噪比哦!!!
%%% 高斯白噪聲信道
rcos_msg_source_carrier_noise = awgn(rcos_msg_source_carrier,snr,'measured');
%%% 瑞利信道(暫不考慮)
接收機部分會是什么樣子呢?下節課繼續講解。真正的干貨啊!如何來理解滾降因子的差異呢?BCH編解碼的概念有嗎?再提出一個問題:什么是蒙特卡洛測試?為什么要仿真這么長的信號呢?難道是巧合?建議大家去看《什么是誤碼率》系列文章!如果你想在通信專業領域發展,“誤碼率”這座山必須爬過去!

知識進階之路!對于通信專業的學生,仿真入門很重要!這應該是在大學時期做的事情。多寫代碼是最好的晉級方式。
未完,待續!
20181106記錄:
金庸走了,江湖再見。有種莫名的失落。小學生的時候就拜讀了您的作品,被深深吸引。那時沒敢貪讀,現在也許該重新看看了。
上次有同感是在錢學森院士走的時候。這次查老走了,也是此種感覺!大師就是大師,人走了,影響力還在。時光一去不復返,作品會不斷的影響一代又一代。
附上另一位浙江大師級人物圓寂時的照片。弘一法師(李叔同)為律宗大師。每個人離開世間的方式都不一樣,希望所有人都能沒有痛苦安詳離開。此刻又想到了我的董老師,愿痛苦遠離她。
修訂記錄
20181107 完成初稿;
20221130 修訂內容v2;
原文標題:計算機通信與網絡v2 實驗課程(17)
文章出處:【微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
-
通信網絡
+關注
關注
21文章
2074瀏覽量
52783
原文標題:計算機通信與網絡v2 實驗課程(17)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
微軟OmniParser V2:大模型轉化為計算機智能體
微軟OmniParser V2發布:大模型轉化為計算機智能體
BU-67121W實驗室航空電子接口計算機North Hills
工業中使用哪種計算機?

評論