Untitled
unknown
plain_text
a year ago
2.0 kB
7
Indexable
function user_centric_ap_clustering() p = 100; % define data power % Parameters m = 5; % Number of APs k = 10; % Number of users QoS_threshold = 0.001; noise_variance = 1; % Step 1: Form Channel Gain Matrix C = rand(m,k); % Random channel gains max_channel_gain = max(C(:)); C_normalized = C; % max_channel_gain; % Normalize channel gains % Initialize SINR matrix SINR = zeros(1, k); delta = zeros(m,k); B = zeros(k,k); % Iterate for different values of alpha for alpha = 0:0.05:1 % Set delta matrix delta = (C_normalized > alpha); % Thresholding % Calculate SINRs and check QoS constraint for j = 1:k % Calculate cumulative SINR for each user interference = 0; for i = 1:k if i~=j for x = 1:m if delta(x,i)>0 interference = interference + (C_normalized(x,j)'*C_normalized(x,i))^2*p; end end end end SINR(j) = sum(p*(abs(C_normalized(delta(:, j) > 0, j)).^4)) / (noise_variance + interference); % Check QoS constraint if SINR(j) < QoS_threshold disp(['QoS constraint not satisfied for user ', num2str(j)]); end end % Plot cumulative SINR vs. user number figure; plot(1:k, SINR, '-o'); title(['SINR vs. User Number for alpha = ', num2str(alpha)]); xlabel('User Number'); ylabel('Cumulative SINR'); ylim([0, max(SINR)*1.1]); % Adjust ylim to fit the SINR range % Display B matrix B = delta' * delta > 0; disp(['For alpha = ', num2str(alpha)]); disp('B Matrix:'); disp(B); end disp(C_normalized); end
Editor is loading...
Leave a Comment