V1.9-fastFadingWrapper.m

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #5612
    wangxinzhe
    Participant

    Dear Martin,

    I have some simple questions to ask you. In the fastFadingWrapper.m, what do zeta,chi,psi and theta stand for?
    function [zeta,chi,psi] = generate_fast_fading_signal(obj,t,tx_mode)
    % Index for the target and interfering channels
    [index_position_mod,~] = obj.get_index_positions(t,[]);
    switch tx_mode
    case 1
    % SISO trace
    zeta = obj.ff_trace.traces{1}.trace.zeta(:,:,index_position_mod);
    chi = [];
    psi = obj.ff_trace.traces{1}.trace.psi(:,:,index_position_mod);
    case 2
    % TxD trace
    zeta = obj.ff_trace.traces{2}.trace.zeta(:,:,:,index_position_mod);
    chi = obj.ff_trace.traces{2}.trace.chi(:,:,:,index_position_mod);
    psi = obj.ff_trace.traces{2}.trace.psi(:,:,:,index_position_mod);
    case {3,4,5,6,9}
    % OLSM and CLSM trace
    tmp_trace = obj.ff_trace.traces{tx_mode};
    size_psi = size(tmp_trace{end}.trace.psi);
    max_rank = length(tmp_trace);
    zeta = zeros([size_psi(1) size_psi(2) size_psi(3) max_rank]);
    chi = zeros([size_psi(1) size_psi(2) size_psi(3) max_rank]);
    psi = zeros([size_psi(1) size_psi(2) size_psi(3) max_rank]);
    for rank_idx = 1:max_rank % trace for each rank
    current_trace = tmp_trace{rank_idx}.trace;
    if ~isempty(current_trace.zeta)
    zeta(1:rank_idx,:,:,rank_idx) = current_trace.zeta(:,:,:,index_position_mod);
    else
    zeta(1:rank_idx,:,:,rank_idx) = 1;
    end
    if ~isempty(current_trace.chi)
    chi(1:rank_idx,:,:,rank_idx) = current_trace.chi(:,:,:,index_position_mod);
    else
    chi(1:rank_idx,:,:,rank_idx) = 0;
    end
    psi(1:rank_idx,:,:,rank_idx) = current_trace.psi(:,:,:,index_position_mod);
    end
    otherwise
    error(‘tx_mode %d not yet implemented’,tx_mode);
    end
    end

    function [theta] = generate_fast_fading_interference(obj,t,tx_mode,interfering_eNodeB_ids)
    % Index for the target and interfering channels
    [~,index_position_interf_mod] = obj.get_index_positions(t,interfering_eNodeB_ids);
    switch tx_mode
    case 1
    % SISO trace
    theta = shiftdim(obj.ff_trace.traces{1}.trace.theta(:,:,index_position_interf_mod),-1);
    case 2
    % TxD trace
    theta = obj.ff_trace.traces{2}.trace.theta(:,:,:,index_position_interf_mod);
    case {3,4, 5, 6,9}
    % OLSM and CLSM trace
    tmp_trace = obj.ff_trace.traces{tx_mode};
    size_psi = size(tmp_trace{end}.trace.psi);
    max_rank = length(tmp_trace);
    theta = zeros([size_psi(1) size_psi(2) size_psi(3) numel(index_position_interf_mod) max_rank]);
    for rank_idx = 1:max_rank % trace for each rank
    current_trace = tmp_trace{rank_idx}.trace;
    theta(1:rank_idx,:,:,:,rank_idx) = current_trace.theta(:,:,:,index_position_interf_mod);
    end
    otherwise
    error(‘tx_mode %d not yet implemented’,tx_mode);
    end
    end

    With bestwishes,
    wangxinzhe

    #5719

    Dear Wangxinzhe,

    an excellent description of these parameters is found in Sec 3.1.1 of http://theses.eurasip.org/media/theses/documents/colom-ikuno-josep-system-level-modeling-and-optimization-of-the-lte-downlink.pdf

    Best regards,
    Martin.

Viewing 2 posts - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.