- This topic has 1 reply, 2 voices, and was last updated 4 years, 8 months ago by Martin Taranetz.
-
AuthorPosts
-
21. June 2016 at 8:08 #5612wangxinzheParticipant
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
endfunction [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
endWith bestwishes,
wangxinzhe29. June 2016 at 14:31 #5719Martin TaranetzMemberDear 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. -
AuthorPosts
- You must be logged in to reply to this topic.