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

📄 zbtopology2.m

📁 在matlab实现的zigbee源代码
💻 M
字号:
% ZigBee network topology generator
% Draw the logical tree
% tx and ty will be used by drawing tree in algorithms

% zbtopology

% node information includes:
% 1: id
% 2: position x
% 3: position y
% 4: number of children (at most Cm)
% 5: number of neighbors (at most maxNeighbor)
% 6: level

% Parameters
tmaxX = 100;
tmaxY = 100;
tystep = (tmaxY - 10) / Lm;     % y step between two levels
txstep = zeros(1+Lm, 1);        % x step at each level
tx = zeros(maxn, 1) - 1;
ty = zeros(maxn, 1) - 1;

txstep(1) = tmaxX - 10;
for i = 1 : Lm
    txstep(i + 1) = txstep(i) / Cm;
end

tx(1) = tmaxX / 2;
ty(1) = 5;
for i = 2 : maxn
    if tx(i) <= 0
        parent = tneighbor(i, 1);
        if tx(parent) <= 0
            continue;
        else
            [level, child] = zblevel(Cm, Lm, info(i, 1));
            tx(i) = tx(parent) - txstep(level-1+1) / 2 + txstep(level+1) / 2 + (child-1) * txstep(level+1);
            ty(i) = 5 + tystep * level;
            if info(i, 4) > 0
                for j = 1 : info(i, 4)
                    k = tneighbor(i, j + 1);
                    tx(k) = tx(i) - txstep(level+1) / 2 + txstep(level+1+1) / 2 + (j-1) * txstep (level+1+1);
                    ty(k) = 5 + tystep * (level + 1);
                end
            end
        end
    end
end % for
ty = tmaxY - ty;

if drawFigure >= 1
    % Draw nodes
    % Figure
    figure(2);
    axis equal
    hold on;
    set(gca,'Box','on');
    plot(tx, ty, 'ko', 'MarkerSize', 5);
    plot(tx(1), ty(1), 'k*');
    title('Logical network topology');
    xlabel('X');
    ylabel('Y');
    axis([0, tmaxX, 0, tmaxY]);
    set(gca, 'XTick', []);
    set(gca, 'YTick', []);
end

if drawFigure >= 2
    % Draw on-tree links
    for i = 1 : maxn
        if info(i, 4) > 0
            for j = 1 : info(i, 4)
                k = tneighbor(i, j + 1);
                line([tx(i), tx(k)], [ty(i), ty(k)], 'Color', 'k', 'LineStyle', '-', 'LineWidth', 1.5);
            end
        end
    end
    % pause;
end

if drawFigure >= 3
    % Draw other links
    for i = 1 : maxn
        if info(i, 5) > 0
            nt = neighbor(i, 1:info(i, 5));
            nt = setdiff(nt, tneighbor(i, 1: info(i, 4) + 1));
            t1 = length(nt);
            if t1 > 0
                for j = 1 : t1
                    k = nt(j);
                    if i < k
                        line([tx(i), tx(k)], [ty(i), ty(k)], 'Color', 'k', 'LineStyle', ':', 'LineWidth', 0.5);
                    end
                end
            end
        end
    end
end



⌨️ 快捷键说明

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