分集+均衡作业.docx

上传人:b****1 文档编号:2855411 上传时间:2023-05-04 格式:DOCX 页数:19 大小:55.50KB
下载 相关 举报
分集+均衡作业.docx_第1页
第1页 / 共19页
分集+均衡作业.docx_第2页
第2页 / 共19页
分集+均衡作业.docx_第3页
第3页 / 共19页
分集+均衡作业.docx_第4页
第4页 / 共19页
分集+均衡作业.docx_第5页
第5页 / 共19页
分集+均衡作业.docx_第6页
第6页 / 共19页
分集+均衡作业.docx_第7页
第7页 / 共19页
分集+均衡作业.docx_第8页
第8页 / 共19页
分集+均衡作业.docx_第9页
第9页 / 共19页
分集+均衡作业.docx_第10页
第10页 / 共19页
分集+均衡作业.docx_第11页
第11页 / 共19页
分集+均衡作业.docx_第12页
第12页 / 共19页
分集+均衡作业.docx_第13页
第13页 / 共19页
分集+均衡作业.docx_第14页
第14页 / 共19页
分集+均衡作业.docx_第15页
第15页 / 共19页
分集+均衡作业.docx_第16页
第16页 / 共19页
分集+均衡作业.docx_第17页
第17页 / 共19页
分集+均衡作业.docx_第18页
第18页 / 共19页
分集+均衡作业.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

分集+均衡作业.docx

《分集+均衡作业.docx》由会员分享,可在线阅读,更多相关《分集+均衡作业.docx(19页珍藏版)》请在冰点文库上搜索。

分集+均衡作业.docx

分集+均衡作业

《matlab分集+均衡》实验报告

姓名李聪

学号11211060

指导教师姚冬萍

时间2014年5月25日

 

分集matlab作业

现给出最大比合并(MRC)、等增益合并(EGC)和选择性合并的分集合并程序,理解各程序,完成以下习题。

将程序运行结果及各题目的解答写入word中:

1.用matlab分别运行“BPSKMRC.m”、“BPSKEGC.m”以及“BPSKSEL.m”

(a)在程序中标注“注释”处加上注释(英文或中文)

MRC

%bpsk.m

%SimulationprogramtorealizeBPSKtransmissionsystem

%********************Preparationpart**********************

nd=10000;%Numberofsymbolsthatsimulatesineachloop

snr_in_dB=[0:

15];

ber=zeros(1,length(snr_in_dB));

forsnr_num=1:

length(snr_in_dB)

SNR=exp(snr_in_dB(snr_num)*log(10)/10);

%********************STARTCALCULATION*********************

nloop=100;%Numberofsimulationloops

noe=0;%Numberoferrordata

nod=0;%Numberoftransmitteddata

foriii=1:

nloop

%********************Datageneration********************************

data1=rand(1,nd)>0.5;

data2=2.*data1-1;

%******************AttenuationCalculation*****************

%******************rayleighchannel*****************

code_rate=1;

E=1;

sigma=E/sqrt(2*SNR*code_rate);

n=[randn(1,nd)+j*randn(1,nd)];

h1=1/sqrt

(2)*[randn(1,nd)+j*randn(1,nd)];%Rayleighchannel

data41=data2.*h1+sigma.*n;

h11=conj(h1);%注释:

根据测得的信号幅度相位得到各支路加权系数

data411=data41.*h11;%注释:

将各个支路信号调整为同相信号

%*****************************************

n=[randn(1,nd)+j*randn(1,nd)];

h2=1/sqrt

(2)*[randn(1,nd)+j*randn(1,nd)];%Rayleighchannel

data42=data2.*h2+sigma.*n;

h22=conj(h2);

data422=data42.*h22;

%*****************************************

data4=data411+data422;%注释:

各个已调为同相信号支路作相关电压的叠加

%********************BPSKDemodulation*********************

demodata1=data4>0;

%********************BitErrorRate(BER)******************

noe2=sum(abs(data1-demodata1));

nod2=length(data1);

noe=noe+noe2;

nod=nod+nod2;

 

end

%**********************Outputresult***************************

ber(snr_num)=noe/nod

 

end;

%********************endoffile***************************

figure;

semilogy(snr_in_dB,ber,'O-');

holdon

semilogy(snr_in_dB,0.5*erfc(sqrt(2*10.^(snr_in_dB/10))/sqrt

(2)),'+-');

holdon

