hrollfcoef.m
上传用户:m_sun_001
上传日期:2014-07-30
资源大小:1115k
文件大小:2k
源码类别:

matlab例程

开发平台:

Matlab

  1. % Program 3-3
  2. % hrollfcoef.m
  3. %
  4. % Generate coefficients of Nyquist filter
  5. %
  6. % programmed by H.Harada
  7. %
  8. function [xh] = hrollfcoef(irfn,ipoint,sr,alfs,ncc)
  9. %****************** variables *************************
  10. % irfn  : Number of symbols to use filtering
  11. % ipoint : Number of samples in one symbol
  12. % sr     : symbol rate
  13. % alfs   : rolloff coeficiense
  14. % ncc    : 1 -- transmitting filter  0 -- receiving filter
  15. % *****************************************************
  16. xi=zeros(1,irfn*ipoint+1);
  17. xq=zeros(1,irfn*ipoint+1);
  18. point = ipoint;
  19. tr = sr ;  
  20. tstp = 1.0 ./ tr ./ ipoint;
  21. n = ipoint .* irfn;
  22. mid = ( n ./ 2 ) + 1;
  23. sub1 = 4.0 .* alfs .* tr; % 4*alpha*R_s
  24. for i = 1 : n 
  25.   icon = i - mid;
  26.   ym = icon;
  27.   if icon == 0.0 
  28.     xt = (1.0-alfs+4.0.*alfs./pi).* tr;  % h(0) 
  29.   else 
  30.     sub2 =16.0.*alfs.*alfs.*ym.*ym./ipoint./ipoint; 
  31.     if sub2 ~= 1.0 
  32.       x1=sin(pi*(1.0-alfs)/ipoint*ym)./pi./(1.0-sub2)./ym./tstp;
  33.       x2=cos(pi*(1.0+alfs)/ipoint*ym)./pi.*sub1./(1.0-sub2);
  34.       xt = x1 + x2;  % h(t) plot((1:length(xh)),xh)
  35.     else % (4alphaRst)^2 = 1plot((1:length(xh)),xh)
  36.       xt = alfs.*tr.*((1.0-2.0/pi).*cos(pi/4.0/alfs)+(1.0+2.0./pi).*sin(pi/4.0/alfs))./sqrt(2.0);
  37.     end  %  if sub2 ~= 1.0 
  38.   end %  if icon == 0.0 
  39.   if ncc == 0                         % in the case of receiver
  40.     xh( i ) = xt ./ ipoint ./ tr; % normalization
  41.   elseif ncc == 1 % in the case of transmitter
  42.     xh( i ) = xt ./ tr;          % normalization
  43.   else
  44.     error('ncc error');
  45.   end    %  if ncc == 0
  46. end  % for i = 1 : n 
  47. %******************** end of file ***************************