clc;
clear all;
close all;
SNR1_dB=0; % 用户1的SNR,dB值
SNR2_dB=10; % 0、10、20 % 用户2的SNR,dB值
SNR1=10^(SNR1_dB/10);
SNR2=10^(SNR2_dB/10);
alpha_array=[10^(-4):0.0025:0.15,0.15:0.01:0.95, 0.95:10^(-4):1-10^(-4)];
beta_array=alpha_array;
% 正交OMA方式下的两个用户频谱效率
OMA_R1=zeros(length(alpha_array),length(beta_array)); % 取决于带宽分配因子和功率分配因子
OMA_R2=zeros(length(alpha_array),length(beta_array));
% 非正交NOMA方式下的两个用户频谱效率
NOMA_R1=zeros(length(beta_array),1); % 取决于功率分配因子(全带宽分配)
NOMA_R2=zeros(length(beta_array),1);
for index2 = 1:length(beta_array)
beta = beta_array(index2);
NOMA_R1(index2) = log2(1+beta*SNR1/(1+(1-beta)*SNR1));
NOMA_R2(index2) = log2(1+(1-beta)*SNR2);
for index1 = 1:length(alpha_array)
alpha = alpha_array(index1);
OMA_R1(index1,index2) = alpha*log2(1+SNR1*beta/alpha);
OMA_R2(index1,index2) = (1-alpha)*log2(1+SNR2*(1-beta)/(1-alpha));
end
end
% 寻找每种带宽分配因子下的最优功率分配因子
OMA_R_total = OMA_R1+OMA_R2;
for index = 1:size(OMA_R_total,1)
[OMA_R_total_1(index),index_perfect_power(index)] = max(OMA_R_total(index,:));
end
% figure(1);
% plot(OMA_R1,OMA_R2,'r-');
% hold on;
% plot(NOMA_R1,NOMA_R2,'b-');
h=figure;
set(h,'color',[1 1 1]);
plot(alpha_array,OMA_R_total_1,'r-'); % beta_array(index_perfect_power)
hold on;
plot(alpha_array,NOMA_R1+NOMA_R2,'bo');
grid on;
legend('OMA','NOMA');
title('sum efficiency');
xlabel('alpha value of 带宽(功率)分配因子');
ylabel('sum efficiency');
alpha_array_ideal = alpha_array(index_perfect_power);
for index1=1:length(beta_array)
alpha = alpha_array_ideal(index1);
beta = beta_array(index1);
OMA_R1_ideal(index1) = alpha*log2(1+SNR1*beta/alpha);
OMA_R2_ideal(index1) = (1-alpha)*log2(1+SNR2*(1-beta)/(1-alpha));
NOMA_R1(index1) = log2(1+beta*SNR1/(1+(1-beta)*SNR1));
NOMA_R2(index1) = log2(1+(1-beta)*SNR2);
end
h=figure;
set(h,'color',[1 1 1]);
plot(OMA_R1_ideal,OMA_R2_ideal,'r-');
hold on;
plot(NOMA_R1,NOMA_R2,'b-');
grid on;
legend('OMA','NOMA');
title('User1 & User2 efficiency');
xlabel('User1 efficiency');
ylabel('User2 efficiency');
评论2