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

📄 sim2.m

📁 A wireless channel implemenatation in MATLAB
💻 M
字号:
% Simulation for mobility

clear;
% Initialize random number generator
rand('state', 0);
randn('state', 0);

global n node;
global rreq_out rreq_in rreq_forward;
global rreq_out_crosslayer rreq_in_crosslayer rreq_forward_crosslayer;
global rrep_out rrep_in rrep_forward;
global rrep_out_crosslayer rrep_in_crosslayer rrep_forward_crosslayer rrep_destination_crosslayer;
global mobility_model pos maxspeed maxpause;
global maxx maxy;

% Parameters
apptype = 'crosslayer_searching';    % or 'dht_searching'
log_file = 'log_mobility_crosslayer_';
n = 10;
maxx = 100;
maxy = 100;
nmobility = 2;
nrepeat = 2;
interval = 10;  % second
itraffic = 5;
max_time = 100 + interval * (nrepeat + 1);

for imobility = 1:nmobility
    % Use the same initial topology
    rand('state', 1);
    randn('state', 1);
    % Generate a random network topology
    node = topo(n, maxx, maxy, 0);
    node = [node, zeros(n, 2)];
    % Reset the parameters
    parameter;
    % Set parameters for mobility
    mobility_model = 'random_waypoint';
    maxpause = 1;
    maxspeed = imobility;
    disp([' ===== Maximum speed = ' num2str(maxspeed) ' =====']);
    % Initialize and start mobility
    position_init;
    clear Event_list;
    for k=1:itraffic
        clear tempe;
        tempe.instant = 1 + 100*k*slot_time;
        tempe.type = 'send_app';
        tempe.node = k;
        tempe.app.type = apptype;
        tempe.app.key = n+1-k;
        tempe.app.id1 = k;
        tempe.app.id2 = 0;
        tempe.app.route = [];
        tempe.app.hopcount = 0;
        tempe.net = [];
        tempe.pkt = [];
        for h = 1:nrepeat
            tempe.instant = tempe.instant + interval;
            tempe.app.id2 = h;
            Event_list((k-1)*nrepeat+h) = tempe;
        end
    end
    % Run the simulation
    tstart = clock;
    run(Event_list', max_time, [log_file, num2str(maxspeed)]);
    disp(sprintf('--- Maximum speed= %d, Running time=%g \n', maxspeed, etime(clock, tstart)));
    % Log the numbers of RREQ and RREP
    n1=sum(rreq_out);
    n2=sum(rreq_in);
    n3=sum(rreq_forward);
    n4=sum(rreq_out_crosslayer);
    n5=sum(rreq_in_crosslayer);
    n6=sum(rreq_forward_crosslayer);
    n7=sum(rrep_out);
    n8=sum(rrep_in);
    n9=sum(rrep_forward);
    n10=sum(rrep_out_crosslayer);
    n11=sum(rrep_in_crosslayer);
    n12=sum(rrep_forward_crosslayer);
    n13=sum(rrep_destination_crosslayer);
    fid = fopen([log_file num2str(maxspeed) '_rreqrrep'], 'a');
    if fid == -1, error(['Cannot open log file for RREQ and RREP']); end
    fprintf(fid, '%d %d %d %d %d %d %d %d %d %d %d %d %d %d \n', [maxspeed; n1; n2; n3; n4; n5; n6; n7; n8; n9; n10; n11; n12; n13]);
    fclose(fid);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -