HE/Corrcoef_Calculate.m

84 lines
2.5 KiB
Mathematica
Raw Normal View History

2024-03-30 16:35:40 +08:00
function RU_avai = Corrcoef_Calculate(staFeedback,Type, jam_data)
numUsers = length(staFeedback);
[Nst,numRx,numSTS] = size(staFeedback{1});
% combine_matrix = zeros(Nst,numRx*numUsers,numSTS);
%
combine_matrix = cell(1,numRx);
Nru = 4;
RU_avai = zeros(1,Nru);
for rxIdx = 1:numRx
combine_matrix{rxIdx} = zeros(Nst,numUsers,numSTS);
for userIdx = 1:numUsers
combine_matrix{rxIdx}(:,userIdx,:) = staFeedback{userIdx}(:,rxIdx,:);
end
ru1 = combine_matrix{rxIdx}(1:52,:,:);
ru2 = combine_matrix{rxIdx}(54:105,:,:);
ru3 = combine_matrix{rxIdx}(138:190,:,:);
ru4 = combine_matrix{rxIdx}(191:end,:,:);
RU_matrix = {ru1,ru2,ru3,ru4};
for ruIdx = 1:Nru
fprintf('%dRU\n',ruIdx);
% 线
Coefs = cell(1,numSTS);
num_corr = zeros(1,numSTS);
disp('');
for stsIdx = 1:numSTS
Coef = corrcoef(abs(RU_matrix{ruIdx}(:,:,stsIdx)));
Coef(logical(eye(size(Coef)))) = -1;
Coefs{stsIdx} = Coef;
disp(Coef);
num_corr(stsIdx) = sum(Coef>0.5,'all');
end
disp('0.5线');
disp(num_corr);
if sum(num_corr) == 0
RU_avai(ruIdx) = RU_avai(ruIdx)+1;
end
end
end
% figure();
% for rxIdx = 1:numRx
% for stsIdx = 1:numSTS
% for userIdx = 1:numUsers
% plot(abs(combine_matrix{rxIdx}(:,userIdx,stsIdx)));
% hold on;
% end
% end
% end
% hold off;
% pause(0.5);
% close;
% RU
if strcmp(Type,'multi')
for Idx = 1:length(jam_data)
f_idx = jam_data{1}(Idx)/10*Nst;
if 1 < f_idx < 52
RU_avai(1) = RU_avai(1)-0.5;
elseif 54 < f_idx < 105
RU_avai(2) = RU_avai(2)-0.5;
elseif 138 < f_idx < 190
RU_avai(3) = RU_avai(3)-0.5;
elseif 191 < f_idx < Nst
RU_avai(4) = RU_avai(4)-0.5;
end
end
elseif strcmp(Type,'mono')
f_idx = jam_data/10*Nst;
if 1 < f_idx < 52
RU_avai(1) = RU_avai(1)-0.5;
elseif 54 < f_idx < 105
RU_avai(2) = RU_avai(2)-0.5;
elseif 138 < f_idx < 190
RU_avai(3) = RU_avai(3)-0.5;
elseif 191 < f_idx < Nst
RU_avai(4) = RU_avai(4)-0.5;
end
end
fprintf('4RURU');
disp(RU_avai);
end