function test05_main2_02
clear;
rand('state',sum(100 * clock));
% Tx and Rx antenna number
n_t = 4;
n_r = 4;
% shadow fading
sigma = 8;
% cell radius
radius = 500;
% save('E:\matlab\02.mimo\mat\radius.mat', 'radius');
% eNB_sig positions
enb_sig(1, :) = [0, 0] * radius;
% eNB_inf positions
intf_num = 6;
enb_inf(1, :) = [3 , -2 * sqrt(3)] * radius;
enb_inf(2, :) = [4.5 , 0.5 * sqrt(3)] * radius;
enb_inf(3, :) = [1.5 , 2.5 * sqrt(3)] * radius;
enb_inf(4, :) = [-3 , 2 * sqrt(3)] * radius;
enb_inf(5, :) = [-5.5, -0.5 * sqrt(3)] * radius;
enb_inf(6, :) = [-1.5, -2.5 * sqrt(3)] * radius;
% SNR
SNR = power(10, 20 / 10) / power(10, -100 / 10);
% users
usr_num = 1
d_sig = zeros(usr_num, 1);
d_inf = zeros(usr_num, intf_num);
for n = 1 : usr_num
% user position
r(n) = (0.1 + rand(1) * 0.9) * radius;
sita = rand(1) * 2 * pi;
x = r(n) * cos(sita);
y = r(n) * sin(sita);
% distances from eNB_sig
d_sig(n) = sqrt((enb_sig(1) - x)^2 + (enb_sig(2) - y)^2);
% distances from eNB_inf
for h = 1 : intf_num
d_inf(n, h) = sqrt((enb_inf(h, 1) - x)^2 + (enb_inf(h, 2) - y)^2);
end
end
% save('E:\matlab\02.mimo\mat\usr_num.mat', 'usr_num');
% save('E:\matlab\02.mimo\mat\r.mat', 'r');
slot_num = 1e5;
avg_rate = ones(1, usr_num) / usr_num;
sch_num = zeros(1, usr_num);
for slot = 1 : slot_num
% 1. user channel condition
req_rate = zeros(1, usr_num);
for n = 1 : usr_num
% H
tmp1 = 35.3 + 37.6 * log10(d_sig(n)) + normrnd(0, sigma);
tmp2 = normrnd(0, 1/sqrt(2), n_t, n_r) + i * normrnd(0, 1/sqrt(2), n_t, n_r);
H = sqrt(power(10, -tmp1 / 10)) * tmp2;
term1 = H * H';
% Rmtx
Rmtx = zeros(n_t, n_t);
for h = 1 : intf_num
tmp1 = 35.3 + 37.6 * log10(d_inf(n, h)) + normrnd(0, sigma);
tmp2 = normrnd(0, 1/sqrt(2), n_t, n_r) + i * normrnd(0, 1/sqrt(2), n_t, n_r);
H = sqrt(power(10, -tmp1 / 10)) * tmp2;
Rmtx = Rmtx + H * H';
end
term2 = inv(Rmtx + eye(n_t) / SNR);
% achievable rate
req_rate(n) = real(log2(det(eye(n_t) + term1 * term2)));
%
end
% 2. scheduling调度
[tmp,sch_usr] = max(req_rate ./ avg_rate);
sch_num(sch_usr) = sch_num(sch_usr) + 1;
avg_rate = 0.99 * avg_rate + 0.01 * ([1 : usr_num] == sch_usr) .* req_rate;
% 平均速率
sys_rate(slot) = sum(avg_rate);
figure;
plot( [tmp,sch_usr]);
grid;
end
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
test_main.zip (1个子文件)
test_main.m 2KB
共 1 条
- 1
资源评论
JaniceLu
- 粉丝: 81
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功