DSPRelated.com
Forums

SUI channel

Started by arash private December 22, 2008
dear all

the 802163c-01_29r4.pdf document propose a code to model SUI channel .
at end of code we have matrix that have 3 row (3 tap ) and N000 column .
these are coefficient for three tap , but i don't know how could i useit to filter my ofdem signal with sample period of for example T.( why tap delay not use where should i enter it )?
please help me ,really i need it.
N = 10000; % number of independent random realizations
OR = 4; % observation rate in Hz
M = 256; %number of taps of the Doppler filter
Dop_res = 0.1; %Doppler resolution of SUI parameter in Hz (used in resampling-process)
res_accu = 20; %accuracy of resampling process

P = [ 0 -5 -10 ]; %power in each tap in dB
K = [ 0 0 0 ]; %Ricean K-factor in linear scale
tau = [ 0.0 4 10 ]; %tap delay in ?s
Dop = [ 2 1.5 2.5 ];% Doppler maximal frequency parameter in Hz
ant_corr = 0.3; %antenna correlation (envelope correlation coefficient)
Fnorm = -1.5113; %gain normalization factor in dB
%First we calculate the power in the constant and random components of the Rice distribution for each tap:
P = 10.^(P/10); % calculate linear power
s2 = P./(K+1); % calculate variance
m2 = P.*(K./(K+1)); % calculate constant power
m = sqrt(m2); % calculate constant part

