drawdag.m

来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· M 代码 · 共 42 行

M
42
字号
function drawDag(dag,Loc)

radio=0.02;	%Tama駉 del nodo
grosorflecha=150*radio;

fg=figure('menubar','figure','Resize','on');
   PP=get(fg,'Position');
   set(fg,'Position',[PP(1:2) 400 400])
   
fidbnd=fopen('worldcoasthi.bin','rb','ieee-be');
bnd=fread(fidbnd,[2,inf],'single')';
fclose(fidbnd);
maxx=max(Loc(:,1));minx=min(Loc(:,1));
maxy=max(Loc(:,2));miny=min(Loc(:,2));
Dx=maxx-minx;
Dy=maxy-miny;
maxx=maxx+Dx*.1;minx=minx-Dx*.1;
maxy=maxy+Dy*.1;miny=miny-Dy*.1;


axes('units','normal','position',[0 0 1 1],'DataAspectRatioMode','Manual','DataAspectRatio',[1 1 1],...
   'box','on','xlimmode','manual','ylimmode','manual',...
   'XTickMode','manual','Xtick',[],'YTickMode','manual','Ytick',[],...
   'XLim',[minx maxx],'YLim',[miny maxy]);
line(bnd(:,1),bnd(:,2),'Color','k','linestyle','-');
for k=1:size(Loc,1)
   rectangle('Position',[Loc(k,1)-radio,Loc(k,2)-radio,2*radio,2*radio],'Curvature',[1,1],'LineWidth',2*radio);
   i=find(dag(k,1:end)==1)';
      if ~isempty(i)
         for j=1:size(i,1)
            u=Loc(i(j),1)-Loc(k,1);
            v=Loc(i(j),2)-Loc(k,2);
            alfa=atan(abs(v/u));
            x1=Loc(k,1)+sign(u)*radio*cos(alfa);
            y1=Loc(k,2)+sign(v)*radio*sin(alfa);
            xf=Loc(i(j),1)-sign(u)*radio*cos(alfa);
            yf=Loc(i(j),2)-sign(v)*radio*sin(alfa);
            arrow([x1,y1],[xf,yf],'TipAngle',16,'Length',grosorflecha,'width',radio);
         end
      end
end

⌨️ 快捷键说明

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