--- 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