【通信原理】【实验】实验二:数字基带传输实验(GZHU)
文章目錄
實驗二:數字基帶傳輸實驗
(a) 固定時延delay=3,討論滾降系數α=0.25,0.5,0.75三者的區別;
更改不同的delay(時延)和alpha(滾降系數)
使用conv()函數脈沖成型輸出的是時域上的波形
之后使用fft();傅里葉變換,在取絕對值abs()后得到的是頻域上的波形;因為fft后的結果是復數,復數沒法作圖,所以一般會用模(復數的絕對值),實部或幅角這些實數作圖。所有要加上絕對值;
(a) 發送端脈沖成型后的時域波形和頻域波形;
發送端脈沖成型是在平方根升余弦之后使用conv()函數,得到時間域波形,fft()函數得到頻域上波形;
(b) 接收端匹配接收后的時域波形和頻域波形;
接受端也是使用升余弦函數繼續脈沖成型;
不過信號是使用傳輸信號(含有高斯白噪聲的);當經過conv()函數就是脈沖成型;
? 發送和接收的信號波形對比度;
當經過抽樣判決的時候得到
畫出接收端抽樣判決之后得到的序列 Rect_M與發送端發送的序列 D_x 的波形,兩者對比。
(d) 數字基帶傳輸的誤碼率
% 計算誤碼率 都是矩形波比較D_x和Rect_M erro = 0; for i =1:N if Rect_M(i) ~= D_x(i) erro = erro + 1; end end error_lv = erro/N;接收端誤碼率就是統計原始雙極性碼與和恢復出來的碼元之間錯誤碼元的占比;
實驗性代碼,沒有怎么整理,錯誤難免!??垂佥p批!
clear; clc; N = 1000; x = randi([0,1], 1, N); % 隨機生成0或者1 D_x = 2 * x - 1 ; % 雙極性碼型 Rect_p = ones(1,8); % 擴采樣 %subplot(2, 1 ,1); %stem(D_x);axis([0 200 -1 1]);title("原始波形"); x_p = kron(D_x,Rect_p); % 擴充8倍 后有解釋%subplot(2,1,1); %stem(D_x); %title("原始波形雙極性碼");axis([0 200 -1 1]); %subplot(2, 1 ,2); %stem(x_p);axis([0 200 -1 1]);title("擴采樣波形"); fb=1000; %發送端符號速率 fs=8000; %濾波器采樣頻率 oversamp=fs/fb; %過采樣率 delay = 5 ; %濾波器時延 alpha = 0.25; %滾降系數 erro=0; S_N =-5; % 信噪比-10 -5 0 5 10 h_sqrt = rcosine (1, oversamp, 'fir/sqrt', alpha, delay); % %平方根升余弦濾波器 (發送端) % 發送端時域上的波形 sendsignal_oversample=kron(D_x, [1, zeros(1, oversamp-1)]); sendshaped=conv(sendsignal_oversample, h_sqrt); % 發送端脈沖成型 figure('name','發送端脈沖成型') subplot(2,1,1); stem(sendshaped); title("時域");axis([0 200 -1 1]); f_x = fft(sendshaped,N); y = abs(f_x); subplot(2,1,2); plot(y); title("頻域"); % 高斯白噪聲 x_n = awgn(sendshaped, 10, 'measured', 'db'); % 添加高斯白噪聲 % 加噪聲后頻域上的波形 % figure('name','添加高斯白噪聲后') % 畫子圖,第一個 %%subplot(2, 1, 1); %stem(sendsignal_oversample);axis([100 500 -10 15]);title("S/N:-10 接收端時間域波形"); %stem(noi_s);axis([0 200 -1 1]);title("發送端波形"); res = conv(x_n,h_sqrt); % 接收端脈沖成型 figure('name','接收端時域和頻域'); subplot(2, 1, 1); stem(res);title('時域:');axis([0 100 -3 3]); res1 = fft(res,N); r_ = abs(res1); % 傅里葉變換后取絕對值 subplot(2, 1, 2); plot(r_);title('頻域:');%axis([0 100 -7 7]); % 接收端同步,抽樣 % 抽樣判決 兩個時延*擴采樣 SynPosi = delay * oversamp * 2 + 1 ; SymPosi = SynPosi + (0:oversamp:(N - 1 ) * oversamp ); res_s = res(SymPosi) % 接收信號 Rect_M = zeros(N); % 初始化一個列表,存放1/-1 for i = 1:N if res_s(i) >0 Rect_M(i)=1; elseif res_s(i) <0 Rect_M(i)=-1; end end figure('name','接受端抽樣判決'); subplot(2,1,1); stem(Rect_M);axis([0 200 -2 2]); title("S_N=10 判決后波形匹配"); subplot(2,1,2); stem(D_x); title("原始波形雙極性碼");axis([0 200 -2 2]); % 計算誤碼率 都是矩形波比較D_x和Rect_M erro = 0; for i =1:N if Rect_M(i) ~= D_x(i) erro = erro + 1; end end error_lv = erro/N;x_p = kron(D_x,Rect_p); % 擴充8倍 后有解釋
解釋:D_x :雙極性碼元
x_p :擴采樣之后的碼元
h_sqrt :平方根升余弦后的信號
sendshaped:發送端脈沖成型信號
x_n :發送端脈沖成型信號在信道傳輸的時候添加了高斯噪聲
res :接收端脈沖成型
SynPosi = delay * oversamp * 2 + 1 ; SymPosi = SynPosi + (0:oversamp:(N - 1 ) * oversamp ); 抽樣判決點
這里由于發送端和接收端都存在時延,所有delay要* 2之后乘上擴采樣倍數,選擇合適的采樣點;之后每隔擴采樣點采樣一次
(0:oversamp:(N - 1 ) * oversamp )%意思是從0到(N - 1 ) * oversamp 每個oversamp個采樣點采樣一次
最后一個就是figure(s)運行一次出現多張畫布;所以對每個小題都建立一張畫布。subplot(2,1,1);意思是一張畫布中畫多個圖,這樣是生成兩行一列的圖,現在選擇第一行的圖畫;
plot()和stem()區別,前者是畫連續圖,后者是畫散點圖;
\
上述兩個細節看百度
總結
以上是生活随笔為你收集整理的【通信原理】【实验】实验二:数字基带传输实验(GZHU)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【tensorflow】 GPU 显存分
- 下一篇: 【通信原理】【实验】实验三: 数字调制解