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

📄 testdapsk_in_time.m

📁 通信系统中的最新的分块差分调制技术的源码
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ofdm系统参数设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
% %%%%%%%%%%%%%%%BER for DAPSK in time direction% %%%%%%%%%%%%%%%%5%%%%%%%%%%%%%%
Nu=112;                 % ifft size according to fs
Ng=88;                  % the length of cp
a=2.0;                  % deferential amplitude
bw=10000;               % channel bandwidth
fs=10000;               % sampling frequency
carriers=ceil(bw*Nu/fs);% useful carrier number
ncon=16;                % constellation
Ns=Nu+Ng;
nums=10;                % ofdm symbol number in a transimission frame
times=10;               % the times of repeat transimission in some SNR!
tsnr=8;                 % the snr ratio scope;
step_snr = 5;           % the snr step in multipler;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% test ofdmdapsk in frequency Ber performnce  %%%%%%%%%%%%%%%%%%%%%% 

ratio=zeros(1,tsnr); 
for  snr_db=1:tsnr
    for time=1:times
       %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       %%%%%%%%%%%%%%%%%%%%%%%%%%%  send  signal  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        % generating  nums  symbols of ofdm each time
        sequence=randint(carriers*log2(ncon),nums);
        %data= reshape(sequence,1,carriers*log2(ncon)*nums);
        %dapsk modulation
        datamap=dapskmap_time(sequence,a,ncon); 
        %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.6');
        %pass awgn channeel
        snr=step_snr*(snr_db-1);
        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=dapskdemod_time(datademap);
       datademap=reshape(datademap,1,carriers*nums);
       %map the demodulation signals to bit streams
       [outbit]=dapsktogray_frequency(datademap,a,ncon);
       receive_bit=reshape(outbit,carriers*log2(ncon),nums);
       %detection ber per snr
       [number,ber]=biterr(receive_bit(:,1:nums),sequence(:,1:nums));
       ratio(snr_db)=ratio(snr_db)+ber;
   end
%        disp('%%%%%%%%%%%%%%%% display ber /snr %%%%%%%%%%%%%%%%%%%%%%%');
%        snr;
       ratio_ber(snr_db)=ratio(snr_db)/times;
   end
       % figure plot ber according to snr 
        snr=step_snr*(0:tsnr-1);
        semilogy(snr,ratio_ber,'r*');
        disp('********************* final result********************');
        [ratio_ber']
        snr' 
     

⌨️ 快捷键说明

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