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

📄 mul_rayleith.m

📁 这是一个多径信道下源码
💻 M
字号:
% multipath Rayleigh channel simulation 
% Ref:"Simulation and software radio for mobile communications"--H.Harada
% This function generates frequency selecting fading
% 
% Programmed by 研学网:沉香 (UESTC)	 	
% 

function [iout,qout]=MUL_RAYLEIGH(idata,qdata,itau,dlvl,itn,n1,nsamp,tstp,fd,flat);
%****************** variables *************************
% idata  input Ich baseband data     
% qdata  input Qch baseband data     
% iout   output Ich baseband data
% qout   output Qch baseband data
% itau   : Delay time for each multipath fading
% dlvl   : Attenuation level for each multipath fading
% itn    : Fading counter for each multipath fading
% n1     : Number of summation for direct and delayed waves 
% nsamp   : Total number od symbols
% tstp   : Mininum time resolution
% fd   : Maxmum doppler frequency
% flat     flat fading or not 
% (1->flat (only amplitude is fluctuated),0->nomal(phase and amplitude are fluctutated)   
%******************************************************
n0 = 25;      % n0     : Number of waves in order to generate each multipath fading
iout = zeros(1,nsamp);
qout = zeros(1,nsamp);

total_attn = sum(10 .^(  dlvl ./ 10.0));

for k = 1 : n1 

	atts = 10.^ dlvl(k);

	if dlvl(k) >= 40.0 
	       atts = 0.0;
	end

	[itmp,qtmp] = delay ( idata , qdata , nsamp , itau(k));
	[itmp3,qtmp3] = siglfade (itmp,qtmp,nsamp,tstp,fd,n0,itn(k),flat);% single fade
	
  iout = iout + atts .* itmp3 ./ sqrt(total_attn);
  qout = qout + atts .* qtmp3 ./ sqrt(total_attn);

end
% ************************end of file***********************************
function [iout,qout] = delay( idata, qdata , nsamp , idel )
% Gives delay to input signal
%****************** variables *************************
% idata  input Ich data     
% qdata  input Qch data     
% iout   output Ich data
% qout   output Qch data
% nsamp   Number of samples to be simulated 
% idel   Number of samples to be delayed
%******************************************************

iout=zeros(1,nsamp);
qout=zeros(1,nsamp);

if idel ~= 0 
  iout(1:idel) = zeros(1,idel);
  qout(1:idel) = zeros(1,idel);
end

iout(idel+1:nsamp) = idata(1:nsamp-idel);
qout(idel+1:nsamp) = qdata(1:nsamp-idel);

% ************************end of file***********************************

function [iout,qout]=siglfade(idata,qdata,nsamp,tstp,fd,no,counter,flat)
% Generate Rayleigh fading
% %****************** variables *************************
% idata  : input Ich data     
% qdata  : input Qch data     
% iout   : output Ich data
% qout   : output Qch data
% nsamp  : Number of samples to be simulated       
% tstp   : Minimum time resolution                    
% fd     : maximum doppler frequency               
% no     : number of waves in order to generate fading   
% counter  : fading counter                          
% flat     : flat fading or not 
% (1->flat (only amplitude is fluctuated),0->nomal(phase and amplitude are fluctutated)    
%******************************************************

if fd ~= 0.0  
    ac0 = sqrt(1.0 ./ (2.0.*(no + 1)));   % power normalized constant(ich)
    as0 = sqrt(1.0 ./ (2.0.*no));         % power normalized constant(qch)
    ic0 = counter;                        % fading counter
 
    pai = 3.14159265;   
    wm = 2.0.*pai.*fd;
    n = 4.*no + 2;
    ts = tstp;
    wmts = wm.*ts;
    paino = pai./no;                        

    xc=zeros(1,nsamp);
    xs=zeros(1,nsamp);
    ic=[1:nsamp]+ic0;

  for nn = 1: no
	  cwn = cos( cos(2.0.*pai.*nn./n).*ic.*wmts );
	  xc = xc + cos(paino.*nn).*cwn;
	  xs = xs + sin(paino.*nn).*cwn;
  end

  cwmt = sqrt(2.0).*cos(ic.*wmts);
  xc = (2.0.*xc + cwmt).*ac0;
  xs = 2.0.*xs.*as0;

  ramp=sqrt(xc.^2+xs.^2);   
  rcos=xc./ramp;
  rsin=xs./ramp;

  if flat ==1
    iout = sqrt(xc.^2+xs.^2).*idata(1:nsamp);    % output signal(ich)
    qout = sqrt(xc.^2+xs.^2).*qdata(1:nsamp);    % output signal(qch)
  else
    iout = xc.*idata(1:nsamp) - xs.*qdata(1:nsamp);   % output signal(ich)
    qout = xs.*idata(1:nsamp) + xc.*qdata(1:nsamp);   % output signal(qch)
  end

else  
  iout=idata;
  qout=qdata;
end

% ************************end of file***********************************

⌨️ 快捷键说明

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