Matlab中使用Plot函数动态画图方法
利用MATLAB编程实现动态画图功能

自动化专业综合设计报告设计题目:利用MATLAB编程实现动态画图功能所在实验室:自动化系统仿真实验室指导教师:学生姓名班级计082-2 班学号200825502210撰写时间:2012-3-1 成绩评定:一.设计目的a)进一步熟悉Matlab的界面及基本操作;b)了解并掌握Matlab中一些函数的作用与使用;c)学会如何利用Matlab实现绘图功能,并可使坐标系动态设置。
二.设计要求外部输入数据动态设置坐标系,然后绘制图形,并举例演示。
三.设计内容Matlab用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
我设计的题目是利用matlab的GUI编程实现动态的画图功能。
GUI运行时主界面如下:在文本输入框中分别输入x、y、z的值,其中y的值可以是包含x的表达式,z的值可以是包含x和y的表达式。
当y和z的值均为0时,绘制x的曲线;当z的值为0时,绘制二维图形;当z的值不为0时,可以绘制三维图形和三维曲面图。
设计步骤如下:1:打开matlab软件2:建立一个GUI文件,保存到work中3:添加控件主界面,包含的控件有:EditText,StaticText,Axes,PushButton。
其中EditText用于xyz值的输入,StaticText用于显示提示,Axes用于显示绘制的图形,PushButton作为绘图按钮。
4:编写程序程序的编写主要分为两个部分,一个是数据的采集,一个是绘图。
数据采集部分用到的函数主要是str2num、eval函数,具体程序如下: X值输入:function editX_Callback(hObject, eventdata, handles)clchandles.x=str2num(get(hObject,'string'))handles.xhandles=gcboguidata(hObject, handles);Y值输入:function edit2_Callback(hObject, eventdata, handles)clcx=handles.x;handles.y=eval(get(hObject,'string'))handles.yhandles=gcboguidata(hObject, handles);Z值输入:function edit3_Callback(hObject, eventdata, handles)clcx=handles.x;y=handles.y;handles.z=eval(get(hObject,'string'));if handles.z==0set(handles.pushbutton1,'Visible','on');set(handles.pushbutton4,'Visible','off');set(handles.pushbutton5,'Visible','off');elseset(handles.pushbutton1,'Visible','off');set(handles.pushbutton4,'Visible','on');set(handles.pushbutton5,'Visible','on');endhandles.zhandles=gcboguidata(hObject, handles);handles.zhandles=gcboguidata(hObject, handles);绘图部分用到的函数主要有axis(),plot(),plot3(),具体程序如下:绘制二维图形:clcx=handles.x;y=handles.y;handles.x=str2num(get(handles.xhandles,'string'))handles.y=eval(get(handles.yhandles,'string'))handles.z=eval(get(handles.zhandles,'string'));xmin=min(handles.x)-min(handles.x)/10;xmax=max(handles.x)+min(handles.x)/10;ymin=min(handles.y)-min(handles.y)/10;ymax=max(handles.y)+min(handles.y)/10;if y==0q=plot(handles.x)elsev=[xmin xmax ymin ymax]; axis(v);q=plot(handles.x,handles.y);endxlabel('X Öá');ylabel('YÖá');绘制三维图形:function pushbutton4_Callback(hObject, eventdata, handles) clcx=handles.x;y=handles.y;handles.y=eval(get(handles.yhandles,'string'))handles.z=eval(get(handles.zhandles,'string'));xmin=min(handles.x)-min(handles.x)/10;xmax=max(handles.x)+min(handles.x)/10;ymin=min(handles.y)-min(handles.y)/10;ymax=max(handles.y)+min(handles.y)/10;zmin=min(handles.z)-min(handles.z)/10;zmax=max(handles.z)+min(handles.z)/10;v=[xmin xmax ymin ymax zmin zmax];axis(v);q=plot3(handles.x,handles.y,handles.z);绘制三维曲面图:function pushbutton5_Callback(hObject, eventdata, handles) clcx=handles.xy=handles.yhandles.x=eval(get(handles.editX,'string'));handles.y=eval(get(handles.yhandles,'string'))xmin=min(handles.x)-min(handles.x)/10;xmax=max(handles.x)+min(handles.x)/10;ymin=min(handles.y)-min(handles.y)/10;ymax=max(handles.y)+min(handles.y)/10;zmin=min(handles.z)-min(handles.z)/10;zmax=max(handles.z)+min(handles.z)/10;v=[xmin xmax ymin ymax zmin zmax];axis(v);x1=ones(size(handles.y))*handles.x;y1=handles.y*ones(size(handles.x));r=sqrt(x1.^2+ y1.^2)+eps;z=sin(r)./rq=mesh(z);四.设计实验结果及分析当x=-10:0.01:100,y=sin(x),z=0时,得到的图形如下:当x=-10:0.01:10,y=sin(x),z=sin(x)+cos(y)时,得到的图形如下(三维图形):当x=-10:0.1:10,y=x’,z=1时,得到的图形如下(三维曲面图):五.设计感受我之前对于matlab编程的认识只是局限于M文件编程以及命令窗口编程。
matlab中plot3函数的用法

