?? yufengcx.m
字號:
%信源為雙極性不歸零碼(NRZ),取樣點數(shù)自己定義 。。。。。QPSK
global dt df t f N T %定義全局變量
close all %關閉以前的應用窗口
clear Eb_N0 Pe
k=input('取樣點數(shù)=2^k, k=[13]'); %采樣點數(shù)自定義,默認為2^13
if k==[], k=13; end
N=2^k; %總的取樣點數(shù)
L=32; %L為每個碼元的取樣點數(shù)
M=N/L; %M碼元總數(shù)
Rb=2; %碼元速率Rb=2Mb/s
Ts=1/Rb; %碼元寬度Ts
dt=Ts/L; %時域取樣間隔
df=1/(N*dt);%頻域取樣間隔
T=N*dt; %時間截斷長度
Bs=N*df/2; %帶寬
Na=2; %示波器掃描寬度為2個碼元
alpha=0; %升余弦滾降系數(shù)
t=linspace(-T/2,T/2,N); %頻域橫坐標
f=linspace(-Bs,Bs,N)+eps;%時域橫坐標
%升余弦
hr1=sin(pi*t/Ts)./(pi*t/Ts);
hr2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
hr=hr1.*hr2;
HR=abs(t2f(hr));
GT=sqrt(HR);
GR=GT;
figure(1)
set(1,'Position',[10,250,500,400])
%設定窗口位置及大小
figure(2)
set(2,'Position',[515,250,500,400])
%設定窗口位置及大小
figure(3)
set(3,'Position',[200,10,500,400])
%設定窗口位置及大小
%。。。。。。。。。。。。。。兩個載波
A=1;
fc=5/Ts;
m=A*cos(2*pi*fc*t);
n=-A*sin(2*pi*fc*t);
EP=zeros(size(f)); %發(fā)送功率譜
EPa=zeros(size(f));
EPt=zeros(size(f));
for loop1=1:15 %誤碼率曲線
Eb_N0(loop1)=2*(loop1-1); %Eb/N0 in dB
eb_n0(loop1)=10^(Eb_N0(loop1)/10);
Eb=0.25;
n0=Eb/(eb_n0(loop1)); %信道的噪聲譜密度
sita=n0*Bs; %信道中噪聲功率
n_err=0; %誤碼計數(shù)
for loop2=1:5
a=sign(randn(1,M)); %產(chǎn)生隨機碼
i=zeros(1,M); %串并轉(zhuǎn)換
q=zeros(1,M);
y0=zeros(1,M);
s=zeros(1,N);
I=zeros(1,N);
Q=zeros(1,N);
y=zeros(1,N);
for nn=1:M/2
i(2*nn-1)=a(2*nn);
q(2*nn-1)=a(2*nn-1);
i(2*nn)=i(2*nn-1);
q(2*nn)=q(2*nn-1);
end;
for ii=1:Ts/dt;
s(ii+[0:M-1]*L)=a; %將信源變成不歸零碼
I(ii+[0:M-1]*L)=i;
Q(ii+[0:M-1]*L)=q;
end
S=t2f(s); %信源信號的傅式變換
P=S.*conj(S)/T;
EP=(EP*(loop1-1)+P)/loop1; %發(fā)送功率譜
Ia=I.*m; %兩路分別調(diào)制
Qa=Q.*n;
st=Ia+Qa; %并串轉(zhuǎn)換
ST=t2f(st); %信源信號的傅式變換
PT=ST.*conj(ST)/T;
EPt=(EPt*(loop1-1)+PT)/loop1; %發(fā)送功率譜
n_ch=sqrt(sita)*randn(size(t)); %信道噪聲
st=st+n_ch; %加噪聲
Iaa=st.*m; %對兩路信號分別解調(diào)
Qaa=st.*n;
Ir=real(f2t(t2f(Iaa).*GR)); %分別通過濾波器
Qr=real(f2t(t2f(Qaa).*GR));
%sr=Ir+Qr;
yi=Ir(L/2:L:N); %抽樣判決
yq=Qr(L/2:L:N);
yi=sign(yi);
yq=sign(yq);
bc=ones(1,L); %定義復制的次數(shù)
yii=yi(bc,:); %將a的第一行復制L次,生成L*M矩陣
ei=reshape(yii,1,L*M); %將c重排成1*L*M數(shù)組
yqq=yq(bc,:); %將a的第一行復制L次,生成L*M矩陣
eq=reshape(yqq,1,L*M); %將c重排成1*L*M數(shù)組
for nn=1:M/2 %并串轉(zhuǎn)換
y0(2*nn)=yi(2*nn);
y0(2*nn-1)=yq(2*nn-1);
end;
for ii=1:L;
y(ii+[0:M-1]*L)=y0; %變成不歸零碼
end
n_err=n_err+length(find(y0~=a));
end
Pe(loop1)=n_err/(M*loop2);
Y=t2f(y); %信源信號的傅式變換
Pa=Y.*conj(Y)/T; %發(fā)送功率譜
EPa=(EPa*(loop1-1)+Pa)/loop1;
end
figure(1)
subplot(2,2,1)
plot(t,s,'r');
axis([-T/16,T/16,min(s)-0.5,max(s)+0.5])
xlabel('t (ms)');
ylabel('s (V/KHz)');
title('雙極性不歸零碼信號波形');
subplot(2,2,2)
bb=30+10*log10(EP+eps);
plot(f,bb,'g')
axis([-20,20,-20,max(bb)+0.5])
grid
xlabel('f(Mhz)');
ylabel('Ps(f) (dBm/MHz)');
title('信源功率譜密度圖形');
subplot(2,2,3)
plot(t,y,'b');
axis([-T/16,T/16,min(y)-0.5,max(y)+0.5])
xlabel('t (ms)');
ylabel('y (V/KHz)');
title('輸出信號波形');
subplot(2,2,4)
bb=30+10*log10(EPa+eps);
plot(f,bb,'g')
axis([-20,20,-20,max(bb)+0.5])
grid
xlabel('f(Mhz)');
ylabel('Pa(f) (dBm/MHz)');
title('輸出功率譜密度圖形');
figure(2)
subplot(2,3,1)
plot(t,Ia,'b');
axis([-T/256,T/256,min(Ia)-0.5,max(Ia)+0.5])
xlabel('t (ms)');
ylabel('Ia (V/KHz)');
title('并聯(lián)調(diào)制信號波形(I)路');
subplot(2,3,2)
plot(t,Ir,'b');
axis([-T/16,T/16,min(Ir)-0.5,max(Ir)+0.5])
xlabel('t (ms)');
ylabel('Ir (V/KHz)');
title('解調(diào)信號波形(I)路');
subplot(2,3,3)
tt=[0:dt:Na*L*dt];
hold on
for jj=1:Na*L:N-Na*L
plot(tt,Ir(jj:jj+Na*L));
end
title('解調(diào)信號波形眼圖(I)路');
subplot(2,3,4)
plot(t,Qa,'b');
axis([-T/256,T/256,min(Qa)-0.5,max(Qa)+0.5])
xlabel('t (ms)');
ylabel('Qa (V/KHz)');
title('并聯(lián)調(diào)制信號波形(Q)路');
subplot(2,3,5)
plot(t,Qr,'b');
axis([-T/16,T/16,min(Qr)-0.5,max(Qr)+0.5])
xlabel('t (ms)');
ylabel('Qr (V/KHz)');
title('解調(diào)信號波形(Q)路');
subplot(2,3,6)
tt=[0:dt:Na*L*dt];
hold on
for jj=1:Na*L:N-Na*L
plot(tt,Qr(jj:jj+Na*L));
end
title('解調(diào)信號波形眼圖(Q)路');
figure(3)
subplot(2,2,1)
plot(t,st,'b');
axis([-T/256,T/256,min(st)-0.5,max(st)+0.5])
xlabel('t (ms)');
ylabel('st (V/KHz)');
title('調(diào)制信號波形');
subplot(2,2,2)
plot(t,ei,'b');
axis([-T/16,T/16,min(ei)-0.5,max(ei)+0.5])
xlabel('t (ms)');
ylabel('ei (V/KHz)');
title('判決輸出信號波形');
subplot(2,2,3)
bb=30+10*log10(EPt+eps);
plot(f,bb,'g')
axis([-20,20,-20,max(bb)+0.5])
grid
xlabel('f(Mhz)');
ylabel('Pt(f) (dBm/MHz)');
title('調(diào)制信號功率譜密度圖形');
subplot(2,2,4)
semilogy(Eb_N0,Pe,'g');
eb_n0=10.^(Eb_N0/10);
hold on
plot(Eb_N0,0.5*erfc(sqrt(eb_n0)));
axis([0,14,1e-4,1])
xlabel('Eb/N0')
ylabel('Pe')
title('誤碼率曲線')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -