您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > UWB-超宽带技术-源代码
BIT:产生原信号二进制比特流PPM-TH:进行PPM-TH调制Repcode:进行重复编码TH:产生TH码TRANSMITTER_2PPM_TH:产生UWB信号waveform:产生功率归一化的脉冲波形1、FUNCTION:bit%产生二进制原信号%原信号比特数numbis作为输入function[bits]=bit(numbits)bits=rand(1,numbits)0.5;%rand产生的是在0~1上均匀分布的随机数%这些数0.5的几率各是一半,即bis为0,1的几率各半3、FUNCTION:repcode%产生重复编码%'Ns':码元重复数function[repbits]=repcode(bits,Ns)numbits=length(bits);temprect=ones(1,Ns);temp1=zeros(1,numbits*Ns);temp1(1:Ns:1+Ns*(numbits-1))=bits;temp2=conv(temp1,temprect);repbits=temp2(1:Ns*numbits);3、FUNCTION:PPM_TH%引入TH码并进行PPM调制%参数如下:%'seq':二进制源码%'fc':抽样频率%'Tc':时隙长度%'Ts':脉冲平均重复周期%'dPPM':PPM引入的时移%'THcode':TH码%产生两个输出:%'2PPMTHseq':TH和PPM共同调制信号%'THseq':未经PPM调制的信号function[PPMTHseq,THseq]=PPM_TH(seq,fc,Tc,Ts,dPPM,THcode)%调制dt=1./fc;framesamples=floor(Ts./dt);%每个脉冲的样本数chipsamples=floor(Tc./dt);PPMsamples=floor(dPPM./dt);THp=length(THcode);totlength=framesamples*length(seq);PPMTHseq=zeros(1,totlength);THseq=zeros(1,totlength);%引入TH码和PPM%s(t)=sum(p(t-jTs-CjTc-aE))fork=1:length(seq)%脉冲位置,表示第几个脉冲-jTsindex=1+(k-1)*framesamples;%引入TH码,-CjTc,表示第几个时隙kTH=THcode(1+mod(k-1,THp));index=index+kTH*chipsamples;THseq(index)=1;%引入PPM时移,-aE,表示在时隙内的位置index=index+PPMsamples*seq(k);PPMTHseq(index)=1;end4、FUNCTION:TH%产生TH码%Np:跳时码周期%Nh:跳时码最大上界function[THcode]=TH(Nh,Np);THcode=floor(rand(1,Np).*Nh);5、FUNCTION:transmitter_2PPM_TH%产生UWB信号%参数定义如下:%Pow:传输功率%fc;抽样频率%numbits:信号比特数%Ns:每比特脉冲数%Np:跳时码周期%Nh:跳时码最大上界%Ts:脉冲重复周期.%Tc:时隙大小%Tm:脉冲持续时间%tau:脉冲成形因子%dPPM:PPM引入时移%返回值:%bits:产生比特流%THcode:TH码%Stx:产生信号%ref:未经调制的参照信号function[bits,THcode,Stx,ref]=transmitter_2PPM_TH(fc,numbit,Ns,Ts,dPPM)%输入参数Pow=-30;numbits=numbit;Tc=1e-9;Nh=10;Np=5;Tm=0.5e-9;tau=0.2e-9;G=1;%模拟发射步骤%二进制原信号bits=bit(numbits);repbits=repcode(bits,Ns);%重复编码THcode=TH(Nh,Np);%产生TH码[PPMTHseq,THseq]=PPM_TH(repbits,fc,Tc,Ts,dPPM,THcode);%调制%成形滤波power=(10^(Pow/10))/1000;Ex=power*Ts;w0=waveform(fc,Tm,tau);wtx=w0.*sqrt(Ex);Sa=conv(PPMTHseq,wtx);Sb=conv(THseq,wtx);%产生输出信号L=floor((Ts*fc))*Ns*numbits;Stx=Sa(1:L);ref=Sb(1:L);ifG%绘图F=figure(1);set(F,'Position',[30120700400]);clatmax=numbits*Ns*Ts;time=linspace(0,tmax,length(Stx));P=plot(time,Stx);set(P,'LineWidth',[2]);ylow=-1.5*abs(min(wtx));yhigh=1.5*max(wtx);axis([0tmaxylowyhigh]);AX=gca;set(AX,'FontSize',12);X=xlabel('时间[s]');set(X,'FontSize',14);Y=ylabel('幅度[V]');set(Y,'FontSize',14);forj=1:numbitstj=(j-1)*Ns*Ts;L1=line([tjtj],[ylowyhigh]);set(L1,'Color',[000],'LineStyle',...%间隔比特的线'--','LineWidth',[2]);fork=0:Ns-1ifk0tn=tj+k*Nh*Tc;L2=line([tntn],[ylowyhigh]);set(L2,'Color',[0.50.50.5],'LineStyle',...%间隔帧的线'-.','LineWidth',[2]);endforq=1:Nh-1th=tj+k*Nh*Tc+q*Tc;L3=line([thth],[0.8*ylow0.8*yhigh]);set(L3,'Color',[0.50.50.5],'LineStyle',...':','LineWidth',[1]);%间隔时隙的线endendendend6、FUNCTION:waveform%产生功率归一化的脉冲波形,这里采用的是高斯波形的二阶导数%'fc':抽样频率%'Tm':脉冲持续时间%'tau':成形参数function[w0]=waveform(fc,Tm,tau);%产生波形dt=1/fc;OVER=floor(Tm/dt);e=mod(OVER,2);kbk=floor(OVER/2);tmp=linspace(dt,Tm/2,kbk);s=(1-4.*pi.*((tmp./tau).^2)).*...exp(-2.*pi.*((tmp./tau).^2));ife%奇数fork=1:length(s)y(kbk+1)=1;y(kbk+1+k)=s(k);y(kbk+1-k)=s(k);endelse%偶数fork=1:length(s)y(kbk+k)=s(k);y(kbk+1-k)=s(k);endendE=sum((y.^2).*dt);w0=y./(E^0.5);%功率归一化7、FUNCTION:Gnoise%为输入信号引入加性白噪声%矢量'ebno'包含了各个信噪比值%'numbits':表示发送端发送的比特数目%输出:%经噪声污染的信号output,噪声矩阵noise.function[output,noise]=Gnoise(input,exno,numpulses)Ex=(1/numpulses)*sum(input.^2);%一个单脉冲的平均接收能量ExNo=10.^(exno./10);No=Ex./ExNo;nstdv=sqrt(No./2);%噪声的标准差forj=1:length(ExNo)noise(j,:)=nstdv(j).*randn(1,length(input));output(j,:)=noise(j,:)+input;end8、FUNCTION:IEEEuwb%根据IEEE802.15.SG3a.产生信道冲激响应%'fc':抽样频率%'TMG':信道增益%返回:%1)'h0':信道冲激响应%2)'hf':离散信道冲激响应%3)'OT':观察时间OT%4)'ts':离散分辨率%5)'X':信道增益function[h0,hf,OT,ts,X]=IEEEuwb(fc,ag);%----------------------------%输入参数%----------------------------TMG=ag^2%信道总多径增益OT=200e-9;%观测时间[s]ts=1e-9;%离散分辨率[s]LAMBDA=0.0223*1e9;%簇平均到达因子(1/s)lambda=2.5e9;%簇内脉冲平均到达因子(1/s)GAMMA=7.1e-9;%簇衰减因子gamma=4.3e-9;%簇内脉冲衰减因子sigma1=10^(3.3941/10);%簇的信道衰减系数偏差sigma2=10^(3.3941/10);%簇内脉冲信道衰减系数偏差sigmax=10^(3/10);%信道幅度增益的标准偏差%脉冲衰减阈值,当exp(-t/gamma)rdt时,该脉冲忽略rdt=0.001;%峰值阈值[dB],只考虑幅度在峰值-PT范围以内的脉冲PT=50;G=1;%-----------------------------------%簇的形成%-----------------------------------dt=1/fc;%采样频率T=1/LAMBDA;%簇平均到达时间t=1/lambda;%簇内脉冲平均到达时间[s]i=1;CAT(i)=0;%第一簇到达时间,初始化为0next=0;whilenextOTi=i+1;next=next+expinv(rand,T);%产生簇的到达时间,服从p(Tn/Tn-1)=lambda*[-exp(Tn/Tn-1)]ifnextOTCAT(i)=next;endend%--------------------------------%路径%--------------------------------NC=length(CAT);%参考的簇数logvar=(1/20)*((sigma1^2)+(sigma2^2))*log(10);omega=1;pc=0;%多径数量计数器fori=1:NCpc=pc+1;CT=CAT(i);HT(pc)=CT;next=0;mx=10*log(omega)-(10*CT/GAMMA);mu=(mx/log(10))-logvar;a=10^((mu+(sigma1*randn)+(sigma2*randn))/20);HA(pc)=((rand0.5)*2-1).*a;ccoeff=sigma1*randn;%簇衰减whileexp(-next/gamma)rdtpc=pc+1;next=next+expinv(rand,t);HT(pc)=CT+next;mx=10*log(omega)-(10*CT/GAMMA)-(10*next/GAMMA);mu=(mx/log(10))-logvar;a=10^((mu+ccoeff+(sigma2*randn))/20);HA(pc)=((rand0.5)*2-1).*a;endend%fori=1:NC%峰值滤波器peak=abs(max(HA));limit=peak/10^(PT/10);HA=HA.*(abs(HA)(limit.*ones(1,length(HA))));%凡小于limit的脉冲不输出fori=1:pcitk=floor(HT(i)/dt);h(itk+
本文标题:UWB-超宽带技术-源代码
链接地址:https://www.777doc.com/doc-7885354 .html