MATLAB是一种强大的科学计算软件,它提供了丰富的绘图函数,其中包括plot3函数,该函数能够绘制三维曲线图。
在本文中,我们将详细介绍plot3函数的用法,包括参数的设置和实际应用。
1. plot3函数的基本用法plot3函数是MATLAB中用于绘制三维曲线图的函数,其基本语法为:plot3(X,Y,Z)其中,X、Y和Z分别是包含曲线上点的x、y和z坐标的向量。
当调用plot3函数时,MATLAB会将这些点连成曲线,并绘制在三维坐标系中。
2. 参数设置plot3函数可以接受多达四个输入参数,使用不同的参数可以实现不同的效果。
常用的参数包括线型、线宽和颜色等。
以下是plot3函数中常用的参数设置方法:- 指定线型:plot3(X,Y,Z,'LineStyle'),其中LineStyle可以是实线('-')、虚线('--')、点线(':')等。
- 指定线宽:plot3(X,Y,Z,'LineWidth',width),其中width为线的宽度。
- 指定颜色:plot3(X,Y,Z,'Color',color),其中color可以是预定义的颜色('r'表示红色)或RGB值。
3. 点和线的样式设置除了基本的参数设置外,plot3函数还可以根据需要设置点和线的样式。
可以使用plot3(X,Y,Z,'o')来绘制原点,使用plot3(X,Y,Z,'*')来绘制星号等。
这些样式设置可以使曲线图更加美观和易于理解。
4. 多个曲线的绘制在实际应用中,可能需要在同一张图中绘制多条曲线,这时可以多次调用plot3函数来实现。
例如:plot3(X1,Y1,Z1)hold onplot3(X2,Y2,Z2)hold off这样就可以在同一张图中绘制出两条曲线。
需要注意的是,为了在同一张图中绘制多条曲线,需要使用hold on和hold off命令来控制绘图区的保持和释放。
matlab中绘制多条曲线的方法

在MATLAB中,绘制多条曲线是非常常见的需求。
通过绘制多条曲线,我们可以直观地比较不同数据之间的关系,分析数据的变化趋势,从而更好地理解数据的特点和规律。
在本文中,我们将介绍在MATLAB中绘制多条曲线的方法,希望能够帮助读者更加熟练地使用MATLAB进行数据可视化和分析。
一、使用plot函数绘制多条曲线在MATLAB中,最常用的绘制曲线的函数是plot函数。
通过plot函数,我们可以轻松地将多组数据绘制成曲线,并在同一张图上进行比较和分析。
下面是使用plot函数绘制多条曲线的基本步骤:1. 准备数据我们需要准备要绘制的多组数据。
假设我们有两组数据x1和y1,以及另外两组数据x2和y2。
这些数据可以是向量、矩阵,甚至是函数表达式。
2. 绘制曲线接下来,我们可以使用plot函数将数据绘制成曲线。
具体的代码如下所示:```matlab绘制第一组数据plot(x1, y1, 'r-'); 'r-'表示红色实线hold on; 将图形保持在同一张图上绘制第二组数据plot(x2, y2, 'b--'); 'b--'表示蓝色虚线hold off; 取消保持图形在同一张图上```通过以上代码,我们可以将两组数据分别绘制成红色实线和蓝色虚线的曲线,并显示在同一张图上。
这样,我们就可以方便地对两组数据进行比较和分析了。
3. 添加图例和标签我们可以通过legend函数添加图例,通过xlabel和ylabel函数添加坐标轴标签,通过title函数添加图标题,使得图像更加清晰和易懂。
二、使用plot3函数绘制三维曲线除了在二维平面上绘制曲线外,MATLAB还提供了plot3函数用于在三维空间中绘制曲线。
使用plot3函数绘制多条三维曲线的步骤与使用plot函数类似,只是需要将数据扩展到三维空间,并指定绘制的坐标系。
具体的代码如下所示:```matlab准备三维数据[x1, y1, z1] = meshgrid(-2:0.2:2, -2:0.2:2, -2:0.2:2);[x2, y2, z2] = meshgrid(-2:0.2:2, -2:0.2:2, -2:0.2:2);v1 = x1.*exp(-x1.^2 - y1.^2 - z1.^2);v2 = x2.*exp(-x2.^2 - y2.^2 - z2.^2);绘制三维曲线plot3(x1, y1, z1, 'r-', 'LineWidth', 2); 'r-'表示红色实线hold on;plot3(x2, y2, z2, 'b--', 'LineWidth', 2); 'b--'表示蓝色虚线hold off;xlabel('X');ylabel('Y');zlabel('Z');legend('Exp(-x^2 - y^2 - z^2)', 'X*Exp(-x^2 - y^2 - z^2)');title('Three-Dimensional Curve');```通过以上代码,我们可以将两组三维数据绘制成红色实线和蓝色虚线的曲线,并显示在同一张图上。
matlab中plot函数的用法介绍

∙博文打印预览∙打印图片∙选择字号:超大大中小∙阿元[转载]matlab plot阿元/xywatersky 2010-12-30 09:48:08原文地址:matlab plot作者:blueboylovesky/106503841.html1 plot(x):x为长度为n的数值向量,坐标的纵坐标是向量x,横坐标为matlab系统根据x向量的元素序号自动生成的从1开始的向量。
2 plot(x,y):纵坐标是y,横坐标是x。
x,y向量的数目必须相等。
3 axis([x1,x2,y1,y2]):设定坐标轴的范围。
4 plot (x):x为m*n的矩阵,plot(x)命令为矩阵的每一列画出一条线,共n条,曲线的横坐标为向量1:m,m是矩阵的行数。
5 plot(z): 可以复制复向量曲线它与(plot(real(z),imag(z))等效,以实部为横坐标,虚部为纵坐标。
6 plot(x1,y1,x2,y2...) :绘制多条曲线绘制图形的一般步骤:1 曲线数据备份对于二维曲线,横坐标和纵坐标数据变量;对于三维曲面,矩阵参变量和对应的函数值2 指定图形窗口和子图位置:默认时,打开Figure No.1窗口或当前窗口,当前子图;也可以打开指定的图形窗口和子图3 设置曲线的绘制方式:线型,色彩,数据点形4 设置坐标轴:坐标的范围,刻度和坐标分格5 图形注释图名,坐标名,图例,文字说明6 着色,明暗,灯光,材质处理(仅对三维图形处理)7 视点,三度(横,纵,高)比(仅对三维图形处理)8 图形的精细修饰(图形句柄操作):利用对象属性值设置利用图形窗工具条进行设置说明:1)步骤1和3是最基本的绘图步骤,matlab一般只需要这2步就可以绘制出图形。
2)步骤2一般在图形较多的情况下,需要制定图形窗口,子图时使用。
3)除了1 2 3的其他步骤,用户可以根据自己的需要改变前后次序。
多个图形绘制的方法:1 指定图形窗口需要多个图形窗口同时打开时,可以使用figure语句:figure (n):figure(1),figure(2)...2 同一个窗口多个子图可以通过在plot命令前加上subplot命令来实现subplot(m,n,k) % 使m*n幅子图中的第k幅成为当前图说明:将图形窗口划分为m*n幅子图,k是当前子图的编号。
Matlab中使用Plot函数动态画图方法总结

Matlab中使用Plot函数动态画图方法总结Matlab除了强大的矩阵运算,仿真分析外,绘图功能也是相当的强大,静态画图没什么问题,由于Matlab本身的多线程编程缺陷,想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情,下面总结几种方法。
一. AXIS 移动坐标系这种方法是最简单的一种方法,适合于数据已经全部生成的场合,先画图,然后移动坐标轴。
实例代码如下:%%%先画好,然后更改坐标系%在命令行中使用Ctrl+C 结束t=0:0.1:100*pi;m=sin(t);plot(t,m);x=-2*pi;axis([x,x+4*pi,-2,2]);grid onwhile 1if x>max(t)break;endx=x+0.1;axis([x,x+4*pi,-2,2]); %移动坐标系pause(0.1);end二. Hold On 模式此种方法比较原始,适合于即时数据,原理是先画上一帧,接着保留原始图像,追加下一幀图像,此种方式比较繁琐,涉及画图细节,并且没有完整并连续的Line对象数据。
例如:%%% Hold On 法% 此种方法只能点,或者分段划线hold offt=0;m=0;t1=[0 0.1]; %要构成序列m1=[sin(t1);cos(t1)];p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);x=-1.5*pi;grid on;for i=1:100hold ont=0.1*i; %下一个点m=t-floor(t);t1=t1+0.1; %下一段线(组)m1=[sin(t1);cos(t1)];p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);x=x+0.1;axis([x x+2*pi -1.5 1.5]);pause(0.01);end三. Plot 背景擦除模式这种模式比较适合画动画,效率比较高,刷新闪烁小,适合即时数据,最终的Line结构数据完整。
matlab中plot的用法及功能

MATLAB中的绘图的使用和功能对于可视化和分析数据至关重要。
在数据可视化方面,MATLAB中的地块功能是一个强大的工具,可以让
用户创建各种类型的地块,如线地块,散地块,条地块等等。
MATLAB中的图案功能允许用户创建2D和3D图案,使其成为在不
同维度显示数据的多功能工具。
这样可以更全面地了解数据及其关系。
地块功能的一个关键特征是能够自定义地块的外观。
用户可以修改颜色,风格,和标记选项,使图案更具有视觉吸引力,更容易解释。
在
向其他人提交数据时,这样做可能特别有用,因为这样可以进行更加
精细和专业的外观展示。
除了自定义地块的外观外,地块功能还允许用户添加标题,标签,和
传说,为显示的数据提供上下文和解释。
这使得其他人更容易理解阴
谋的意义及其影响。
地图功能的另一个重要功能是其处理多个数据集并覆盖在同一地图上
的能力。
这样可以方便地比较不同数据集,从而更容易确定模式和趋势。
地块功能还允许创建子块,可用于显示同一图内的多个地块。
在比较
多组数据或以更有条理和更有条理的方式提出数据时,这样做特别有用。
MATLAB中的绘图功能支持数据刷新等交互功能,这使得用户可以交互地探索和分析绘图内的数据点。
这有助于确定外部或感兴趣的具体数据点。
总体来说,MATLAB中的绘图功能是一个多功能和强大的工具,用于2D和3D的可视化数据,自定义图的外观,增加上下文和解释,处理多个数据集,创建子板,并支持数据刷新等交互功能。
它对于从事MATLAB数据工作的人来说是一个必不可少的工具,能够大大增进对数据的理解和列报。
matlab中plot的功能及其用法

