在使用matlab的时候经常忘记一些常用指令,现进行总结
一、常规属性
1.限制坐标系范围:
axis([-100,300,-70,250]);
axis equal;
2.横纵坐标和标题
xlabel("X(m)");
ylabel("Y(m)")
title("Trajectories of the robots")
3.添加文字:
text(p_e(num_e1,i-1,1)+0.3,p_e(num_e1,i-1,2)+0.3,"拦截成功");
4.画直线
x=[-3,4];y=[2,5];
plot(x,y,'k','linewidth',1.5);
5.由直线画区域
figure(1);
xmax=5;
ymax=3;
hold on;
grid on;
x=[-xmax,xmax];y=[ymax,ymax];
plot(x,y,'k','linewidth',1.5);
x=[-xmax,xmax];y=[-ymax,-ymax];
plot(x,y,'k','linewidth',1.5);
x=[xmax, xmax];y=[-ymax,ymax];
plot(x,y,'k','linewidth',1.5);
x=[-xmax, -xmax];y=[-ymax,ymax];
plot(x,y,'k','linewidth',1.5);
x=[3, 3];y=[-ymax,ymax];
plot(x,y,'k','linewidth',1.5);
6.给区域上色:
x=[3,5];y=[3,3];
area(x,y,-3,'FaceColor','#A94047','FaceAlpha',.6);
x=[-5,3];y=[3,3];
area(x,y,-3,'FaceColor','#004073','FaceAlpha',.4);
关于区域的颜色推荐,可以参考以下网页:
ColorSpace - Color Palettes Generator and Color Gradient Tool
选择你想要的颜色代号,将上述代码中的#A94047进行替换即可,'FaceAlpha',.6代表颜色的深浅度
7.画点
p_p=[0,1;1,2;-1,2.5]
for num=1:3
plot(p_p(num,1),p_p(num,2),'--bs','LineWidth',1,'MarkerSize',5,'MarkerEdgeColor','b','MarkerFaceColor',"b");
end
for num=1:3
plot(p_p(num,1),-p_p(num,2),'--rv','LineWidth',1,'MarkerSize',5,'MarkerEdgeColor','r','MarkerFaceColor',"r");
end
8.画线
for num=1:3
plot(p_p,p_p,'--ro','LineWidth',1,'MarkerSize',5,'MarkerEdgeColor','g','MarkerFaceColor',"g");
end
9.画圆
ff(num_record)=rectangle('position',[p_p(num,1)-d,p_e(num,2)-d,d*2,d*2],'curvature',[1,1],'EdgeColor','c','Linestyle','-.','Linewidth',1.5);
二、画动态图
1.擦除法
这种方法是本人常用的一种画法,可能并不正规
%创建画图句柄,可以多创建一些,个人习惯100个
function ff=initial()
%构建句柄
for i=1:100
ff(i)=plot(0,0);
end
end
在m文件里:
%创建画图句柄
ff=initial();
%使用ff
p_p=[0,1;1,2;-1,2.5]
for num=1:3
ff(num)=plot(p_p(num,1),p_p(num,2),'--bs','LineWidth',1);
end
在每个循环开始的时候,先对ff进行擦除,再进行画图
%创建画图句柄
ff=initial();
for i=2:2000
for ii=1:100
delete(ff(ii));
end
%使用ff
p_p=[0,1;1,2;-1,2.5]
for num=1:3
ff(num)=plot(p_p(num,1),p_p(num,2),'--bs','LineWidth',1);
end
end
在我之前的一篇博客中,黑色的线就是通过这种方法绘制的,蓝色的线是没有经过擦除的线无人机编队控制算法(基于一致性理论的编队控制)_迷茫的桔子的博客-优快云博客_编队控制
2创建GIF动画
在for循环里面,画图代码后面,写入这样一段代码,就可以把动画写入指定路径的gif文件中了
F=getframe(gcf);
I=frame2im(F);
[I,map]=rgb2ind(I,256);
if pic_num == 1
imwrite(I,map,'D:\file\test.gif','gif', 'Loopcount',inf,'DelayTime',0.2);
else
imwrite(I,map,'D:\file\test.gif','WriteMode','append','DelayTime',0.2);
end
pic_num = pic_num + 1;
drawnow;
三、综合效果展示
用上之前的画圆,画直线,以及区域填充颜色,最后展示效果图为: