matlab画图技巧方法

合集下载

MATLAB作图教程

MATLAB作图教程

2
Matlab 绘图
如何画出 y=sin(x) 在 [0, 2*pi] 上的图像?
3
Matlab 绘图
手工作图

找点: x=0, pi/3, pi/2, 2*pi/3, pi, … 计算函数值: y=sin(0), sin(pi/3), sin(pi/2), 描点:在坐标系中画出这些离散点

19
以下标为横坐标,元素值为纵坐标,等价于:
x=[1:length(y)];plot(x,y);
例:>> y=[0,0.48,0.84,1,0.91,6.14];
>> plot(y); >> figure(2); plot([1:length(y)], y)
自己动手
plot(Y): 当 Y 是矩阵时的图形是什么? >> Y=[1 2; 3 5; 6 9]; plot(Y); >> plot(Y’);
25
图形的其他属性
图形标注与坐标控制 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,…)
26
图形的其他属性ຫໍສະໝຸດ 标题 title(’text’)

可以指定文本的属性 title('text', 'Property1', value1, ' Property2', value2, ...)
自己动手
在0≤x≤2区间内,绘制曲线
y=2e-0.5x cos(4πx)
14
【例】在0≤x≤2区间内,绘制曲线
y=2e-0.5x cos(4πx)

matalb画图教程

matalb画图教程

第七次课Matlab图形与可视化一、本次课学习要点1、Matlab曲线绘图命令(二维、三维)2、绘图程序的编写二、本次课教学重点绘图程序的编写三、教学基本内容MATLAB具有很强的绘图功能,可以绘制多种二维、三维图形,也可以进行动画演示。

这一章将详细介绍各种图形的绘制命令。

1、二维绘图的plot命令MATLAB最常用的二维绘图命令是plot命令。

该命令将各个数据点用直线连接来绘制图形。

MATLAB的其它二维绘图命令中的绝大多数是以plot为基础构造的。

x=0:0.01:2; % 图形的横坐标数据准备y=sin(2*pi*x); % 图形的纵坐标数据准备plot(x,y); % 绘制图形grid %带栅格%plot(x,y,'k:o') %'k'表示黑色,':' 表示点连线,'o '表示圆圈显示为:plot 指令的调用格式:plot(x1.y1,'参数1’,x2,y2,‘参数2’....)plot可以用同一命令在同一坐标系中画多幅图形,x1,yl为第一条曲线 x,y个轴的坐标值,参数1为第一条曲线的选项参数,x2,y2为第二条曲线x,y轴的坐标值,参数2为第二条曲线的参数。

参数选项为一个字符串,它决定了二维图形的颜色、线型及数据点的图标。

B(蓝色) C(青色) G(绿色) k(黑色) r(红色) w(白色) y(黄色)2、图形修饰与控制(1)坐标轴的调整MATALB用axis命令对绘制的图形的坐标轴进行调整。

axis命令的功能非常丰富,可用它来控制轴的比例和特性。

axis([xmin xmax ymin ymax)将图形的 x轴范围限定在[xmin,xmax]之间,y轴的范围限定在[ymin,ymax]之间。

MATLAB绘制图形时,按照给定的数据值确定坐标轴参数范围。

对坐标轴范围参数的修改,也就相当于对原图形进行放大或缩小处理。

Matlab绘制图像

Matlab绘制图像
Matlab绘制图像
第一种方法 在Workspace中绘制
绘图基本线型和颜色
符号 y m c r g b w k 颜色 黄色 紫红 青色 红色 绿色 蓝色 白色 黑色 符号 . 。 x + * : -. -线型 点 圆圈 x 标记 加号 星号 实线 点线 点划线 虚线
绘图命令
绘图命令plot 主要是在数值计算中绘制函数图像。 绘制反函数图像非常容易。
绘图命令plot
调用格式1:plot(x,y)
1. 首先定义自变量X的取值向量(横坐标) 2. 再定义函数Y的取值向量(纵坐标) 3. 用plot(x,y)命令给出平面曲线图。 在绘图参数中可以给出绘制图形的线型和颜 色的参数。例:plot(x,y,’r*’) 就是用红色的 ****线型绘图。
技巧
x=0:0.1:2*pi; y1=sin(x); y2=exp(-x); plot(x,y1,'--*',x,y2,':o'); xlabel('t=0 to 2\pi'); ylabel('value of sin(t) and e^{-x}') title('Function sin(t) and e^{-x}'); legend('sin(t)','e^{-x}') 后期的制作
ቤተ መጻሕፍቲ ባይዱ
绘出下面函数及其反函数的图像
1 1 y (x ) 2 x (1 x )
程序如下: x=1:0.001:5; %定义横坐标 y=1/2*(x+1./x); %定义纵坐标 plot(x,y,'r',y,x,'b') %红色画f(x) 蓝色画f(y).

Matlab绘图

Matlab绘图

第二章绘图要画一个函数的图像,先是选取一堆x,求出相对应的y值,然后按照数值描点,接着用光滑的曲线把点连接起来。

和数学课讲的一样,在matlab中,我们画图也分为三步1. 建立一个x的点集;2. 根据函数关系式算出每个x对应y的点集;3. 将这些点用平滑的曲线连接起来。

例如要画y=sinx在[0,10]区间内的图像,首先我们要确定出x的区间>>x = [0:0.1:10];命令的意思是,产生一个数集,它从0开始,每次加0.1,一直加到10为止注意,命令后面的分号记得加上,否则matlab会把x的元素都打印出来,下面就是不加分号的后果:有了x的数集后,我们再根据函数关系式y=sinx得出y的点集>>y = sin(x);同样的,别忘了把分号加上抑制程序输出y的具体值,以及sin(x)的括号别忘了加到这里,我们已经把x和y确定下来,接下来只需用plot(x,y)命令即可绘制出图像>>plot(x,y)当然,如果你不定义y,而直接用一下嵌套命令也是可以的>>plot(x,sin(x))我们将x的增量变大一点,改为0到10,每次增幅为1,即>>x = [0:1:10];然后我们输入>>plot(x,y)我们会得到错误信息:原因是之前我们定义的y是由之前的x决定的,当x改变后,y依然没有改变,为了解决这个问题,我们要把y重新定义一遍,即命令要完整再输入一遍>>x = [0:1:10];>>y = sin(x);>>plot(x,y)然后程序会绘制出和我们预期相同的图像没错,我们将看到不光滑的曲线,这告诉我们,当使用plot(x,y)画图的时候x的增加幅度尽可能小一些,画出的图像才精确(跟数学里点越多图像越精确原理一样的)为了美化图像(有时是为了更清楚的辨析图像),我们经常要为图像加上网格,为坐标轴命名,改变曲线的颜色、形状这些命令2.1 加上网格我们使用grid on 命令我们这样书写:>>x=[0:0.1:10];y=sin(x);>>plot(x,y),grid on这样就画出了带网格的图像当然,也可以先画出没有网格的图像,再把窗口切回matlab命令输入窗口,输入grid on,这样图像就会加上网格,即>>x=[0:0.1:10];y=sin(x);>>plot(x,y)>>grid on2.2 为坐标轴命名为x坐标轴命名的命令是xlabel(),显然,y的就应该是ylabel()比如这里,我想让x命名为x,y命名为sinx,则如下输入:>>x=[0:0.1:10];y=sin(x);>>plot(x,y),xlabel(‘x’),ylabel(‘sinx’)注意,坐标轴的名字要用引号括起来,表示字符串当然也可以画图后再标坐标轴,即:>>x=[0:0.1:10];y=sin(x);>>plot(x,y)>>xlabel(‘x’)>>ylabel(‘sinx’)然后我们就可以看到坐标轴带命名的图像:2.3 绘制多条曲线绘制多条曲线有两种情况,一种是在同一个坐标面内画多条曲线,另一种是在一个面内画多个独立的曲线我们先讲第一种,假设我们要在一个坐标面内画sinx,cosx,tanx的图像先定义x,y>>x=[0:0.1:10]>>y1=sin(x);>>y2=cos(x);>>y3=tan(x);接着画图>>plot(x,y1)这时候函数绘制出了sinx的图像接着我们继续画>>plot(x,y2)我们会发现程序会把之前的sinx图像抹掉,然后绘制cosx的图像为了让他们同时存在,我们使用hold on命令,即画完一个图后,hold on,继续画当我们再加上tanx后会得到这个图像这是因为函数显示区间设置的原因,后面讲2.4 更改图像显示区间从楼上我们已经在一个图中画出了sinx、cosx、tanx的图像,但是我们知道tanx的值域是负无穷到正无穷,而sin,cos的值域是-1到1,这导致了我们基本上看不到sin,cos的图像,为了解决这个问题,我们只需用axis命令即可,命令格式为axis([xmin xmax ymin ymax])即括号内跟一个区间,四个数字分别是x的起点,x的终点,y的起点,y的终点。

MATLAB画图——基础篇

MATLAB画图——基础篇

MATLAB画图——基础篇MATLAB画图——基础篇在MATLAB使⽤的过程中,学会画图是⼀项必要的技能。

在这⾥,我总结了部分简单的画图函数,同时附上代码(本⽂中的程序为了⽅便给出的数据都很简单,⼤家可以⾃⼰去尝试其他数据)。

这对刚刚开始接触MATLAB的⼩⽩来说,我认为还是很有帮助的。

⽂章⽬录⼀、plot()函数1.⼆维图形(1)绘图选项线型颜⾊标记符号-实线b蓝⾊.点s⽅块:虚线g绿⾊o圆圈d菱形.-点划线r红⾊x叉v朝下三⾓符号-双划线c青⾊+加号^朝上三⾓符号m品红*星号<朝左三⾓符号y黄⾊>朝右三⾓符号p五⾓星k⿊⾊h六⾓星w⽩⾊(2)图形的辅助标注和窗⼝的分割title(图形说明)xlabel(x轴说明)ylabel(y轴说明)text(x,y图形说明)——在x,y轴处添加⽂字说明legend(图例⼀,图例⼆,…)subplot(m,n,p)——将绘图区域分割成m*n个⼦区域,并按照⾏从左⾄ 右,从上⾄下依次编号。

p表⽰第p个绘图⼦区域。

注意:如果是要两个图画到同⼀个坐标⾥⾯,则在两个plot函数之间添加⼀⾏hold on(3)格式plot(x)——缺省⾃变量绘图格式plot(x,y)——基本格式。

以y(x)的函数关系作图。

如果y是n*m的矩 阵,则x为⾃变量,作出m条曲线。

plot(x1,y1,x2,y2,…,xn,yn)——多条曲线绘图格式plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n)——含选项的绘图格式x1=[1 2 3 4 5 6 7 8 9];x2=[2 4 6 8 10 12 14 16 18];y1=[1 4 9 16 25 36 49 64 81];y2=[18 16 14 12 10 8 6 4 2];subplot(4,1,1);plot(x1);title('例⼀');xlabel('⾃变量');ylabel('因变量');subplot(4,1,2);plot(x1,y1);title('例⼆');xlabel('⾃变量');ylabel('因变量');subplot(4,1,3);plot(x1,y1,x2,y2);title('例三');xlabel('⾃变量');ylabel('因变量');subplot(4,1,4);plot(x1,y1,'m+',x2,y2,'c*');title('例四');xlabel('⾃变量');ylabel('因变量');2.三维图形(1)格式plot3(x1,y1,z1,‘选项⼀’,x2,y2,z1,‘选项⼆’,…)x,y,z是长度相同的向量:⼀条曲线x,y,z是维度相同的矩阵:多条曲线(2)⽹格矩阵⽣成函数:meshgrid[X,Y]=meshgrid(x,y)x,y是给定的向量,X,Y是⽹格划分后得到的⽹格矩阵注意,这个函数⽤来⽣成⽹格矩阵,不是直接⽤来画图的,配合mesh使⽤。

Matlab3 画图

Matlab3 画图

\leftritharrow ↔
3.7 二维作图的附加类型
附加的二维作图类型 函数 描述 bar(x,y) 创建一个水平的条形图,x代表第 一个X轴的取值,y代表对应于Y的 取值 barh(x,y) 创建一个竖直的条形图 pie(x) 创建一个饼状图,x代表占总数的 pie(x,explode) 百分数
柱状图
• 在一系列数值中范围被平均划分,并确定某一个范围中数值 的个数,并把这个数目通过函数画出图来。 • 格式:hist (y)、hist(y, nbins)、hist(y, x) • 例:y = randn(10000,1); hist(y,15) • 例:y = randi(10,[10000,1]); hist(y,1:10) • 重做练习6 n=10^5; a=vpa('pi',n); a=char(a); a(2)=[]; b=arrayfun(@str2num,a); figure; hist(b,0:9); count2=hist(b,0:9)
n=10^5; a=vpa('pi',n); % pi,sqrt(2),exp(1).... a=char(a); % 将符号转化成字符串 count=zeros(1,10); % 预分配内存
format 结果 string %d 把值作为整数来处理 %e %f %g \n 用科学记数法来显示数据 用于浮点数格式显示这个数 用科学记数格式,或浮点数格式,根据那 个短,并显示之 转到新的一行
用legend来制作 图例
• 基本形式: legend('string1','string2',...,pos) • 其中string1,string2等等是轨迹标签名,而pos是 一个整数,用来指定图例的位置。 x=0:pi/100:2*pi; y1=sin(2*x); y2=2*cos(2*x); plot(x,y1,'k-',x,y2,'b--'); title(' Plot of f(x)=sin(2x) and its derivative'); legend('f(x)','d/dx f(x)');

Matlab中使用Plot函数动态画图方法总结

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作图(超详细)

MATLAB作图(超详细)

2020/5/31
数学建模
3. 对数坐标图
在很多工程问题中,通过对数据进行对数转换可以 更清晰地看出数据的某些特征,在对数坐标系中描绘数 据点的曲线,可以直接地表现对数转换.对数转换有双对 数坐标转换和单轴对数坐标转换两种.用loglog函数 可以实现双对数坐标转换,用semilogx和semilogy 函数可以实现单轴对数坐标转换. loglog(Y) 表示 x、y坐标都是对数坐标系
单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为 中心的图形放大2倍;单击鼠标右键,则缩小2倍.
zoom off 关闭缩放模式
grid on
%标注格栅
MATLAB liti37
例 创建一个简单的半对数坐标图. 解 输入命令:
x=0:.1:10;
semilogy(x,10.^x)
MATLAB liti38
例 绘制y=x3的函数图、对数坐标图、半对数坐标图.
2020/5/31
MATLAB liti22 数学建模
返回
三维图形 1. 空间曲线 2. 空间曲面
semilogx(Y) 表示 x坐标轴是对数坐标系
semilogy(…) 表示y坐标轴是对数坐标系
plotyy 有两个y坐标轴,一个在左边,一个在右边
2020/5/31
数学建模
例 用方形标记创建一个简单的loglog.
解 输入命令:
x=logspace(-1,2);
loglog(x,exp(x),’-s’)
数学建模
返回
2. 定制坐标 Axis([xmin xmax ymin ymax zmin zmax])定制图形坐标
x、y、z的最大、最小值
Axis
将坐标轴返回到自动缺省值
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab绘图的一些技巧1.在坐标轴上任意标上感兴趣的刻度。

用XTick、YTick、ZTick。

如图1.如:x=0:0.1:10;y=x.^2;h=plot(x,y,'o',x,y);set(gca,'YTick',[0,10,25,50,80,99],'XTick',[0.5,8,10]); 用XTickLabel、YTickLabel、ZTickLabel属性把标记标签从数值改为字符串。

如图2.如将y轴上的值80用字符串代替:x=0:0.1:10;y=x.^2;h=plot(x,y,'o',x,y);set(gca,'YTickLabel','0|10|25|50|cutoff|99');图1图22.使用多个x轴和y轴XAxisLocation和YAxisLocation属性指定在图形的哪一侧放置x轴和y轴。

如图3.x1=0:0.01:10;y1=sin(x1);h1=line(x1,y1,'Color','r');ax1=gca;set(ax1,'XColor','r','YColor','r');ax2=axes('Position',get(ax1,'Position'),'XAxisLocation','top','YAxisLocation','right','Color','none',' XColor','k','YColor','k');x2=x1;y2=cos(x2);h2=line(x2,y2,'Color','k','Parent',ax2);图33.连接图形与变量(更新自变量或因变量的值)用数据源属性XDataSource、YDataSource、ZDataSource及refreshdata.可以做动画。

t=0:0.01:2*pi;y=exp(sin(t));h=plot(t,y,'YDataSource','y');for k=1:0.1:20y=exp(sin(t.*k));refreshdata(h,'caller');drawnow;pause(0.1);end4.创建组(Hggroup)对象将每个Hggroup子对象的HitTest属性值设置为off,使得单击任何子对象时,可以选择所有子对象。

将每个Hggroup子对象的HitTest属性值设置为off,使得单击任何子对象时,该Hggroup 对象成为当前对象。

设置Hggroup对象的Vision属性会同时将每个子对象的Vision属性值为相同值。

鼠标点击图4中任意一条线,变为图5.hg=hggroup('ButtonDownFcn',@set_lines);hl=line(randn(5),randn(5),'HitTest','off','Parent',hg);function set_lines(cb,eventdata)hl=get(cb,'Children');lw=get(hl,'Linewidth');set(hl,{'Linewidth'},num2cell([lw{:}]+1,[5,1])');图4图55.创建Hgtransform对象将Hgtransform对象作为父对象的优点:该对象提供了对其子对象进行变换的能力,包括平移、比例化、旋转。

Hgtransform对象可以包括其他对象,从而在处理可见性、大小、方向等属性时,可以将Hgtransform对象及其子对象作为单个实体处理。

操作时,将对象的Parent属性设置为Hgtransform对象的句柄。

用一组父对象为单个Hgtransform对象的表面对象创建3维星形图。

将Hgtransform对象绕z 轴旋转,同时缩放。

(1)创建一个axes对象。

ax=axes('XLim',[-1.5,1.5],'YLim',[-1.5,1.5],'ZLim',[-1.5,1.5]);view(3);grid on; axis equal;(2)创建希望作为Hgtransform对象子对象的对象。

[x,y,z]=cylinder([0.2,0]);h(1)=surface(x,y,z,'FaceColor','r');h(2)=surface(x,y,-z,'FaceColor','g');h(3)=surface(z,x,y,'FaceColor','b');h(4)=surface(-z,x,y,'FaceColor','c');h(5)=surface(y,z,x,'FaceColor','m');h(6)=surface(y,-z,x,'FaceColor','y');(3)创建一个Hgtransform对象,并作为刚刚创建的一系列表面对象的父对象。

t=hgtransform('Parent',ax);set(h,'Parent',t);(4)选择一个渲染器并显示对象。

set(gcf,'Renderer','opengl');drawnow;(5)将旋转和比例化矩阵初始化Rz=eye(4);Sxy=Rz;(6)组成z轴旋转矩阵和比例化矩阵for r=1:0.1:2*piRz=makehgtform('zrotate',r);Sxy=makehgtform('scale',r/4);set(t,'Matrix',Rz*Sxy);drawnow;endpause(1);(7) 用单位矩阵重新设置原始方位和大小set(t,'Matrix',eye(4));图66.三维图形绕x、y、z轴旋转或平移h=surface(peaks(40));view(-20,30);t=hgtransform;set(h,'Parent',t);ry_angle=-30*pi/180;rx_angle=30*pi/180;Ry=makehgtform('yrotate',ry_angle);Rx=makehgtform('xrotate',rx_angle);set(t,'Matrix',Ry);pause(2);set(t,'Matrix',Rx);pause(2);Tx1=makehgtform('translate',[-5,0,0]);Tx2=makehgtform('translate',[5,0,0]);set(t,'Matrix',Rx*Tx2*Ry*Tx1);7.用属性值查找对象——findobj函数以及使用逻辑操作符和正则表达式(1)Find all line objects in the current axes:h = findobj(gca,'Type','line')(2)Find all objects having a Label set to 'foo' and a String set to 'bar':h = findobj('Label','foo','-and','String','bar');(3)Find all objects whose String is not 'foo' and is not 'bar':h = findobj('-not','String','foo','-not','String','bar');(4)Find all objects having a String set to 'foo' and a Tag set to 'button one' and whose Color is not 'red' or 'blue':h = findobj('String','foo','-and','Tag','button one',...'-and','-not',{'Color','red','-or','Color','blue'})(5)Find all objects for which you have assigned a value to the Tag property (that is, the value is not the empty string ''):h = findobj('-regexp','Tag','[^'']')(6)Find all children of the current figure that have their BackgroundColor property set to a certain shade of gray ([.7 .7 .7]). This statement also searches the current figure for the matching property value pair.h = findobj(gcf,'-depth',1,'BackgroundColor',[.7 .7 .7])8.复制和删除对象复制:new_handle = copyobj(h,p)h = surf(peaks);colormap hot;figure;new_handle1 = copyobj(h,gca); colormap cool;view(3);grid on;图7删除:delete(h),delete(handle_array) 8、直方图的标注clear;x = -2.9:0.5:2.9;y=exp(-x.*x);bar(x,y,'g','EdgeColor',[1,0.5,0.5]);set(gcf,'color','w');set(gca,'FontSize',12,'XTick',[-4:0.5:3]); legend('直方图示例');for i=1:length(x)str=sprintf('%4.2f',y(i));text(x(i)-0.1,y(i)+0.02,str);end。

相关文档
最新文档