matlab多径瑞利衰落信道,Matlab仿真多径信道瑞利衰落

Matlab仿真多径信道瑞利衰落

发布时间:2018-12-13 13:07,

浏览次数:704

, 标签:

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)+irandn(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):(NNfs)

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=(10fs+8:fs:(NN-10)fs+8);

xx=x(index);

yy=y(index-timelag+1);

[n1 n2]=size(y2);ny2=n1n2;

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]);

仿真结果:

需要调用的相关函数:

你可能感兴趣的:(matlab多径瑞利衰落信道)