📄 zbtopology2.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 + -