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('第%d个RU:\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('4个RU中可用的RU为:'); disp(RU_avai); end