📄 init_fading_time.m
字号:
% STMicroelectronics srl - AST
%
% Project : Support IEEE MIMO channel model
% File name: init_fading_time.m
%
% Date | Person | Modification
% -----------|---------------------|------------------------------------------------
% 05/11/2003 | A. Poloni S. Valle | v.01
% 18/11/2003 | A. Poloni S. Valle | v.02 Bell+Spike shape included
% | | Bell Filter order 7 instead 8
function [FadingMatrixTime, FilterStatesOut, RandStateOut] = init_fading_time(FadingLength, ...
NumberOfTxAntennas, ...
NumberOfRxAntennas, ...
NumberOfPaths, FadingType, ...
FilterStatesIn, RandStateIn)
% [FadingMatrixTime, FilterStatesOut, RandStateOut] = init_fading_time(FadingLength,
% FadingOversamplingFactor, NumberOfTxAntennas, NumberOfRxAntennas,
% NumberOfPaths, FadingType,FilterStatesIn, RandStateIn)
%
% Generates a matrix of fading coefficients of size
% (NumberofTxAntennas*NumberOfRxAntennas*NumberOfPaths) x
% FadingLength. The power Doppler spectrum
% of the fading coefficients can be bell-shaped
% (with or without spike due to moving car).
%
% Inputs
%
% * Variable FadingLength, number of fading samples generated
% per tap coefficient
% * Variable NumberOfTxAntennas, number of antenna elements
% at Tx
% * Variable NumberOfRxAntennas, number of antenna elements
% at Rx
% * Variable NumberOfPaths, number of taps of the PDP
% * Variable FadingType, type of the Doppler spectrum, which
% can be bell_shape
% * Variable FilterStatesIn, filter initial condition, to preserve
% continuity between consecutive calls
% * Variable RandStateIn, initial random generator state value
% Output
%
% * Variable FadingMatrixTime containing FadingLength samples of
% NumberofTxAntennas * NumberOfRxAntennas * NumberOfPaths
% independent fading processes exhibiting bell-shaped
% Doppler spectrum. Variance of each process is equal to one thanks
% to filter normalization.
% * Variable FilterStatesOut, filter final condition, to preserve
% continuity between consecutive calls
% * Variable RandStateOut, final random generator state value
randn('state', RandStateIn);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FILTER DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Filter_Order = 7;
%Bell filter polynomial coefficients
%fd = 1/300 of the normalized frequency
NUM_B = [ 2.785150513156437e-004
-1.289546865642764e-003
2.616769929393532e-003
-3.041340177530218e-003
2.204942394725852e-003
-9.996063557790929e-004
2.558709319878001e-004
-2.518824257145505e-005];
DEN_B = [ 1.000000000000000e+000
-5.945307133332568e+000
1.481117656568614e+001
-1.985278212976179e+001
1.520727030904915e+001
-6.437156952794267e+000
1.279595585941577e+000
-6.279622049460144e-002];
%Bell+Spike filter polynomial coefficients to be used with Model F
%Bell-Spike shape applies to the 3rd tap fading coefficients;
%Bell shape applies to the other taps fading coefficients.
%fd = 1/300 of the normalized frequency
%fspike = 1/300*40/1.2 of the normalized frequency
NUM_S= [ 7.346653645411014e-002
-2.692961866120396e-001-3.573876752780644e-002i
5.135568284321728e-001+1.080031147197969e-001i
-5.941696436704196e-001-1.808579163219880e-001i
4.551285303843579e-001+1.740226068499579e-001i
-2.280789945309740e-001-1.111510216362428e-001i
7.305274345216785e-002+4.063385976397657e-002i
-1.281829045132903e-002-9.874529878635624e-003i];
DEN_S=[ 1.000000000000000e+000
-4.803186161814090e+000-6.564741337993197e-001i
1.083699602445439e+001+2.655291948209460e+000i
-1.461669273797422e+001-5.099798708358494e+000i
1.254720870662511e+001+5.723905805435745e+000i
-6.793962089799931e+000-3.887940726966912e+000i
2.107762007599925e+000+1.503178356895452e+000i
-2.777250532557400e-001-2.392692168502482e-001i];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FADING Generation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
switch FadingType
case 'bell_shape' % Indoor, bell shape Doppler spectrum
Noise2Filter = sqrt(.5)*(randn(NumberOfTxAntennas*NumberOfRxAntennas*NumberOfPaths, FadingLength) ...
+ sqrt(-1)*randn(NumberOfTxAntennas*NumberOfRxAntennas*NumberOfPaths, FadingLength));
[FadingMatrixTime, FilterStatesOut] = filter(NUM_B, DEN_B, Noise2Filter, FilterStatesIn, 2);
case 'bell_shape_spike' % Indoor, bell shape Doppler spectrum with spike
NumberOfAntennas = NumberOfTxAntennas*NumberOfRxAntennas;
FilterStatesOut = zeros(Filter_Order, NumberOfAntennas*NumberOfPaths);
SpikePos = 3; %tap with Bell+Spike shape
%index of Bell shaped fading coefficients
BellTapsPositions = [1:(SpikePos-1)*NumberOfAntennas ((SpikePos)*NumberOfAntennas+1):NumberOfAntennas*NumberOfPaths];
%index of Bell+Spike shaped fading coefficients
SpikeTapsPositions = [((SpikePos-1)*NumberOfAntennas+1):(SpikePos)*NumberOfAntennas];
%generation of uncorrelated fading coefficients
Noise2Filter = sqrt(.5)*(randn(NumberOfTxAntennas*NumberOfRxAntennas*NumberOfPaths, FadingLength)...
+ sqrt(-1)*randn(NumberOfTxAntennas*NumberOfRxAntennas*NumberOfPaths, FadingLength));
%Bell shaped fading
[FadingMatrixTimeBellTap, FilterStatesOut(:,BellTapsPositions)] =...
filter(NUM_B, DEN_B, Noise2Filter(BellTapsPositions,:),FilterStatesIn(:,BellTapsPositions), 2);
%Bell+Spike shaped fading
[FadingMatrixTimeSpikeTap, FilterStatesOut(:,SpikeTapsPositions)] = ...
filter(NUM_S, DEN_S,Noise2Filter(SpikeTapsPositions,:), FilterStatesIn(:, SpikeTapsPositions), 2);
% Fading Matrix Time with bell+spike on the 3-rd tap
FadingMatrixTime(BellTapsPositions,:) = FadingMatrixTimeBellTap;
FadingMatrixTime(SpikeTapsPositions,:) = FadingMatrixTimeSpikeTap;
end;
RandStateOut = randn('state');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -