1. 程式人生 > >Matlab模擬多徑通道瑞利衰落

Matlab模擬多徑通道瑞利衰落

%主函式
%兩徑瑞利衰落通道模擬
%設定預設引數
NN=256; %傳輸符號個數
tb=0.5; %一個位元時間
fs=10; %每符號取樣數
ebn0db=[1:2:15];%設定Eb/N0

%建立QPSK訊號
x=random_binary(NN,fs)+i*random_binary(NN,fs); %x為QPSK訊號

%輸入功率和延遲
p0=0; %視距LOS分量
p1=20; %第一路徑分量
p2=1; %第二路徑分量
delay=1; %按照每符號取樣數決定的延遲
delay0=0;
delay1=0;
delay2=delay;

%設定復高斯(瑞利)衰減
gain1=sqrt(p1)abs(randn(1,NN)+i

randn(1,NN));
gain2=sqrt(p2)abs(randn(1,NN)+irandn(1,NN));
for k=1:NN
for kk=1:fs
index=(k-1)*fs+kk;
ggain1(1,index)=gain1(1,k);
ggain2(1,index)=gain2(1,k);
end
end
y1=x;
for k=1:delay2
y2(1,k)=y1(1,k)sqrt(p0);
end
for k=(delay2+1):(NN
fs)
y2(1,k)=y1(1,k)*sqrt(p0)+y1(1,k-delay1)*ggain1(1,k)+y1(1,k-delay2)*ggain2(1,k);
end

%匹配濾波器
b=-ones(1,fs);
b=b/fs;
a=1;
y=filter(b,a,y2);

[cor lags]=vxcorr(x,y);
cmax=max(max(abs(cor)));
nmax=find(abs(cor)==cmax);
timelag=lags(nmax);
corrmag=cmax;
theta=angle(cor(nmax));
y=yexp(-itheta);

%噪聲BW校準
hh=impz(b,a); ts=1/16; nbw=(fs/2)sum(hh.^2);
index=(10
fs+8:fs:(NN-10)fs+8);
xx=x(index);
yy=y(index-timelag+1);
[n1 n2]=size(y2);ny2=n1

n2;
eb=tbsum(sum(abs(y2).^2))/ny2;
eb=eb/2;
[peideal,pesystem]=qpsk_berest(xx,yy,ebn0db,eb,tb,nbw);
figure
semilogy(ebn0db,peideal,'b
-’,ebn0db,pesystem,‘r±’)
xlabel(‘Eb/N0(db)’);ylabel(‘Probability of Error’);
grid on
axis([0 14 10^(-10) 1]);

模擬結果:
在這裡插入圖片描述
需要呼叫的相關函式:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述