私はMatlabに比較的慣れていないので、各六角形が特定の動作をするセルラーネットワークを表す六角形グリッドを生成したいと考えています。
私の質問は、正方形のグリッドから 16 進数のグリッド (転送行列) にどのように移行するかです。これは私がこれまでに持っているものです。
[X,Y] = meshgrid(0:60);
figure(1), plot(X,Y,'b')
hold on, plot(Y,X,'b')
axis square
私はMatlabに比較的慣れていないので、各六角形が特定の動作をするセルラーネットワークを表す六角形グリッドを生成したいと考えています。
私の質問は、正方形のグリッドから 16 進数のグリッド (転送行列) にどのように移行するかです。これは私がこれまでに持っているものです。
[X,Y] = meshgrid(0:60);
figure(1), plot(X,Y,'b')
hold on, plot(Y,X,'b')
axis square
数年前、私はそれを行うためのコードをいくつか書きました:
%// Define input data:
close all
clear all
M_max = 14; %// number of cells in vertical direction
N_max = 10; %// number of cells in horizontal direction
trans = 1; %// hexagon orientation (0 or 1)
%// Do the plotting:
hold on
for m = -M_max:M_max
for n = -N_max:N_max
center = [.5 sqrt(3)/2] + m*[0 -sqrt(3)] + n*[3/2 sqrt(3)/2];
if ~trans
plot([center(1)-1 center(1)],[center(2) center(2)])
plot([center(1) center(1)+1/2],[center(2) center(2)+sqrt(3)/2])
plot([center(1) center(1)+1/2],[center(2) center(2)-sqrt(3)/2])
else %// exchange the two arguments to `plot`
plot([center(2) center(2)],[center(1)-1 center(1)])
plot([center(2) center(2)+sqrt(3)/2],[center(1) center(1)+1/2])
plot([center(2) center(2)-sqrt(3)/2],[center(1) center(1)+1/2])
end %if
end %for
end %for
plot([-15 15],[0 0],'-.') %// adjust length manually
plot([-15 15],[-15*sqrt(3) 15*sqrt(3)],'-.') %// adjust length manually
axis image
set(gca,'xtick',[])
set(gca,'ytick',[])
axis([-10 10 -13.3 13.3]) %// adjust axis size manually
set(gca,'Visible','off') %// handy for printing the image
たとえば、これは上記のデータで生成された画像です。