主要用到了兩個函式: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
數字基帶傳輸系統 數字基帶訊號
數字基帶訊號是表示數字資訊的電波形,它可以用不同的電平或脈衝來表示。數字基帶訊號的型別有很多。這裡以矩形脈衝為例,介紹幾種基本的基帶訊號波形。這是一種最簡單的基帶訊號波形。它用正電平和零電平分別對應二進位制數字 1 和 0 或者說,在乙個碼元時間內用脈衝的有或無來表示 1 和 0 該波形的特點是電脈...
Matlab程式設計產生數字基帶訊號
今天要產生一串數字基帶訊號,可是到網上查了很多,沒有乙個解釋清楚和例程,後來通過查一些資料和論壇帖子終於程式設計產生出了數字基帶訊號,並且完成了後面的頻帶 第一種是只能畫圖,但不能做運算 第二種方法才是正確的方法,既能做出圖,又能用於運算 t 0 0.001 8 d 0 0 1 1 2 1 3 0 ...
基帶訊號與頻帶訊號
基帶訊號 baseband signal 信源 資訊源,也稱發終端 發出的沒有經過調製 進行頻譜搬移和變換 的原始電訊號,其特點是頻率較低,訊號頻譜從零頻附近開始,具有低通形式。根據原始電訊號的特徵,基帶訊號可分為數字基帶訊號和模擬基帶訊號 相應地,信源也分為數字信源和模擬信源。其由信源決定。說的通...