资源描述:
《matlab 根据邻接矩阵作图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Matlab中根据邻接矩阵做图functiontu_plot(rel,control)%由邻接矩阵画图%输入为邻接矩阵,必须为方阵;%第二个输入为控制量,0表示无向图,1表示有向图。默认值为0r_size=size(rel);ifnargin<2control=0;endifr_size(1)~=r_size(2)disp('WrongInput!Theinputmustbeasquarematrix!');return;endlen=r_size(1);rho=10;%限制图尺寸的大小r=2/1.05^len;%点的半径theta=0:(2*pi/len):2*pi*(1-1/
2、len);[pointx,pointy]=pol2cart(theta',rho);theta=0:pi/36:2*pi;[tempx,tempy]=pol2cart(theta',r);point=[pointx,pointy];holdonfori=1:lentemp=[tempx,tempy]+[point(i,1)*ones(length(tempx),1),point(i,2)*ones(length(tempx),1)];plot(temp(:,1),temp(:,2),'r');text(point(i,1)-0.3,point(i,2),num2str(i));%
3、画点endfori=1:lenforj=1:lenifrel(i,j)link_plot(point(i,:),point(j,:),r,control);%连接有关系的点endendendset(gca,'XLim',[-rho-r,rho+r],'YLim',[-rho-r,rho+r]);axisoff%%functionlink_plot(point1,point2,r,control)%连接两点temp=point2-point1;if(~temp(1))&&(~temp(2))return;%不画子回路;endtheta=cart2pol(temp(1),temp(2
4、));[point1_x,point1_y]=pol2cart(theta,r);point_1=[point1_x,point1_y]+point1;[point2_x,point2_y]=pol2cart(theta+(2*(theta5、tart,stop分别为起点和终点%l为箭头的线长度,默认为主线长的1/10t=0.1;ang=15/180*pi;temp=stop(1)-start(1)+j*(stop(2)-start(2));L=abs(temp);P=angle(temp);ifnargin<3l=t*L;endp1=P-ang;p2=P+ang;a=[stop(1)-l*cos(p1)stop(2)-l*sin(p1)];b=[stop(1)-l*cos(p2)stop(2)-l*sin(p2)];holdonplot([start(1)stop(1)],[start(2)stop(2)]);plo
6、t([a(1)stop(1)],[a(2)stop(2)]);plot([b(1)stop(1)],[b(2)stop(2)]);end效果图如下:邻接矩阵为010000000001100001001101010001100010的有向图:小程序,小兴趣。欢迎加入编程爱好者群(69321895)一起成长。