matlab中plot的功能及其用法Matlab是一种非常强大的数学软件,它可以用于各种数学计算和数据分析。
其中,plot是Matlab中最常用的功能之一,它可以用于绘制各种图形,如折线图、散点图、柱状图等。
本文将介绍plot的功能及其用法。
一、plot的基本语法plot的基本语法如下:plot(x,y)其中,x和y分别是要绘制的数据的横坐标和纵坐标。
例如,要绘制一条折线图,可以使用以下代码:x = 1:10;y = [1 2 3 4 5 6 7 8 9 10];plot(x,y);这段代码将绘制一条从(1,1)到(10,10)的折线图。
二、plot的常用参数除了基本语法外,plot还有许多常用参数,可以用于控制图形的样式和属性。
下面是一些常用的参数:1. 颜色参数plot可以使用不同的颜色来绘制图形。
常用的颜色参数包括:- 'r':红色- 'g':绿色- 'b':蓝色- 'c':青色- 'm':洋红色- 'y':黄色- 'k':黑色- 'w':白色例如,要绘制一条红色的折线图,可以使用以下代码:plot(x,y,'r');2. 线型参数plot还可以使用不同的线型来绘制图形。
常用的线型参数包括:- '-':实线- '--':虚线- ':':点线- '-.':点划线例如,要绘制一条虚线的折线图,可以使用以下代码:plot(x,y,'--');3. 标记参数plot还可以在数据点上添加标记。
常用的标记参数包括:- 'o':圆圈- '+':加号- '*':星号- '.':点- 'x':叉号例如,要在数据点上添加星号标记,可以使用以下代码:plot(x,y,'*');4. 标题和标签plot还可以添加标题和标签。
【matlab基础篇03】一文带你全面了解plot绘图函数的使用(超详细+图文并茂)