semilogy(snr_in_dB,0.5.*(1-sqrt((10.^(snr_in_dB/10))./(10.^(snr_in_dB/10)+1))),'-');

ylabel('BER');

xlabel('E_b/N_0[dB]');

legend('simulationBPSKMRCL=2','theorygngaussBPSK','theoryreyleigh');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

EGC

%bpsk.m

%SimulationprogramtorealizeBPSKtransmissionsystem

%********************Preparationpart**********************

nd=10000;%Numberofsymbolsthatsimulatesineachloop

snr_in_dB=[0:

15];

ber=zeros(1,length(snr_in_dB));

forsnr_num=1:

length(snr_in_dB)

SNR=exp(snr_in_dB(snr_num)*log(10)/10);

%********************STARTCALCULATION*********************

nloop=100;%Numberofsimulationloops

noe=0;%Numberoferrordata

nod=0;%Numberoftransmitteddata

foriii=1:

nloop

%********************Datageneration********************************

data1=rand(1,nd)>0.5;

data2=2.*data1-1;

%******************AttenuationCalculation*****************

%******************rayleighchannel*****************

code_rate=1;

E=1;

sigma=E/sqrt(2*SNR*code_rate);

n=[randn(1,nd)+j*randn(1,nd)];

h1=1/sqrt

(2)*[randn(1,nd)+j*randn(1,nd)];%Rayleighchannel

data41=data2.*h1+sigma.*n;

h11=conj(h1)./abs(h1);%注释:

得到各个支路等增益合并的加权系数

data411=data41.*h11;%注释:

将支路信号调整为同相信号

%*****************************************

n=[randn(1,nd)+j*randn(1,nd)];

h2=1/sqrt

(2)*[randn(1,nd)+j*randn(1,nd)];%Rayleighchannel

data42=data2.*h2+sigma.*n;

h22=conj(h2)./abs(h2);

data422=data42.*h22;

%*****************************************

data4=data411+data422;%注释:

各个已调为同相信号的支路作等增益合并

%********************BPSKDemodulation*********************

demodata1=data4>0;

%********************BitErrorRate(BER)******************

noe2=sum(abs(data1-demodata1));

nod2=length(data1);

noe=noe+noe2;

nod=nod+nod2;

end

%**********************Outputresult***************************

ber1(snr_num)=noe/nod

end;

%********************endoffile***************************

figure;

semilogy(snr_in_dB,ber1,'O-');

holdonsemilogy(snr_in_dB,0.5*erfc(sqrt(2*10.^(snr_in_dB/10))/sqrt

(2)),'+-');

holdonsemilogy(snr_in_dB,0.5.*(1-sqrt((10.^(snr_in_dB/10))./(10.^(snr_in_dB/10)+1))),'-');

ylabel('BER');

xlabel('E_b/N_0[dB]');

legend('simulationBPSKEGCL=2','theorygngaussBPSK','theoryreyleigh');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

SEL

%closeall;

%clearall;

%clc

snr_in_dB=0:

15;

fork=1:

length(snr_in_dB)

k

N=10000;

E=1;

SNR=10^(snr_in_dB(k)/10);

sigma=E/sqrt(2*SNR);

fori=1:

N

a=rand;

if(a<0.5)

data(i)=-1;

else

data(i)=1;

end

end

numofber=0;

totolnumber=0;

whilenumofber<1

totolnumber=totolnumber+1;

fori=1:

N

H1=1/sqrt

(2)*[rand+j*rand];%注释:

多径信道某一径的幅度和相位(多径信道某一径系数)

H2=1/sqrt

(2)*[rand+j*rand];%注释:

多径信道某一径的幅度和相位(多径信道某一径系数)

H=[H1;H2];

y1=H

(1)*data(i)+sigma*(rand+j*rand);%注释:

信号某一径分量

y2=H

(2)*data(i)+sigma*(rand+j*rand);%注释:

信号某一径分量

y=[abs(y1),abs(y2)];

s=max(y);%注释:

比较选择信噪比最大(指示参量最好)的一径

if(s==abs(y2))

s=y2/H2;%注释:

对信噪比最大的支路进行解调

else

s=y1/H1;%注释:

对信噪比最大的支路进行解调

end

data2=sign(real(s));

if(data2~=data(i))

numofber=numofber+1;%注释:

计算得到误比特数

end

end

end

p(k)=numofber/(N*totolnumber);%注释:

得到误比特率

end

figure;

semilogy(snr_in_dB,p,'O-');

holdon

