基带信号及其眼图MATLAB仿真实现,Matlab通信仿真——带限系统下的基带信号
Matlab通信仿真——帶限系統(tǒng)下的基帶信號
Matlab通信仿真——帶限系統(tǒng)下的基帶信號
1 余弦滾降特性
滿足消除碼間串擾條件的H(f)有很多種,容易想到的一種極限情況,就是H(f)為理想低通型。
圖1.1 理想低通濾波器公式
圖1.2 理想低通型濾波器傳輸特性
令人遺憾的是,這種濾波器特性在物理上是無法實現(xiàn)的。
為了解決理想低通特性存在的問題,可以使理想低通低通濾波器特性的邊緣緩慢下降,這稱為“滾降”。一種常用的滾降特性是余弦滾降特性,如圖1.3所示。一類常用的升余弦特性滾降的傳輸函數(shù)H(f)可表示為
(公式1.1)
其中α稱為滾降系數(shù),頻帶利用率為(公式1.2)
升余弦特性滾降系統(tǒng)的時域波形為(公式1.3)
圖1.3 余弦滾降特性
1.1 設(shè)計不同α的升余弦滾降系統(tǒng)頻譜
首先,完成初始化設(shè)置。設(shè)置碼元周期,抽樣、采樣間隔,并把三個不同的滾降系數(shù)α(α分別等于0、0.5、1)賦給alpha。
對應(yīng)代碼如下:
//
Ts=1;%碼元周期
N_sample=17;%每個碼元抽樣點數(shù)
dt=Ts/N_sample;%抽樣間隔
df=1.0/(20.0*Ts);
t=-10*Ts:dt:10*Ts;%設(shè)置采樣
f=-2/Ts:df:2/Ts;
alpha=[0,0.5,1];;
通過公式1.1,設(shè)計升余弦特性滾降系統(tǒng)的傳輸函數(shù)H(f)。利用for循環(huán)結(jié)構(gòu)完成分段函數(shù)的設(shè)計,共有兩次循環(huán),第一層循環(huán)為α的循環(huán),三個α對應(yīng)三行,輪流把三個α代入式中進行運算,結(jié)果存入Xf矩陣中的三行中,第二層循環(huán)為k的循環(huán),對應(yīng)了每個f的抽樣值,輪流代入式中進行運算,結(jié)果存入Xf矩陣中的每一列。
最終Xf(n,k)的結(jié)果共有三行,分別對應(yīng)三個α值的結(jié)果,如圖1.1.1。
圖1.1.1 Xf輸出結(jié)果
對應(yīng)代碼如下:
// for n=1:length(alpha)%三個滾降系數(shù)輪流顯示
for k=1:length(f)
if abs(f(k))>0.5*(1+alpha(n))/Ts
Xf(n,k)=0;
elseif abs(f(k))<0.5*(1-alpha(n))/Ts
Xf(n,k)=Ts;
else
Xf(n,k)=0.5*Ts*(1+cos(pi*Ts/(alpha(n)+eps)*(abs(f(k))-0.5*(1-alpha(n))/Ts)));
end
end
Xt(n,:)=sinc(t/Ts).*(cos(alpha(n)*pi*t/Ts))./(1-4*alpha(n)^2*t.^2/Ts^2+eps);%賦值給Xt的第n行
End;
注:1.形如A(i, :)=b表示把b存入矩陣A的第i行
1.2 設(shè)計不同α的升余弦滾降系統(tǒng)時域波形
通過公式1.3,設(shè)計升余弦特性滾降系統(tǒng)的時域波形Xt。同樣通過for循環(huán)完成三個不同α值得運算。共一層循環(huán),第一層循環(huán)為α的循環(huán),結(jié)果存入Xt矩陣中的三行,輸出結(jié)果如下圖1.2.1。
圖1.2.1 Xt輸出結(jié)果
對應(yīng)代碼如下:
// alpha=[0,0.5,1];%三個滾降系數(shù)
for n=1:length(alpha)%三個滾降系數(shù)輪流顯示
Xt(n,:)=sinc(t/Ts).*(cos(alpha(n)*pi*t/Ts))./(1-4*alpha(n)^2*t.^2/Ts^2+eps);%賦值給Xt的第n行
End;
注:1.
2.形如A+eps,表示離A最近的浮點數(shù)
2 眼圖
在實際生活中,我們使用簡便的實驗手段來定性評價系統(tǒng)的性能。
所謂眼圖,是指通過示波器觀察接收端的基帶信號波形,從而估計和調(diào)整系統(tǒng)性能的一種方法。這種方法的具體做法是:用一個示波器跨接在抽樣判決器的輸入端,然后調(diào)整示波器水平掃描周期,使其與接收碼元的周期同步。
此時可以從示波器顯示的波形上,觀察碼間干擾和信道噪聲等因素影響的情況,從而估計系統(tǒng)性能的優(yōu)劣程度。因為在傳輸二進制信號波形時,示波器顯示的波形很像人的眼睛,故名“眼圖”,如圖2.1。
圖2.1 眼圖的模型
通俗易懂的說,眼圖就是將每一個掃描周期調(diào)整到碼元周期,由于示波器的余輝作用,掃描得到的每一個碼元波形將重疊在一起,如果說沒有碼間干擾,如圖2.2(b)所示的線條會是細而清晰的大“眼睛”。對比圖2.2(b)和(d)可知,眼圖的“眼睛”張開越大,且眼圖越端正,表示碼間串擾越小;反之,表示碼間干擾越大。
圖2.2 基帶信號波形及眼圖
圖2.3 眼圖設(shè)計流程圖
2.1 雙極性碼元序列的產(chǎn)生
產(chǎn)生雙極性碼元序列的操作步驟如下:
(1)完成程序的初始化設(shè)置,定義碼元數(shù)、抽樣點數(shù)等。
(2)調(diào)用randn函數(shù),產(chǎn)生一個行數(shù)為1,列數(shù)為碼元數(shù)N_data的正態(tài)分布隨機 矩陣。
(3)調(diào)用sign函數(shù),判斷步驟(2)中產(chǎn)生的隨機矩陣的每個元素的正負號,賦 給d。
(4)定義并調(diào)用sigexpand函數(shù),對d進行擴張,每個間隔間加入N_sample個零, 賦值給xt,xt即為雙極性碼元序列,結(jié)果如圖2.1.1。
圖2.1.1 xt輸出結(jié)果
操作代碼如下:
// Ts=1;%碼元周期
N_sample=17;%每個碼元抽樣點數(shù)
N_data=1000;%碼元數(shù)
%產(chǎn)生雙極性數(shù)字信號
d=sign(randn(1,N_data));%randn隨機生成數(shù)字 sign函數(shù)進行一個判斷,判斷其正負
xt=sigexpand(d,N_sample);%對d進行擴張,每個間隔加入N_sample-1個零
%定義sigexpand函數(shù)
function[out]=sigexpand(d,M);
N=length(d);%基帶信號碼元長度
out=zeros(M,N);%矩陣M為采樣點 N為基帶信號碼元數(shù)量,建立M*N的零矩陣
out(1,:)=d;%將零矩陣第一行換成基帶信號中的8個碼元
out=reshape(out,1,M*N);% 1行 m*n 列
%B = reshape(A,m,n) 返回一個m*n的矩陣B, B中元素是按列從A中得到的。如 果A中元素個數(shù)沒有m*n個, 則會引發(fā)錯誤。;
2.2碼元序列抽樣
設(shè)置抽樣時間間隔dt=Ts/N_sample,設(shè)置采樣,從-3Ts開始,到3Ts結(jié)束,步長為dt,t=-3Ts:dt:3Ts;
操作代碼如下:
//
dt=Ts/N_sample;%抽樣時間間隔
t=-3*Ts:dt:3*Ts;%設(shè)置采樣;
2.3 設(shè)置升余弦滾降系統(tǒng)
參考公式1.3,寫出升余弦滾降特性系統(tǒng)函數(shù)的表達式,輸出信號等于輸入信號與系統(tǒng)函數(shù)的卷積。
操作代碼如下:
// alpha=1;%滾降系數(shù)為1
%基帶系統(tǒng)沖擊響應(yīng)(升余弦)
ht=sinc(t/Ts).*(cos(alpha*pi*t/Ts))./(1-4*alpha^2*t.^2/Ts^2+eps);
st=conv(xt,ht);%卷積,輸出函數(shù)等于輸入函數(shù)與系統(tǒng)函數(shù)的卷積
tt=-3*Ts:dt:(N_data+3)*N_sample*dt-dt;%設(shè)置采樣;
注:
(1)帶.和./指矩陣中各個元素對應(yīng)相乘或相除
(2)sinc(t)=sin(pait)/(pai*t)
(3)形如A+eps,表示離A最近的浮點數(shù)
2.4繪制眼圖
繪制眼圖的步驟如下:
(1)定義眼圖長度,顯示8個“眼睛”。
(2)建立一個一行eye_num*N_sample列的零矩陣,定義采樣間隔
(3)通過循環(huán)k畫眼圖,將48個周期重疊在一起,利用drawnow和holdon函數(shù) 形成眼圖
操作代碼如下:
// eye_num=8;
N_sample=17;%每個碼元抽樣點數(shù)
subplot(2,2,2);
ss=zeros(1,eye_num*N_sample);%建立零矩陣
ttt=0:dt:eye_num*N_sample*dt-dt;%采樣間隔
for k=3:50
ss=st(k*N_sample+1:(k+eye_num)*N_sample);%st為輸出函數(shù)
drawnow;%將還未處理完的圖像實時的顯示出來,實時看到圖像的每一步變化情況
plot(ttt,ss);
hold on;%新畫圖像之后不想覆蓋原圖像
end
xlabel('t/Ts');
ylabel('基帶信號眼圖');
注:(1)ss=st(a:b)表示將st矩陣中[st(a),st(a+1)…st(b)]這些元素 存入ss中
四、結(jié)果分析
圖4.1 的升余弦滾降系統(tǒng)頻譜及其各自對應(yīng)的時域波形圖
由圖4.1可知,在頻譜中,α為0時,濾波器特性的邊緣垂直,α越大,邊緣傾斜程度越大。在時域中,α為0時,旁瓣最大,α越大,旁瓣越小。
圖4.2 接收端的基帶數(shù)字信號波形圖及其眼圖
所有的代碼如下:
代碼1
不同滾降系數(shù)的升余弦滾降系統(tǒng)頻譜及其各自對應(yīng)的時域波形:
// Ts=1;
N_sample=17;%每個碼元抽樣點數(shù)
dt=Ts/N_sample;%抽樣間隔
df=1.0/(20.0*Ts);
t=-10*Ts:dt:10*Ts;%設(shè)置采樣
f=-2/Ts:df:2/Ts;%
alpha=[0,0.5,1];%三個滾降系數(shù)
for n=1:length(alpha)%三個滾降系數(shù)輪流顯示
for k=1:length(f)
if abs(f(k))>0.5*(1+alpha(n))/Ts
Xf(n,k)=0;
elseif abs(f(k))<0.5*(1-alpha(n))/Ts
Xf(n,k)=Ts;
else
Xf(n,k)=0.5*Ts*(1+cos(pi*Ts/(alpha(n)+eps)*(abs(f(k))-0.5*(1-alpha(n))/Ts)));
end
end
Xt(n,:)=sinc(t/Ts).*(cos(alpha(n)*pi*t/Ts))./(1-4*alpha(n)^2*t.^2/Ts^2+eps);%賦值給Xt的第n行
end
figure(1)
subplot(2,2,1)
plot(t,Xt);
axis([-10 10 -0.5 1.1]);
xlabel('t');
ylabel('升余弦滾降波形');
subplot(2,2,2)
plot(f,Xf);
axis([-2 2 0 1.5]);
xlabel('f/Ts');
ylabel('升余弦滾降波形');
代碼二
若基帶傳輸系統(tǒng)響應(yīng)是的升余弦滾降系統(tǒng),畫出在接收端的基帶數(shù)字信號波形及其眼圖:
// clear all;
close all;
Ts=1;%碼元周期
N_sample=17;%每個碼元抽樣點數(shù)
eye_num=8;
alpha=1;%滾降系數(shù)為1
N_data=1000;%碼元數(shù)
dt=Ts/N_sample;%抽樣時間間隔
t=-3*Ts:dt:3*Ts;%設(shè)置采樣
%產(chǎn)生雙極性數(shù)字信號
d=sign(randn(1,N_data));%randn隨機生成數(shù)字 sign函數(shù)進行一個判斷,判斷其正負
xt=sigexpand(d,N_sample);%對d進行擴張,每個間隔加入N_sample-1個零
%基帶系統(tǒng)沖擊響應(yīng)(升余弦)
ht=sinc(t/Ts).*(cos(alpha*pi*t/Ts))./(1-4*alpha^2*t.^2/Ts^2+eps);%公式P149,帶.*和./指各個元素對應(yīng)相乘或相除,sinc(t)=sin(pai*t)/pai*t
st=conv(xt,ht);%卷積函數(shù)
tt=-3*Ts:dt:(N_data+3)*N_sample*dt-dt;%設(shè)置采樣
%基帶數(shù)字信號波形
figure(1)
subplot(2,2,1);
plot(tt,st);
axis([0 20 -1.2 1.2]);%橫坐標范圍,縱坐標范圍
xlabel('t/Ts');
ylabel('基帶信號');
%畫眼圖
subplot(2,2,2);
ss=zeros(1,eye_num*N_sample);%建立零矩陣
ttt=0:dt:eye_num*N_sample*dt-dt;%采樣間隔
for k=3:50
ss=st(k*N_sample+1:(k+eye_num)*N_sample);
drawnow;%將還未處理完的圖像實時的顯示出來,實時看到圖像的每一步變化情況
plot(ttt,ss);
hold on;%新畫圖像之后不想覆蓋原圖像
end
xlabel('t/Ts');
ylabel('基帶信號眼圖')
定義函數(shù)代碼如下:
function[out]=sigexpand(d,M);
N=length(d);%基帶信號碼元長度
out=zeros(M,N);%矩陣M為采樣點 N為基帶信號碼元數(shù)量,建立M*N的零矩陣
out(1,:)=d;%將零矩陣第一行換成基帶信號中的8個碼元
out=reshape(out,1,M*N);% 1行 m*n 列
%B = reshape(A,m,n) 返回一個m*n的矩陣B, B中元素是按列從A中得到的。如果A中元素個數(shù)沒有m*n個, 則會引發(fā)錯誤。;
總結(jié)
以上是生活随笔為你收集整理的基带信号及其眼图MATLAB仿真实现,Matlab通信仿真——带限系统下的基带信号的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 肯塔基大学计算机科学,2020年肯塔基大
- 下一篇: oracle 根据已有表创建新表