⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdapsk_f_long_code.asv

📁 通信系统中的最新的分块差分调制技术的源码
💻 ASV
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ofdm系统参数设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%101/5/chan.6 is very good
clc;
clear all;
Nu=312;                             % ifft size according to fs
Ng=64;                              % the length of cp
bw=10000;
fs=10000;
long=1;
z=phase_corect1('chan.4',fs,Nu) 
%z=0

a=3;                                %deferential amplitude
carriers=ceil(bw*Nu/fs);
ncon=16;
Ns=Nu+Ng;
nums=5;
times=10;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% test ofdmdapsk in frequency Ber performnce  %%%%%%%%%%%%%%%%%%%%%% 
     snr1=0;
for  snr=10:5:30
     ratio=0;
    
    for time=1:times
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       %%%%%%%%%%%%%%%%%%%%%% error control encode%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        trel = poly2trellis(7,[134 171]); % Define trellis.
        msg = randint(carriers*log2(ncon)*nums/2,1,2,123); % Random data
        msg1=msg(long*log2(ncon)+1:end);
        code = convenc(msg,trel); % Encode.rate=1/2
        
        
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       %%%%%%%%%%%%%%%%%%%%%%%%%%%  send  signal  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       % generating  nums  symbols of ofdm each time
       %dapsk modulation
       datamap=dapskmap_frequency(code,a,ncon); 
       %datamap=dapskmap_frequency_long(code,a,ncon,long); 
       datamap=reshape(datamap,carriers,nums);
        %add zero  to carriers according to Nu
        numzero=ceil((Nu-carriers)/2);
        datamap=[zeros(numzero,nums);datamap;zeros(numzero,nums)]; 
        %ofdm modulation
        datamap=ifft(datamap);
        %add cp
        temp=datamap((Nu-Ng+1):Nu,:);
        datamap=[temp;datamap];
        clear temp;
        % get ofdm baseband signal
        [m,n]=size(datamap);
        outstream=reshape(datamap,m*n,1); 
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %%%%%%%%%%%%%%%%%%%%%%% pass channel  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        
        %pass multichannel
        outstream=multirayfade(outstream,fs,'chan.4');
        %pass awgn channeel
        outstream=awgn(outstream,snr,'measured') ;
        
        
        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        %%%%%%%%%%%%%%%%%%%%%%%%%%%   receive signal %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      
       %delete cp
       datademap=reshape(outstream,m,n);
       temp=datademap;
       temp(1:Ng,:)=[];
       datademap=temp;
       clear temp;
       
       %ofdm symbols demodulation
       datademap=fft(datademap);
       temp=datademap;
       
       % delete zero according to carriers
       temp(1:numzero,:)=[];
       temp=temp;
       len=length(temp);
       temp(len-numzero+1:len,:)=[];
       datademap=temp;
       clear temp;
       %dapsk signal demodulation
       datademap=reshape(datademap,1,carriers*nums);
       datademap=dapskdemod_frequency(datademap);
       %datademap=dapskdemod_frequency_long(datademap,long);
       %datademap=exp(i*z).*datademap;
       %map the demodulation signals to bit streams
       [outbit]=dapskgray_frequency_correct(datademap,a,ncon,z);
       %[outbit]=dapsktogray_frequency(datademap,a,ncon);   
          
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       %%%%%%%%%%%%%%%%%%%%% error ctrol decode%%%%%%%%%%%%%%%%%%%%%%%%%%
       ncode=outbit';
       tblen =16; % Traceback length
       % Use hard decisions.
       %decoded1 = vitdec(ncode,trel,tblen,'cont','hard');

       % To prepare for soft-decision decoding, map to decision values.
       [x,qcode] = quantiz(1-2*ncode,[-.75 -.5 -.25 0 .25 .5 .75],...
       [7 6 5 4 3 2 1 0]); % Values in qcode are between 0 and 2^3-1.
       decoded3 = vitdec(qcode',trel,tblen,'cont','soft',3);
       %decoded3=decoded3(long*log2(ncon)+1:end);
       [n1,ber] = biterr(decoded3(tblen+1:end),msg(1:end-tblen));
       ratio=ratio+ber;
   end
       disp('%%%%%%%%%%%%%%%% display ber /snr %%%%%%%%%%%%%%%%%%%%%%%')
       snr
       snr1=snr1+1;
       ratio_ber(snr1)=ratio/times
   end
       % figure plot ber according to snr 
        snr=10:5:30
        semilogy(snr,ratio_ber,'r*')
        disp('********************* final result********************')
        [ ratio_ber']

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -