matlab_plot实时画点
对于plot画线暂时总结出来几点需要注意的:一、画两点之间的连线绘图的结果是坐标( 1 , 5 )--> (2 , 8 );所以在画连续的动态图的时候,需要正确标注好每次坐标 。对多个点,比如在矩阵中的多组数据,可以用不同的表示来展现自己想要的结果。可以看见 x 的所有数据...
对于plot画线暂时总结出来几点需要注意的:
一、画两点之间的连线
绘图的结果是坐标( 1 , 5 )--> (2 , 8 );
所以在画连续的动态图的时候,需要正确标注好每次坐标 。
对多个点,比如在矩阵中的多组数据,可以用不同的表示来展现自己想要的结果。
可以看见 x 的所有数据对按行连在一条线上
对矩阵进行转置,结果为 (1,2)--> (10,20)连线
二、画出动态图
在数据循环里(for),先画两个点的图,然后 pause
for i=1:length(data)
plot([X(i,1),Y(i,1)],[X(i,2),Y(i,2)],'-b.','MarkerSize',10);
hold on; %保持让上一个点显示
pause(0.05); %暂停,就可以看到点的变化走向
end
这是参考博客 https://blog.csdn.net/u010480899/article/details/78234884/ 他提到的两种绘制动态图的方法都很好
2.1 方法一
close all;
clear all;
clc;
clf;
xlabel('X轴');
ylabel('Y轴');
box on;
axis([-2,2,-2,2]);
axis equal;
pause(1);
h=line(NaN,NaN,'marker','o','linesty','-','erasemode','none');
t=6*pi*(0:0.02:1);
for n=1:length(t)
set(h,'xdata',2*cos(t(1:n)),'ydata',sin(t(1:n)));
pause(0.05);
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if n==1
imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
else
imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end
2.1 方法二
close all;
clear all;
clc;
clf;
%白色背景
axis([-2,2,-2,2]);
xlabel('X轴');
ylabel('Y轴');
%四周的边框
box on;
%绘图区域
t=0:0.02:10;
Nt=size(t,2);
x=2*cos(t(1:Nt));
y=sin(t(1:Nt));
%循环绘图
for i=1:Nt;
cla;
hold on;
plot(x,y)
plot(x(i),y(i),'o');
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if i==1
imwrite(imind,cm,'test.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
else
imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',1e-4);
end
end
三、plot绘图时的颜色和标记设置
画线:plot ( [x1,y1] , [x2,y2] , '.-b' ); % 线上的点标记是 . ,线的格式是 - ,线的颜色是 蓝色。
画点:plot( x , y, 'or' , 'MarkerSize', 5); %点的形状是 圆圈 o ,点的尺寸是 5 号。
常见的点形状,线形状,颜色如下:
线型 | 说明 | 标记符 | 说明 | 颜色 | 说明 |
- | 实线(默认) | + | 加号符 | r | 红色 |
-- | 双划线 | o | 空心圆 | g | 绿色 |
: | 虚线 | * | 星号 | b | 蓝色 |
:. | 点划线 | . | 实心圆 | c | 青绿色 |
x | 叉号符 | m | 洋红色 | ||
s(square) | 正方形 | y | 黄色 | ||
d | 菱形 | k | 黑色 | ||
^ | 上三角形 | w | 白色 |
更多推荐
所有评论(0)