%Now we can create the channel coefficients with the specified powers.
L = length(P); % number of taps
paths_r = sqrt(1/2)*(randn(L,N) + j*randn(L,N)).*((sqrt(s2))' * ones(1,N));
paths_c = m' * ones(1,N);
%2001-07-16 IEEE 802.16.3c-01/29r431
%Before combining the coefficient sets, the white spectrum is shaped according to the Doppler PSD function. Since the
%frequency-domain filtering function FFTFILT expects time-domain filter coefficients, we have to calculate these first.
%The filter is then normalized in time-domain.
for p = 1:L
D = Dop(p) / max(Dop) / 2; % normalize to highest Doppler
f0 = [0:M*D]/(M*D); % frequency vector
PSD = 0.785*f0.^4 - 1.72*f0.^2 + 1.0; % PSD approximation
filt = [ PSD(1:end-1) zeros(1,M-2*M*D) PSD(end:-1:2) ]; % S(f)
filt = sqrt(filt); % from S(f) to |H(f)|
filt = ifftshift(ifft(filt)); % get impulse response
filt = real(filt); % want a real-valued filter
filt = filt / sqrt(sum(filt.^2)); % normalize filter
path = fftfilt(filt, [ paths_r(p,:) zeros(1,M) ]);
paths_r(p,:) = path(1+M/2:end-M/2);
end;
paths = paths_r + paths_c;
%Now that the fading channel is fully generated, we have to apply the normalization factor and, if applicable, the gain
%reduction factor
paths = paths * 10^(Fnorm/20); % multiply all coefficients with F
%Finally, we resample the current rate to the specified observation rate. In order to use the Matlab polyphase
%implementation resample, we need the resampling factor F specified as a fraction F = P/Q.
SR = max(Dop)*2; % implicit sample rate
m = lcm(SR/Dop_res, OR/Dop_res);
P = m/SR*Dop_res; % find nominator
Q = m/OR*Dop_res; % find denominator
paths_OR = zeros(L,ceil(N*P/Q)); % create new array
for p=1:L
paths_OR(p,:) = resample(paths(p,:), P, Q, res_accu);
end;
%The resampled set of channel coefficients for all the 3 taps are now
%contained in the matrix paths_OR.


--- In m..., arash private wrote:
>
> dear all
>
> the 802163c-01_29r4.pdf document propose a code to model SUI channel .
> at end of code we have matrix that have 3 row (3 tap ) and N000
column .
> these are coefficient for three tap , but i don't know how could i
useit to filter my ofdem signal with sample period of for example
T.( why tap delay not use where should i enter it )?
> please help me ,really i need it.
> N = 10000; % number of independent random realizations
> OR = 4; % observation rate in Hz
> M = 256; %number of taps of the Doppler filter
> Dop_res = 0.1; %Doppler resolution of SUI parameter in Hz (used in
resampling-process)
> res_accu = 20; %accuracy of resampling process
>
> P = [ 0 -5 -10 ]; %power in each tap in dB
> K = [ 0 0 0 ]; %Ricean K-factor in linear scale
> tau = [ 0.0 4 10 ]; %tap delay in ?s
> Dop = [ 2 1.5 2.5 ];% Doppler maximal frequency parameter in Hz
> ant_corr = 0.3; %antenna correlation (envelope correlation coefficient)
> Fnorm = -1.5113; %gain normalization factor in dB
> %First we calculate the power in the constant and random components
of the Rice distribution for each tap:
> P = 10.^(P/10); % calculate linear power
> s2 = P./(K+1); % calculate variance
> m2 = P.*(K./(K+1)); % calculate constant power
> m = sqrt(m2); % calculate constant part
>
> %Now we can create the channel coefficients with the specified powers.
> L = length(P); % number of taps
> paths_r = sqrt(1/2)*(randn(L,N) + j*randn(L,N)).*((sqrt(s2))' *
ones(1,N));
> paths_c = m' * ones(1,N);
> %2001-07-16 IEEE 802.16.3c-01/29r431
> %Before combining the coefficient sets, the white spectrum is shaped
according to the Doppler PSD function. Since the
> %frequency-domain filtering function FFTFILT expects time-domain
filter coefficients, we have to calculate these first.
> %The filter is then normalized in time-domain.
> for p = 1:L
> D = Dop(p) / max(Dop) / 2; % normalize to highest Doppler
> f0 = [0:M*D]/(M*D); % frequency vector
> PSD = 0.785*f0.^4 - 1.72*f0.^2 + 1.0; % PSD approximation
> filt = [ PSD(1:end-1) zeros(1,M-2*M*D) PSD(end:-1:2) ]; % S(f)
> filt = sqrt(filt); % from S(f) to |H(f)|
> filt = ifftshift(ifft(filt)); % get impulse response
> filt = real(filt); % want a real-valued filter
> filt = filt / sqrt(sum(filt.^2)); % normalize filter
> path = fftfilt(filt, [ paths_r(p,:) zeros(1,M) ]);
> paths_r(p,:) = path(1+M/2:end-M/2);
> end;
> paths = paths_r + paths_c;
> %Now that the fading channel is fully generated, we have to apply
the normalization factor and, if applicable, the gain
> %reduction factor
> paths = paths * 10^(Fnorm/20); % multiply all coefficients with F
> %Finally, we resample the current rate to the specified observation
rate. In order to use the Matlab polyphase
> %implementation resample, we need the resampling factor F specified
as a fraction F = P/Q.
> SR = max(Dop)*2; % implicit sample rate
> m = lcm(SR/Dop_res, OR/Dop_res);
> P = m/SR*Dop_res; % find nominator
> Q = m/OR*Dop_res; % find denominator
> paths_OR = zeros(L,ceil(N*P/Q)); % create new array
> for p=1:L
> paths_OR(p,:) = resample(paths(p,:), P, Q, res_accu);
> end;
> %The resampled set of channel coefficients for all the 3 taps are now
> %contained in the matrix paths_OR.
>
>
>
>

This code doesn't use the time delays of different channel taps. Only
the instantaneous values of these taps is given at the times dictated
by observation rate. If you want to use this channel for your sampling
frequency/symbol rate you will have to interpolate/decimate the 3 -
tap values. Note this resampling is not the one that is done in the
end of the code. That resampling is for different channel
realizations. In a single channel realization (that is defined by
3-tap values at specified instants), you need to interpolate/decimate
according to your signal sampling frequency.

Ubaid Abdullah
http://dspdotcomm.blogspot.com