MATLAB 數字基帶信號的傳輸

最近需要使用MATLAB構造一個psk信號,因此碰上了成型濾波這個概念。比較苦惱,大學的時候沒有認真學習數字信號和通信原理,唯一的途徑是百度,這裏分享一下我的理解

主要用到了兩個函數:rcosdesign、upfirdn

rrcFilter = rcosdesign(beta,span,sps,shape)
beta: 餘弦滾降係數
span: 濾波器包含的符號數
sps: 每個符號所含的採樣點數
shape: 用於選擇(升餘弦,平方根升餘弦)
rrcFilter: 濾波器係數,這個函數就是濾波器的設計

txSig = upfirdn(modData, rrcFilter, sps);
modData: 輸入信號
rrcFilter: 剛剛設計好的濾波器係數
sps: 單個符號採樣點數

下面用MATLAB進行了一個簡單的仿真,代碼來源於官網
4psk的基帶傳輸(在基帶上的調製與解調,包含發送和接收兩部分)

clear;close;clc;
%MATLAB數字基帶信號的傳輸

%成型濾波器
rolloff = 0.25; % 升餘弦滾降係數
span = 6;       % 抽頭的個數,影響濾波器的階數
sps = 10;        % 每個符號的採樣點,即輸出信號的採樣率是 符號率*sps
rrcFilter = rcosdesign(rolloff, span, sps);%升餘弦濾波器的係數,輸入採樣率1Hz,輸出1*spsHz

%psk映射
M = 4;          % psk進制數
k = log2(M);    % 每個符號所含比特數
data_Bd=10000; %符號率
data_t=1;
data = randi([0 M-1], data_Bd*data_t, 1);%1s的符號
modData = pskmod(data, M, pi/4);

%成型濾波,每個符號的採樣點爲sps
txSig = upfirdn(modData, rrcFilter, sps);%爲基帶發送信號,採樣率爲1k*sps

%通過一個awgn信道
EbNo = 7;
snr = EbNo + 10*log10(k) - 10*log10(sps);
rxSig = awgn(txSig, snr, 'measured');

%接收端的處理
rxFilt = upfirdn(rxSig, rrcFilter, 1, sps);%匹配濾波
rxFilt = rxFilt(span+1:end-span);
hScatter = scatterplot(sqrt(sps)*rxSig(1:sps*500),sps,0,'g.');%此處的sps是抽取的意思,每次打印第sps個點
hold on
scatterplot(rxFilt(1:500),1,0,'kx',hScatter)
title('Received Signal, Before and After Filtering')
legend('Before Filtering','After Filtering')
axis([-3 3 -3 3]) 
hold off

data_receive=pskdemod(rxFilt, M, pi/4);%與發送的data相同

接收的信號星座圖(匹配濾波前後對比)
在這裏插入圖片描述
data_receive與data一致;

總結:這個程序可以理解爲:基帶產生一個1秒的4psk數字信號,符號率爲10k,經過成型濾波後的信號採樣率爲100k,直接發送,在信道中接收後,經過匹配濾波,就是之前發送的4psk信號;

此處我仍然存在的疑問是:如果我要採用頻帶傳輸,把信號加載到100M的載波上,應該如何添加呢?我基帶產生的是複數數據,如何去調製載波?

頭大.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章