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

📄 testdapsk_in_frequency_long.m

📁 通信系统中的最新的分块差分调制技术的源码
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ofdm系统参数设置%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
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;
long=1;                     
% the block size of differential mudulation 
%-----------------------------------------
%-----------long=1:frequency difference-----------
%-----------long=Nu:time difference---------------
%-----------long=56:block frequency difference----
nums=10;                    % ofdm symbol number in a transimission frame
times=5;                    % the times of repeat transimission in some SNR!

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% test ofdmdapsk in frequency Ber performnce  %%%%%%%%%%%%%%%%%%%%%% 

snr1=0;
for  snr=0:5:35
     ratio=0;
    
    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_frequency_long(data,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.6');
        %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_long(datademap,long);
       %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=ratio+ber;
   end
%        disp('%%%%%%%%%%%%%%%% display ber /snr %%%%%%%%%%%%%%%%%%%%%%%')
%        snr
       snr1=snr1+1;
       ratio_ber(snr1)=ratio/times;
   end
       % figure plot ber according to snr 
        snr=0:5:35;
        semilogy(snr,ratio_ber,'r*');
        disp('********************* final result********************');
        [ ratio_ber']

⌨️ 快捷键说明

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