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

📄 costw207channelmodel.m

📁 无线移动通信中的典型COST207信道的MATLAB仿真程序
💻 M
字号:
% Determine sample (1) echo delay times, (2) norm. Doppler frequencies% and (3) initial phases of the Rayleigh portions of a (time-variant)% physical transmission channel according to the European standard COST-% 207 (COoperation in the field of Science & Technology, Project #207).%% function [tau_MHz, fD_norm, psi, tau_pdf] = ...%                                  COST207 (mPDS[, N_echo[, rseed]]])% ----------------------------------------------------------------------% INPUT:% ----------------------------------------------------------------------% mPDS    :  String designating the desired propagation environment,%            i.e. the physical channel, according to COST-207:%            - 'TU':  "Typical Urban"  (non-hilly urban environment),%            - 'RA':  "Rural Area"     (non-hilly rural environment),%            - 'BU':  "Bad Urban"      (hilly urban environment),%            - 'HT':  "Hilly Terrain"  (hilly rural environment).%     Note:  These environments correspond to different mean power %            delay spectra (PDS, "Verzoegerungsleistungsspektren").%     N.B.:  To obtain environments NOT standardized by COST-207, mPDS%            can also be a matrix with entries as in tau_pdf (see o/p).% [N_echo]:  Desired number of echo paths (Default: 100).% [rseed] :  If this parameter is given, rseed is used to set the %            seeds for the random numbers generator. In this way,%            the function outputs can be reproduced.% ----------------------------------------------------------------------% OUTPUT:% ----------------------------------------------------------------------% tau_MHz:  (Length N_out) col. vector of delay times of the echo paths.%           The values of tau_MHz := tau*1MHz = tau/1us are in the range %           0..7 (TU), 0..0.7 (RA), 0..10 (BU), 0..2 and 15..20 (HT).%           The histogramm of tau_MHz approaches the pdf of tau, which%           is prop. to the mean power delay spectrum indicated by mPDS.%    N.B.:  N_out may slightly differ from N_echo to satisfy the relative%           power ratio between echo clusters (for 'BU' and 'HT', only).% fD_norm:  (Length N_out) column vector with norm. Doppler frequencies %           fD/max{fD} resulting from echos impinging isotropically on%           the mobile unit. The values are in the range -1.0...1.0 and%           approximate the Jakes pdf. To unnormalize, multiply by the %           maximum Doppler frequency max{fD}:= v*f0/c0, where%              - v       is the speed of the mobile unit [m/s]%              - f0      is the carrier frequency [Hertz]%              - c0=3e8  is the speed of light in empty space [m/s].% psi    :  (Length N_out) column vector containing the initial phases.%           The values are uniformly distributed in the range 0..2pi.% tau_pdf:  Complete set of parameters describing the pdf of echo delay%           times, where row n refers to the n-th echo cluster:%           tau_pdf(n,1):  exp. decay factor for the echo delay times,%           tau_pdf(n,2):  minimum of this cluster's delay times [us],%           tau_pdf(n,3):  range   of this cluster's delay times [us],%           tau_pdf(n,4):  total channel energy portion of this cluster.%           If mPDS was a matrix, tau_pdf is identical to mPDS.% ----------------------------------------------------------------------% DERIVATION: M. Benthin, PhD thesis, TU Hamburg-Harburg, 1996, Kap. 3.1% ----------------------------------------------------------------------% AUTHOR :  Marcus Benthin,  01.07.92   (name of m-file:  "chan207w.m")%           Dieter Boss,     01.07.96% ----------------------------------------------------------------------% <-------------------------------  max. linewidth for atops  ------------------------------------->|function [tau_MHz, fD_norm, psi, tau_pdf] = COST207 (mPDS, N_echo, rseed)                                         % #####  1. Verzoegerungszeiten tau_MHz  #####  if nargin<2, N_echo = 100; end;        % Das mittlere Verzoegerungs-Leistungsspektrum (mean power                                         % delay spectrum (mPDS) ist proportional zur Verteilungs-  if isstr(mPDS)                         % dichte der Echo-Laufzeiten tau_MHz, die durch uc be-    mPDS = mPDS(find(isletter(mPDS)));   % schrieben wird. Der Prototyp fuer ein einfaches Echo-    mPDS = upper(mPDS(1:2));             % Cluster hat die Gestalt:  p(tau) = alpha*exp(-beta*tau),                                         % 0<=tau<=tauD.  Kompliziertere Echo-Profile werden aus                                           % mehreren solcher Cluster superponiert (vgl. BU oder HT).    if strcmp(mPDS,'TU')==1              % COST-207 Mobilfunk-Kanalmodell TYPICAL URBAN      uc = [ 1.0   0.0    7.0    1.0 ];    elseif strcmp(mPDS,'RA')==1          % COST-207 Mobilfunk-Kanalmodell RURAL AREA      uc = [ 9.2   0.0    0.7    1.0 ];    elseif strcmp(mPDS,'BU')==1          % COST-207 Mobilfunk-Kanalmodell BAD URBAN      uc = [ 1.0   0.0    5.0    2/3             1.0   5.0    5.0    1/3 ];  % rel. Amplitude: 0.5    elseif strcmp(mPDS,'HT')==1          % COST-207 Mobilfunk-Kanalmodell HILLY TERRAIN      uc = [ 3.5   0.0    2.0    0.88             1.0  15.0    5.0    0.12];  % rel. Amplitude: 0.04    else      error (sprintf('ERROR (COST207.m):  Unknown COST-207 propagation environment "%s"!', mPDS));    end;                                         % Beliebige Mobilfunk-Kanalmodelle  else    if size(mPDS,2)~=4,      error('ERROR (COST207.m):  First argument must be a string or a matrix with 4 columns.');    end;    uc = mPDS;  end;  beta = uc(:,1);                        % Abklingkonstante(n) der Exponentialverteilung(en)  tauS = uc(:,2);                        % Startzeit(en) der Exponentialverteilung(en) in us  tauD = uc(:,3);                        % Dauer der/des Echocluster(s) in us                                         % \int_0^tauD p(tau) dtau =                                          % \int_0^tauD alpha*exp(-beta*tau) dtau =   alpha = beta./(1-exp(-beta.*tauD));    % alpha(1-exp(-beta*tauD))/beta != 1  =>  alpha.                                         % s. Marcus Benthin, Diss., Gl. (3.16)   N = round(uc(:,4)*N_echo);             % Prozentuale Verteilung von N_echo Exp.Schwingungen  N_out = sum(N);                        % auf die Echogruppen. Damit ist nur die Leistung  no_clusters = size(uc,1);              % der Rayleigh-Streuung beruecksichtigt.  if nargin > 2              rand('seed', rseed);                 % Generate reconstructable seeds for the uniform  end;                                   % random numbers generator (uniformly distributed  useeds = round(1e8*rand(no_clusters+2,1)); % between 0 and 1e8).    tau_MHz = [];                          % Auswuerfelung von Echozeiten tau in us (Rayleigh-Anteile)  for cl_no = 1:no_clusters              % cl_no = cluster number    rand('seed', useeds(cl_no));         % s. Marcus Benthin, Diss., Gl. (3.17)     tau_MHz = [tau_MHz; -1/beta(cl_no)*log(1-beta(cl_no)/alpha(cl_no)*rand(N(cl_no),1)) + tauS(cl_no)];  end;   if nargout > 1                         % #####  2. Norm. Dopplerfrequenzen fD_norm  #####    rand('seed', useeds(no_clusters+1));    alpha = pi*rand(N_out,1);            % Gleichverteilte Einfallswinkel in (0..pi)    fD_norm = cos(alpha);                % Jakes-verteilte normierte Dopplerfrequenzen  end;                                   % im Intervall  -1.0 < fD_norm < 1.0  if nargout > 2    rand('seed', useeds(no_clusters+2)); % #####  3. Startphasen psi  #####    psi = 2*pi*rand(N_out,1);            % Gleichverteilte Startphasen in (0..2pi)  end  if nargout > 3                         % #####  4. Parameters describing the pdf of tau #####    tau_pdf = uc;  end;end;% EOF

⌨️ 快捷键说明

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