MATLAB画动图

在使用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;

三、综合效果展示

用上之前的画圆,画直线,以及区域填充颜色,最后展示效果图为:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷茫的桔子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值