semilogy(snr_in_dB,0.5*erfc(sqrt(2*10.^(snr_in_dB/10))/sqrt

(2)),'+-');

holdon

semilogy(snr_in_dB,0.5.*(1-sqrt((10.^(snr_in_dB/10))./(10.^(snr_in_dB/10)+1))),'-');

ylabel('BER');

xlabel('E_b/N_0[dB]');

legend('simulationBPSKSELL=2','theorygngaussBPSK','theoryreyleigh');

(b)观察信噪比变化10dB,误比特率变化多少?

EGC信噪比从0变化成10db时候,误比特率从0.067变成了0.002,误比特率下降了97.01%

SEL信噪比从0变化成10db时候,误比特率从0.1752变成了0.003,误比特率下降了98.29%

MRC信噪比从0变化成10db时候,误比特率从0.0576变成了0.0016,误比特率下降了97.22%

从这些数据中,我们可以看出,分集的性能是MRC>EGC>SEL,且MRC与SEL在相同信噪比下误码率相差不大;在增加信噪比的时候SEL有显著提升,而MRC,EGC误码率也有比较大的提升,且当信噪比为10db的时候三种分集性能差别不大,说明在信道环境比较好的情况下,三种分集误码率基本上差不多;此外,实验还说明了MRC和EGC比SEL更能适应低信噪比的环境下。

(c)程序中给出的是2分集,将其换为3分集,观察信噪比变化10dB,误比特率变化多少?

EGC信噪比从0变化成10db时候,误比特率从0.0331变成了2.19*10-4,误比特率下降了99.34%

SEL信噪比从0变化成10db时候,误比特率从0.1657变成了2.0*10-4,误比特率下降了99.88%

MRC信噪比从0变化成10db时候,误比特率从0.0251变成了1.27*10-4,误比特率下降了99.49%.

相对比之前的二分集来说,在0db(低信噪比的环境下)三分集的性能要比二分集误码率差不多,三种分集方式误码率有比较大的差别,MRC的误码率大概是SEL的15%左右,EGC大概是19.97%,说明MRC,EGC适合低信噪比环境下,并且此时增加分集支路数对误码率影响不大;在10db环境下,误码率有显著下降,且三种分集差别不是太大,数量级都是10-4,且是二分集的10%左右。

这些数据说明了,增加分集支路数在低信噪比的环境下对误码率的影响不大,此时分集方式是影响误码率的主要原因;而在高信噪比的条件下,分集方式对误码率影响不大,但是增加分集支路数能够很大程度改善瑞利信道下的误码率。

(d)将最大比合并和等增益合并及选择式合并的误比特率曲线,画在一张图上,比较这三种合并方法的优劣。

很显然,在低信噪比的环境下,MRC,EGC分集效果比SEL效果好得多,相对来说MRC和EGC差别不大,但是EGC实现起来要比MRC容易得多,因此在多数情况下使用EGC;在高信噪比的环境下,MRC,EGC,SEL分集误码率差别不大,但是当增加分集支路数,误码率则会很大程度地改善,由二分集到三分集误码率下降90%;此外我们可以看到,在信噪比增加的过程中,sel分集方式误码率出现了震荡,因此综合各个方面的因素来说,等增益合并EGC是相对来说比较好的一种选择。

 

均衡matlab

现给出迫零均衡(ZF)、最小均方误差均衡中的最小均方算法(LMS)的matlab程序,理解各程序,完成以下习题。

将程序运行结果及各题目的解答写入word中:

用matlab分别运行“main_zf.m”和“main_lms.m”

(1)在程序中标注“注释”处加上注释(英文或中文)。

迫零均衡:

M=1500;%码元数目

P=0.5;%1码概率

data=2*round(rand(1,M)+P-0.5)-1;%产生一列01码

h=[0.020.050.1-0.21-0.20.10.060.01];%归一化的多径信道系数h

r=conv(data,h);

%迫零均衡

N=5;

C=force_zero(h,N);

dataout=conv(r,C);%注释:

将多径信道输出的序列输入均衡器,得到均衡器输出序列

figure

(1)

subplot(2,2,1)

plot([1:

length(data)],data,'.')

title('发送信号序列')

subplot(2,2,2)

plot([1:

length(r)],r,'.')

title('多径信号序列')

subplot(2,2,3)

plot([1:

length(dataout)],dataout,'.')

title('均衡后的信号序列')

eyediagram(r,2);

title('迫零均衡前的眼图');

