gplot的用于画矩阵的结构图
gplot的用法:
gplot(A,xy),A说的是相应点的邻接矩阵,而后面的xy是以相应点的坐标为元素的列向量。举个例子,A=[1 1 0;1 0 0;0 0 1];xy=[x(1) y(1);x(2) y(2);x(3) y(3)]。x(2) y(2)可以可以看成一个二维点的坐标,于是xy可以看成由两个三维列向量的对应点组成的三个点的坐标,前面的矩阵A可以看成对应三个点的联系。如果对应位置有关系则相应位置的元素不为零,否则为零。也就是说前面的邻接矩阵是逻辑的邻接矩阵,有关系对应一个非零数(任意非零数),没关系对应零。
例如:A=[0,1,0,1,1,1;0,0,0,1,1,1;1,1,0,1,0,0;0,0,0,0,1,1;0,0,1,0,0,1;0,0,1,0,0,0]
xy=[-0.5 1;0.5 1;1.5 0;0.5 -1;-0.5,-1;-1.5,0]
a=-max(abs(xy(:,1)))*1.1;b=max(abs(xy(:,1)))*1.1;
c=-max(abs(xy(:,2)))*1.1;d=max(abs(xy(:,2)))*1.1;
gplot(A,xy),axis([a b c d])
如果要给邻接矩阵的图画为有向图,则可使用如下程序:
function y=graphy_plot(A,xy,l,p)
% Axyll=0
%l~=0,p
a=-max(abs(xy(:,1)))*1.1;b=max(abs(xy(:,1)))*1.1;
c=-max(abs(xy(:,2)))*1.1;d=max(abs(xy(:,2)))*1.1;
if l==0
gplot(A,xy),axis([a b c d]),hold on,
elseif l~=0
U=[];V=[];X=[];Y=[];
n=length(A(:,1)) ;
for i=1:n
k=find(A(i, ~=0);
m=length(k);
if(m~=0)
for j=1:m
u(1)=(xy(k(j),1)-xy(i,1)); v(1)=(xy(k(j),2)-xy(i,2));
u(2)=eps; v(2)=eps; U=[u;U];V=[v;V];
X=[[xy(i,1) xy(k(j),1)];X]; Y=[[xy(i,2) xy(k(j),2)];Y];
end
text(xy(i,1),xy(i,2),['\bullet\leftarrow\fontsize{16}\it{V}',...
num2str(i)]);hold on,
end
end
gplot(A,xy),axis([a b c d]),hold on,
h=quiver(X,Y,U,V,p);set(h,'color','red');hold on,
plot(xy(:,1),xy(:,2),'k.','markersize',12),hold on,
end , hold off |