【matlab基础篇03】⼀⽂带你全⾯了解plot绘图函数的使⽤(超详细+图⽂并茂)快速⼊门matlab,系统地整理⼀遍,如何你和我⼀样是⼀个新⼿,那么此⽂很适合你;⽂章⽬录1 前⾔如果你是和我⼀样的⼩⽩,强烈推荐看看这⾥,需要合理地利⽤官⽅的⽂档,通常我觉得官⽅⽂档是最好的,没有之⼀,在命令终端输⼊help plot,可以看到详细的帮助⽂档;具体如下;>> help plotplot Linear plot.plot(X,Y) plots vector Y versus vector X. If X or Y is a matrix,then the vector is plotted versus the rows or columns of the matrix,whichever line up. If X is a scalar and Y is a vector, disconnectedline objects are created and plotted as discrete points vertically atX.plot(Y) plots the columns of Y versus their index.If Y is complex, plot(Y) is equivalent to plot(real(Y),imag(Y)).In all other uses of plot, the imaginary part is ignored.Various line types, plot symbols and colors may be obtained withplot(X,Y,S) where S is a character string made from one elementfrom any or all the following 3 columns:b blue . point - solidg green o circle : dottedr red x x-mark -. dashdotc cyan + plus -- dashedm magenta * star (none) no liney yellow s squarek black d diamondw white v triangle (down)^ triangle (up)< triangle (left)> triangle (right)p pentagramh hexagramFor example, plot(X,Y,'c+:') plots a cyan dotted line with a plusat each data point; plot(X,Y,'bd') plots blue diamond at each datapoint but does not draw any line.plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined bythe (X,Y,S) triples, where the X's and Y's are vectors or matricesand the S's are strings.For example, plot(X,Y,'y-',X,Y,'go') plots the data twice, with asolid yellow line interpolating green circles at the data points.The plot command, if no color is specified, makes automatic use ofthe colors specified by the axes ColorOrder property. By default,plot cycles through the colors in the ColorOrder property. Formonochrome systems, plot cycles over the axes LineStyleOrder property.Note that RGB colors in the ColorOrder property may differ fromsimilarly-named colors in the (X,Y,S) triples. For example, thesecond axes ColorOrder property is medium green with RGB [0 .5 0],while plot(X,Y,'g') plots a green line with RGB [0 1 0].If you do not specify a marker type, plot uses no marker.If you do not specify a line style, plot uses a solid line.plot(AX,...) plots into the axes with handle AX.plot returns a column vector of handles to lineseries objects, onehandle per plotted line.The X,Y pairs, or X,Y,S triples, can be followed byparameter/value pairs to specify additional propertiesof the lines. For example, plot(X,Y,'LineWidth',2,'Color',[.6 0 0])will create a plot with a dark red line width of 2 points.Examplex = -pi:pi/10:pi;y = tan(sin(x)) - sin(tan(x));plot(x,y,'--rs','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','g',...'MarkerSize',10)与plot相关的函数还有plottools, semilogx, semilogy, loglog, plotyy, plot3, grid,title, xlabel, ylabel, axis, axes, hold, legend, subplot, scatter.2 plot2.1 显⽰正弦波显⽰⼀个简单的正弦函数;x=0:2*pi/100:2*pi;y=sin(x);plot(x,y);2.2 修改颜⾊参数颜⾊bgrcmykw下⾯修改为红⾊:x=0:2*pi/100:2*pi;y=sin(x);plot(x,y,'r');结果如下:2.3 修改点的形状参数形状图标-solido circlex x-mark+plus*stars squared diamondv triangle (down)^triangle (up)<triangle (left)>triangle (right)ppentagram h hexagram参数形状图标将点形状显⽰为六边形;x=0:2*pi/20:2*pi;y=sin(x);plot(x,y,'h','MarkerSize',10);结果如下:相关参数:MarkerEdgeColor :点边框颜⾊;MarkerFaceColor :点表⾯颜⾊;MarkerSize :点的⼤⼩;2.4 修改线的形状符号形状:dotted -.dashdot --dashedx=0:2*pi/20:2*pi;y=sin(x);plot(x,y,':','LineWidth',3);LineWidth 的参数为线宽;x=0:2*pi/20:2*pi;y=sin(x);plot(x,y,'-.','LineWidth',3);x=0:2*pi/20:2*pi;y=sin(x);plot(x,y,'--','LineWidth',3);2.5 多个参数修改下⾯修改多个参数属性显⽰⼀下正弦波;x = 0:2*pi/100:2*pi;y = sin(x);plot(x,y,'--rs','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','g',... 'MarkerSize',10);结果如下:3 subplotsubplot 的使⽤⽅法如下:subplot Create axes in tiled positions.H = subplot(m,n,p), or subplot(mnp), breaks the Figure windowinto an m-by-n matrix of small axes, selects the p-th axes forthe current plot, and returns the axes handle. The axes arecounted along the top row of the Figure window, then the second row, etc. For example,subplot(2,1,1), PLOT(income)subplot(2,1,2), PLOT(outgo)通俗的讲:subplot(⾏,列,index)注意:plot函数要在subplot表明位置之后再调⽤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%%%先画好,然后更改坐标系%在命令行中使用 Ctrl+C 结束t=0:0.1:100*pi;m=sin(t);plot(t,m);x=-2*pi;axis([x,x+4*pi,-2,2]);grid onwhile 1if x>max(t)break;endx=x+0.1;axis([x,x+4*pi,-2,2]); %移动坐标系pause(0.1);end%%% Hold On 法% 此种方法只能点,或者分段划线hold offt=0;m=0;t1=[0 0.1]; %要构成序列m1=[sin(t1);cos(t1)];p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);x=-1.5*pi;axis([x x+2*pi -1.5 1.5]);grid on;for i=1:100hold ont=0.1*i; %下一个点m=t-floor(t);t1=t1+0.1; %下一段线(组)m1=[sin(t1);cos(t1)];p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5); x=x+0.1;axis([x x+2*pi -1.5 1.5]);pause(0.01);end%%%采用背景擦除的方法,动态的划点,并且动态改变坐标系% t,m 均为一行,并且不能为多行t=0;m=0;p = plot(t,m,'*',...'EraseMode','background','MarkerSize',5);x=-1.5*pi;axis([x x+2*pi -1.5 1.5]);grid on;for i=1:1000t=0.1*i; %两个变量均不追加m=sin(0.1*i);set(p,'XData',t,'YData',m)x=x+0.1;drawnowaxis([x x+2*pi -1.5 1.5]);pause(0.1);end%%%采用背景擦除的方法,动态的划线,并且动态改变坐标系% 多行划线t=[0]m=[sin(t);cos(t)]p = plot(t,m,...'EraseMode','background','MarkerSize',5);x=-1.5*pi;axis([x x+2*pi -1.5 1.5]);grid on;for i=1:1000t=[t 0.1*i]; %Matrix 1*(i+1) m=[m [sin(0.1*i);cos(0.1*i)]]; %Matrix 2*(i+1) set(p(1),'XData',t,'YData',m(1,:))set(p(2),'XData',t,'YData',m(2,:))drawnowx=x+0.1;axis([x x+2*pi -1.5 1.5]);pause(0.5);endMatlab中使用Plot函数动态画图方法总结本文来自: MATLAB爱好者论坛(MATLABFAN) 作者: admin日期: 2009-8-17 11:23 阅读: 550人打印收藏大中小Plot, Matlab, 函数, 动态, 画图Matlab除了强大的矩阵运算,仿真分析外,绘图功能也是相当的强大,静态画图没什么问题,由于Matlab本身的多线程编程缺陷,想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情,下面总结几种方法。
一. AXIS 移动坐标系这种方法是最简单的一种方法,适合于数据已经全部生成的场合,先画图,然后移动坐标轴。
实例代码如下:1.%%2.%先画好,然后更改坐标系3.%在命令行中使用 Ctrl+C 结束4.t=0:0.1:100*pi;5.m=sin(t);6.plot(t,m);7.x=-2*pi;8.axis([x,x+4*pi,-2,2]);9.grid on10.while 111.if x>max(t)12.break;13.end14.x=x+0.1;15.axis([x,x+4*pi,-2,2]); %移动坐标系16.pause(0.1);17.end复制代码二. Hold On 模式此种方法比较原始,适合于即时数据,原理是先画上一帧,接着保留原始图像,追加下一幀图像,此种方式比较繁琐,涉及画图细节,并且没有完整并连续的Line对象数据。
例如:1.%%2.% Hold On 法3.% 此种方法只能点,或者分段划线4.hold off5.t=0;6.m=0;7.t1=[0 0.1]; %要构成序列8.m1=[sin(t1);cos(t1)];9.p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);10.x=-1.5*pi;11.axis([x x+2*pi -1.5 1.5]);12.grid on;13.14.for i=1:10015. hold on16. t=0.1*i; %下一个点17. m=t-floor(t);18. t1=t1+0.1; %下一段线(组)19. m1=[sin(t1);cos(t1)];20. p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);21. x=x+0.1;22. axis([x x+2*pi -1.5 1.5]);24.end复制代码三. Plot 背景擦除模式这种模式比较适合画动画,效率比较高,刷新闪烁小,适合即时数据,最终的Line结构数据完整。
了解此方法之前要搞清楚 Plot函数的原型是什么: Plot函数,输入为 X-Y (-X)坐标元组、以及“属性”-“值对,输出为一个列向量(每条曲线岁对应的Line结构Handle,每一行代表一个线条的handles), 每一线条都有 XData,YData 向量。
如果你画了2条线,那么会返回2×1的向量。
重新画图不需要重新书写 Plot,只需要刷新图像即可,使用drawnow函数。
完整实例如下:1. 画一个点的动画:1.%%2.%采用背景擦除的方法,动态的划点,并且动态改变坐标系3.% t,m 均为一行,并且不能为多行4.t=0;5.m=0;6.p = plot(t,m,'*',...7.'EraseMode','background','MarkerSize',5);8.x=-1.5*pi;9.axis([x x+2*pi -1.5 1.5]);10.grid on;11.12.for i=1:100013. t=0.1*i; %两个变量均不追加14. m=sin(0.1*i);15. set(p,'XData',t,'YData',m)17. drawnow18. axis([x x+2*pi -1.5 1.5]);19. pause(0.1);20.end复制代码2. 动态多条曲线(即时数据)1.%%2.%采用背景擦除的方法,动态的划线,并且动态改变坐标系3.% 多行划线4.5.t=[0]6.m=[sin(t);cos(t)]7.p = plot(t,m,...8.'EraseMode','background','MarkerSize',5);9.x=-1.5*pi;10.axis([x x+2*pi -1.5 1.5]);11.grid on;12.13.14.for i=1:100015. t=[t 0.1*i]; %Matrix 1*(i+1)16. m=[m [sin(0.1*i);cos(0.1*i)]]; %Matrix 2*(i+1)17. set(p(1),'XData',t,'YData',m(1,:))18. set(p(2),'XData',t,'YData',m(2,:))19. drawnow20. x=x+0.1;21. axis([x x+2*pi -1.5 1.5]);22. pause(0.5);23.end复制代码上面的这几个画图方式的示例只是简单的for循环,是单线程的,如果是涉及到GUI的编程,那么请使用Timer来完成这件事情,Timer是我在Matlab中实现多线程唯一方法(没有找到别的方法)。
.。