eyediagram(dataout,2);

title('迫零均衡后的眼图');%注释:

得到均衡器输出序列的眼图

%用不同阶数的迫零均衡器均衡后的误码率,并与理想误码率曲线比较。

snr_in_dB=[4:

11];%注释:

输入序列的信噪比的db表示

N=[123];%注释:

均衡器的阶数

err_rate=zeros(length(N),length(snr_in_dB));%经过均衡误码率统计

err_rate1=zeros(1,length(snr_in_dB));%未经过均衡误码率统计

forii=1:

length(N)

C=force_zero(h,N(ii));

forjj=1:

length(snr_in_dB)

SNR=10^(snr_in_dB(jj)/10);%注释:

输入序列的信噪比线性表示

err=0;%注释:

用于记录均衡之后的总的误码数

err1=0;%注释:

用于记录均衡之前的总的误码数

forkk=1:

10^3%注释:

用于进行1000次计算得到平均误码率

x=2*round(rand(1,M)+P-0.5)-1;%注释:

产生一列01码

x2=awgn(x,SNR,'measured','linear');%注释:

测量序列的功率,给X添加高斯白噪声

x1=conv(x2,h);%注释:

添加高斯白噪声序列的信号通过多径信道之后的输出

y=conv(x1,C);%注释:

多径信道的输出经过均衡之后输出

L=(length(y)-M)/2;%信道时延色散的长度

y=y(L+1:

L+M);%注释:

截取得到N阶均衡的输出

y=sign(y);%注释:

对得到的序列进行判决

err=err+sum(abs(x-y))/2;%均衡之后总的误码数

%------------------------------------------------------------------------不经过均衡

L1=(length(x1)-M)/2;%注释:

信道时延色散导致的码元展宽长度

x11=x1(L1+1:

L1+M);%注释:

截取多径信道输出的到去除展宽之后的码元

y11=sign(x11);%注释:

对信道输出的码元进行抽样判决

err1=err1+sum(abs(x-y11))/2;%注释:

计算得到未均衡输出的误码数

end

err_rate(ii,jj)=err/(M*10^3)%注释:

计算得到经过均衡后,平均每个码元在每次实验中的误码率

err_rate1(1,jj)=err1/(M*10^3)%注释:

计算得到经过均衡之前,平均每个码元在每次实验中的误码率

end

end

figure

(2);

semilogy(snr_in_dB,0.5*erfc(sqrt(1*10.^(snr_in_dB/10))),'g*-');

holdon;

semilogy(snr_in_dB,err_rate1(1,:

),'g-');

holdon;

semilogy(snr_in_dB,err_rate(1,:

),'ko');

holdon;

semilogy(snr_in_dB,err_rate(2,:

),'go');

holdon;

semilogy(snr_in_dB,err_rate(3,:

),'ro');

title('误码率');

legend('高斯信道下理想误码率特性','未进过均衡的误码率','三阶迫零均衡误码率','五阶迫零均衡误码率','七阶迫零均衡误码率');

xlabel('SNR');

LMS均衡:

clear;

clc;

%**************变量设置区***********************************************%

N=10000;%二进制信源的长度,测误码率时使用的N

h=[0.6-0.30.1];%多径响应序列

order=5;%C的阶数(取大于1的奇数)

mu=0.01;%步长

delta=2;%延迟

SNRdB=5:

15;

Loops=[100,100,100,100,100,100,100,100,100,100,100];%循环数,实现信源长度10^6

%*********************************************************************************%

C=zeros(order,1);%初始化自适应系数

fori=1:

length(SNRdB)%注释:

控制信噪比,得到不同信噪比条件下的误码率曲线

disp(['目前仿真到第',num2str(i),'轮:

','SNR=',num2str(SNRdB(i)),'dB']);%注释:

在不同的信噪比下实验,得到信噪比和误码率曲线

TotalError=0;%注释:

用于记录均衡之前的信噪比

totalerror1=0;

SNR=10^(SNRdB(i)/10);%注释:

将db形式的信噪比转换成线性形式的信噪比

forJJJ=1:

Loops(i)%注释:

循环数,在某一信噪比下作100次试验

x=randsrc(1,N,[0,1;0.5,0.5]);%注释:

随机生成0,1出现概率均为0.5的单极性码

x1=1-x*2;%注释:

将单极性码转换成双极性码

x2=conv(x1,h);%注释:

信号通过多径信道之后输出

x3=awgn(x2,S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2