matlab绘制动态图

您所在的位置:网站首页 matlab怎么画动图曲线 matlab绘制动态图

matlab绘制动态图

2024-06-16 19:25| 来源: 网络整理| 查看: 265

常用的包括两种方式:plot方式及drawnow方式 以导弹跟踪问题为例子。 位于坐标原点的A船向位于其正东⽅20个单位的B 船发射导弹,导弹始终对准B船, B船以时速V单位(常数)沿东北⽅向逃逸。若导弹的速度为3V,导弹的射程是50个单位,画出导弹运⾏的曲线,导弹是否能在射程内击中B船?

plot方式 原理

一定循环次数后画一下移动后的点(若想看动态效果一定要pause一小段时间)

代码 clc;clear DeltaT = 0.0000001; n = 1000000000; % 导弹最长运行时间100s PositionA = [0,0]; % A的坐标 PositionB = [20,0]; % B的坐标 % V = randi(100); %速度为1~100个单位内的随机数 V = 200; % V若是0-100,曲线画的太慢 a = atan(V*DeltaT/sqrt(2)/(V*DeltaT/sqrt(2)+20)); % 角度a1 disp('正在模拟测试中'); k = 0; % 用于画图,当循环次数达到500时画一个点 plot(PositionA(1),PositionA(2),'.k','MarkerSize',1); % 画出导弹和B船所在的坐标,点的大小为1,颜色为黑色(k),用小点表示 grid on; % 打开网格线 hold on; % 不关闭图形,继续画图 plot(PositionB(1),PositionB(2),'.k','MarkerSize',1); % 画出导弹和B船所在的坐标,点的大小为1,颜色为黑色(k),用小点表示 hold on; % 不关闭图形,继续画图 axis([0 30 0 10]) % 固定x轴的范围为0-30 固定y轴的范围为0-10 for i=1:n PositionB = PositionB + [V*DeltaT/sqrt(2),V*DeltaT/sqrt(2)]; a = atan(PositionB(2)-PositionA(2)) / (PositionB(1)-PositionA(1)); PositionA = PositionA + [3*V*DeltaT*cos(a),3*V*DeltaT*sin(a)]; k = k+1; if mod(k,500) == 0 % 每刷新500次时间就画出下一个导弹和B船所在的坐标 mod(m,n)表示求m/n的余数 plot(PositionA(1),PositionA(2),'.k','MarkerSize',1); % 画出导弹和B船所在的坐标,点的大小为1,颜色为黑色(k),用小点表示 hold on; % 不关闭图形,继续画图 plot(PositionB(1),PositionB(2),'.k','MarkerSize',1); % 画出导弹和B船所在的坐标,点的大小为1,颜色为黑色(k),用小点表示 hold on; % 不关闭图形,继续画图 pause(0.001); % 暂停0.001s后再继续下面的操作 end if (abs(sum(PositionA-PositionB))


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3