📄 temp.m
字号:
%==========================================================================
%
% File: algorithm_jaeyoon.m
% REVISION: 2.0
%
% REVISION DATE: 2008/05/29
%
% AUTHOR: Jaeyoon Lee
%
% Copyright Hanyang University Wireless Communications Lab.
% All Rights Reserved.
%
%==========================================================================
clear all;
clc;
% 舅绊 乐促绊 啊沥窍绰 荤侩磊 寸 何馆价颇甸狼 盲澄 捞垫 蔼
% (N by K) matrix (where, N= subcarrier 荐, K=荤侩磊 荐 )
num_user = 40;
num_loop = 20;
N = 1024;
%%%%%%%%%%%%%%%%%%%% three classes of users %%%%%%%%%%%%%%%%%%%
% video:30%, voice:40%, data:30%
num_user_vo = floor(num_user*0.10);%盔霖急硅 稠巩俊急 10, 45, 45 肺 绊沥
num_user_da = floor(num_user*0.45);
num_user_vi = floor(num_user*0.45);
count_0 = 0;
count_1 = 0;
count_2 = 0;
for q = 1 : num_user % 荤侩磊甫 1疙究 刘啊矫虐搁辑 拌魂
%%%%%%%%%%%%%%%%%%%%%%%%%% PROGRAM STARTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
q
K = q; % # USERS
%%%%%%%%% Initialize the variables %%%%%%%%%%%
bit_sub_zhang = 0;
se_bit_zhang = 0;
sum_outage_zhang = 0;
bit_sub_alg = 0;
se_bit_alg = 0;
sum_outage_alg = 0;
t_zhang_total_bit = 0;
t_alg_total_bit = 0;
r_zhang_Rmin = 0;
r_alg_Rmin = 0;
bit_sub_alg1 = 0;
se_bit_alg1 = 0;
sum_outage_alg1 = 0;
t_zhang_total_bit1 = 0;
t_alg_total_bit1 = 0;
r_zhang_Rmin1 = 0;
r_alg_Rmin1 = 0;
bit_sub_alg2 = 0;
se_bit_alg2 = 0;
sum_outage_alg2 = 0;
t_zhang_total_bit2 = 0;
t_alg_total_bit2 = 0;
r_zhang_Rmin2 = 0;
r_alg_Rmin2 = 0;
%%%%%%%%%%%%%%%%%%%%%%%% LOOP %%%%%%%%%%%%%%%%%%%%
for ind = 1 : num_loop
%%%% Rmin捞 罚待窍霸 盒器窍档废 且寸
[Rmin(q) number0 number1 number2] = user_assign(count_0, count_1, count_2, num_user_vo, num_user_da, num_user_vi); %荤侩磊啊 罚待窍霸 盒器窍档废
%弥措 傈仿
Ptotal = 10^(50/10); %沥辣捞绰 40栏肺 抄 50栏肺 沁澜. 40栏肺 窍绰 巴捞 酒眶萍厚啊 歹 亮促..
%%%% N=128牢版快俊绰 32肺, N=1024牢版快俊绰 41肺 窍搁 盲澄寸 傈仿捞 距 11dB沥档 唱咳
%%%% N=128牢版快俊绰 35肺, N=1024牢版快俊绰 44肺 窍搁 盲澄寸 傈仿捞 距 14dB沥档 唱咳
%%%%%%%%%%%%%%%%%%%%%%%% channel %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P = 4; % => path
fd = 200;
flat = 1;
hk = t_fading(N, K, P, fd, flat, 10);
h = abs(hk).^2; % (Hk(n))^2
%%%% Channel Information %%%%%%
h(find(h < 6)) = 0.1;
h(find(6 <= h & h < 12)) = 6;
h(find(12 <= h & h < 18)) = 12;
h(find(h >= 18)) = 18;
% h(find(h < 3)) = 0.1;
% h(find(3 <= h & h < 6)) = 3;
% h(find(6 <= h & h < 9)) = 6;
% h(find(9 <= h & h < 12)) = 9;
% h(find(12 <= h & h < 15)) = 12;
% h(find(15 <= h & h < 18)) = 15;
% h(find(18 <= h & h < 21)) = 18;
% h(find(h >= 21)) = 21;
% h(find(h < 1.5)) = 0.1;
% h(find(1.5 <= h & h < 3)) = 1.5;
% h(find(3 <= h & h < 4.5)) = 3;
% h(find(4.5 <= h & h < 6)) = 4.5;
% h(find(6 <= h & h < 7.5)) = 6;
% h(find(7.5 <= h & h < 9)) = 7.5;
% h(find(9 <= h & h < 10.5)) = 9;
% h(find(10.5 <= h & h < 12)) = 10.5;
% h(find(12 <= h & h < 13.5)) = 12;
% h(find(13.5 <= h & h < 15)) = 13.5;
% h(find(15 <= h & h < 16.5)) = 15;
% h(find(16.5 <= h & h < 18)) = 16.5;
% h(find(18 <= h & h < 19.5)) = 18;
% h(find(19.5 <= h & h < 21)) = 19.5;
% h(find(21 <= h & h < 22.5)) = 21;
% h(find(22.5 <= h & h < 24)) = 22.5;
% h(find(24 <= h & h < 25.5)) = 24;
% h(find(h >= 25.5)) = 25.5;
% BER value绰 - exponent肺 拌魂茄促.
% 泅犁绰 葛滴 4. 溜. BER target= 10^-4.
%%%% Total Power甫 10^(32/10)肺 窍咯 捞巴狼 盲澄 乞闭阑 dB肺 备窍搁 距 11dB啊 唱柯促. 捞
%%%% 蔼俊 蝶弗 BER阑 备窍搁 QPSK:10^-6, 16QAM:0.0006, 64QAM:0.02沥档 等促.
%%%% Total Power甫 10^(35/10)肺 窍咯 捞巴狼 盲澄 乞闭阑 dB肺 备窍搁 距 14dB啊 唱柯促. 捞
%%%% 蔼俊 蝶弗 BER阑 备窍搁 QPSK:10^-8, 16QAM:0.0000035, 64QAM:0.0022沥档 等促.
% BER(q) = 0.00001; % 惫郴 历澄俊急 6栏肺 惫寇 历澄俊急 4肺窍看澜.
% 盔霖 急硅 稠巩俊急 10-5肺 窃.
%%% Adaptive Modulation %%%%% 利览 函炼啊 困狼 弊成 函炼 焊促 己瓷捞 亮促.
[r t] = size(h);
for jj = 1 : r
for jjj = 1 : t
if h(jj, jjj) < 1
BER(jj, jjj) = 10^-12; %% QPSK
else if 1 <= h(jj, jjj) & h(jj, jjj) <= 10
BER(jj, jjj) = 0.0000025; %% 16QAM
else if h(jj, jjj) > 10
BER(jj, jjj) = 0.0021; %% 64QAM
end
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%% channel END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% r_rate = (convert_h_into_r1(h, BER, Ptotal)); % 弥措傈仿阑 扁馆栏肺 data rate甫 拌魂 : rk(n)=f^-1(pk(n)*(Hk(n))^2)
% floor(r_rate) 蔼栏肺
% 拌魂窍搁 Zhang 舅绊府硫捞
% 亮篮 何盒捞 荤扼咙
r_rate = (convert_h_into_r2(h, BER, Ptotal)); % Adaptive modulation 荤侩 矫
%####################### zhang'algo ###################################
%%%%%%%%%%%%%%%%%%%%% adaptive subcarrier-and-bit allocation %%%%%%%%%%%%%%%%%%%%%%%%%%
%%% step 1 %%% => allocation
alloc = zeros(N, K);
for i = 1:N,
[max_v max_i] = max(r_rate(i, 1:K));
alloc(i, max_i) = 1; % subcarrier付促 data rate啊 啊厘 奴 user俊霸 1阑 且寸
end
%%%%%%%%%%%%%%%%
%%% step 2 %%% => reallocation
%%%%%%%%%%%%%% zhang algorithm %%%%%%%%%%%%%%%%%%%%%%%%%%%%
re_alloc = reallocation1(r_rate, alloc, Rmin); % re_allocation_id篮 N by K matrix
bit_realloc = r_rate.*re_alloc;
sum_bit = sum(bit_realloc);
%########################### proposed algorithm ##########################
[M_k_d hk_avg_d C_k_d r_rate_d Rmin_d] = act_user1(h, BER, Ptotal, Rmin, r_rate); % "_d" 绰 drop等 蜡历啊 昏力等 parameter 蔼
% [re_alloc1 n_alloc] = suggested1(r_rate_d, Rmin_d);% reallocation 矫 zhang algorithm 捞侩
% bit_realloc1 = re_alloc1.*r_rate_d;
% sum_bit_realloc1 = sum(bit_realloc1);
[re_alloc2 n_alloc2] = suggested2(r_rate_d, Rmin_d);% new algorithm(瞒捞蔼捞 累篮 鉴辑措肺 犁且寸)
bit_realloc2 = re_alloc2.*r_rate_d;
sum_bit_realloc2 = sum(bit_realloc2);
%######################### jung yoon's pro'algo ####################################
[alloc_r r_floor order_user] = r_allocation(r_rate,Rmin); % order_user: 棵覆瞒鉴栏肺 沥纺茄 user狼 困摹
result_alloc = reallocation_proposed(r_floor,alloc_r,Rmin,order_user);
bit_realloc_jung = r_rate.*result_alloc;
s_alloc = sum( bit_realloc_jung);
%##################################################################
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[outage_zhang bit_sub_zhang zhang_Rmin zhang_total_bit] = check_bit_sub(q, Rmin, re_alloc, bit_realloc);
% [outage_alg1 bit_sub_alg1 alg_Rmin1 alg_total_bit1] = check_bit_sub(q, Rmin_d, re_alloc1, bit_realloc1); % jaeyoon 1
[outage_alg2 bit_sub_alg2 alg_Rmin2 alg_total_bit2] = check_bit_sub(q, Rmin_d, re_alloc2, bit_realloc2); % jaeyoon 2
[outage_alg bit_sub_alg alg_Rmin alg_total_bit] = check_bit_sub(q, Rmin, result_alloc, bit_realloc_jung); % jung yoon
%spectral efficiency
se_bit_zhang = se_bit_zhang + bit_sub_zhang;
% se_bit_alg1 = se_bit_alg1 + bit_sub_alg1;
se_bit_alg2 = se_bit_alg2 + bit_sub_alg2;
se_bit_alg = se_bit_alg+bit_sub_alg; % jung yoon
%outage
sum_outage_zhang = sum_outage_zhang + outage_zhang;
% sum_outage_alg1 = sum_outage_alg1 + outage_alg1;
sum_outage_alg2 = sum_outage_alg2 + outage_alg2;
sum_outage_alg = sum_outage_alg + outage_alg; % jung yoon
%throughput
t_zhang_total_bit = t_zhang_total_bit + zhang_total_bit;
% t_alg_total_bit1 = t_alg_total_bit1 + alg_total_bit1;
t_alg_total_bit2 = t_alg_total_bit2 + alg_total_bit2;
t_alg_total_bit = t_alg_total_bit + alg_total_bit; %jung yoon
% total transmission bit
r_zhang_Rmin = r_zhang_Rmin + zhang_Rmin;
% r_alg_Rmin1 = r_alg_Rmin1 + alg_Rmin1;
r_alg_Rmin2 = r_alg_Rmin2 + alg_Rmin2;
r_alg_Rmin = r_alg_Rmin + alg_Rmin; % jung yoon
end %loop end
count_0 = number0;
count_1 = number1;
count_2 = number2;
avg_bit_zhang(q) = se_bit_zhang/num_loop;
avg_outage_zhang(q) = sum_outage_zhang/num_loop;
avg_zhang_total_bit(q) = t_zhang_total_bit/num_loop;
avg_zhang_Rmin(q) = r_zhang_Rmin/num_loop;
% avg_bit_alg1(q) = se_bit_alg1/num_loop;
% avg_outage_alg1(q) = sum_outage_alg1/num_loop;
% avg_alg_total_bit1(q) = t_alg_total_bit1/num_loop;
% avg_alg_Rmin1(q) = r_alg_Rmin1/num_loop;
avg_bit_alg2(q) = se_bit_alg2/num_loop;
avg_outage_alg2(q) = sum_outage_alg2/num_loop;
avg_alg_total_bit2(q) = t_alg_total_bit2/num_loop;
avg_alg_Rmin2(q) = r_alg_Rmin2/num_loop;
avg_bit_alg(q) = se_bit_alg/num_loop;
avg_outage_alg(q) = sum_outage_alg/num_loop;
avg_alg_total_bit(q) = t_alg_total_bit/num_loop; %jung yoon
avg_alg_Rmin(q) = r_alg_Rmin/num_loop;
end %user
for i = 1 : q,
x(i) = i;
y(i) = N;
end
figure(1)
%plot(x,avg_bit_zhang,'r-o', x, avg_bit_alg, 'b-*', x, avg_bit_alg2, 'm-^' )
plot(x, avg_bit_zhang,'r-o', x, avg_bit_alg2, 'b-^', x, avg_bit_alg, 'm-*' )
% plot(x, avg_bit_zhang,'r-o', x, avg_bit_alg2, 'b-^')
figure(2)
% plot(x,avg_outage_zhang,'r-o', x, avg_outage_alg, 'b-*', x, avg_outage_alg2, 'm-^')
plot(x, avg_outage_zhang,'r-o', x, avg_outage_alg2, 'b-^', x, avg_outage_alg, 'm-*')
% plot(x, avg_outage_zhang,'r-o', x, avg_outage_alg2, 'b-^')
figure(3)
% plot(x,avg_zhang_total_bit,'r-o', x, avg_alg_total_bit, 'b-*', x, avg_alg_total_bit2, 'm-^')
plot(x, avg_zhang_total_bit,'r-o', x, avg_alg_total_bit2, 'b-^', x, avg_alg_total_bit, 'm-*')
% plot(x, avg_zhang_total_bit,'r-o', x, avg_alg_total_bit2, 'b-^')
% plotyy(x, avg_zhang_total_bit, x, avg_outage_zhang)
% hold on;
% plotyy(x, avg_alg_total_bit2, x, avg_outage_alg2)
figure(4)
% plot(x,avg_zhang_Rmin,'r-o', x, avg_alg_Rmin, 'b-*', x, avg_alg_Rmin2, 'm-^')
plot(x, avg_zhang_Rmin,'r-o', x, avg_alg_Rmin2, 'b-^', x, avg_alg_Rmin, 'm-*')
% plot(x, avg_zhang_Rmin,'r-o', x, avg_alg_Rmin2, 'b-^')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -