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

📄 cp0803_rakeselector.m

📁 这是一本超宽带通信书籍< 超宽带无线通信>>的原代码,ds_uwb,mb_ofdm,脉冲信号的形成
💻 M
字号:

% FUNCTION 8.11 : "cp0803_rakeselector"
%
% Simulates channel estimation for a discrete-time channel
% impulse response 'hf' with time resolution 'ts' in
% seconds. In addition, the function evaluates the
% weighting factors to be used in a RAKE receiver
% implementing Maximal Ratio Combining.
% 'fc' is the value of the sampling frequency
% 'L' is the number of coefficients to be used in the
%  Partial Rake
% 'S' is the number of coefficients to be used in the
%  Selective Rake
%
% The function returns:
% 1) a vector 'G' containing all the amplitude coefficients
%     of the channel impulse response in a descending
%     order;
% 2) a vector 'T' containing all the relative delays for
%     the elements in vector 'G', i.e. T(j) represents the
%     relative delay of the multipath component having
%     amplitude G(j);
% 3) the number 'NF' of non-zero contributions of the
%     channel impulse response;
% 4) a vector 'Arake' representing the weighting factors to
%     be used in an ideal RAKE which processes all the
%     multipath contributions at the receiver input;
% 5) a vector 'Srake' representing the weighting factors to
%     be used in a Selective RAKE which processes the best
%     L multipath contributions at the receiver input; 
% 6) a vector 'Srake' representing the weighting factors to
%     be used in a Selective RAKE which processes the best
%     S multipath contributions at the receiver input;
% 7) a vector 'Prake' representing the weighting factors to
%     be used in a Partial RAKE which processes the first L
%     multipath contributions which arrive at the receiver
%     input.
%
% Programmed by Guerino Giancola
%

function [G,T,NF,Arake,Srake,Prake] = ...
   cp0803_rakeselector(hf,fc,ts,L,S)

% -----------------------------
% Step One - Channel Estimation
% -----------------------------

dt = 1 / fc;

ahf = abs(hf);
[s_val,s_ind] = sort(ahf);

NF = 0;
i = length(s_ind);
j = 0;
% evaluation of the reference vectors
% for the RAKE combiner
while (s_val(i)>0)&(i>0)
    NF = NF + 1;
    j = j + 1;
    index = s_ind(i);
    I(j) = index;
    T(j) = (index-1)*dt;
    G(j) = hf(index);
    i = i - 1;
end

% --------------------------------------------
% Step Two - Evaluation of the weighting terms
% --------------------------------------------

binsamples = floor(ts/dt);
if S > NF
    S = NF;
end
if L > NF
    L = NF;
end

Arake = zeros(1,NF*binsamples);
Srake = zeros(1,NF*binsamples);
Prake = zeros(1,NF*binsamples);

% Selective Rake and All Rake

for nf = 1 : NF
    
    x = I(nf);
    y = G(nf);
    Arake(x) = y;
    if nf <= S
        Srake(x) = y;
    end
        
end % for nf = 1 : NF

% Partial Rake

[tv,ti] = sort(T);
TV = tv(1:L);
TI = ti(1:L);
tc = 0;
for nl = 1 : length(TV)
    index = TI(nl);
    x = I(index);
    y = G(index);
    Prake(x) = y;
    tc = tc + 1;
    L = L - 1;
end

⌨️ 快捷键说明

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