⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 temp.m

📁 Hybrid DS-FH communication systems
💻 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 + -