MATLAB绘制函数图
序言
Matlab可以根据用户给出的数据绘制相应的函数图.对于单个2D函数图,需要给出一个行向量x作为函数图上离散点集的横坐标,以及一个与x列数一样的横坐标y作为函数图上点集的纵坐标. 向量x和y的取值既可以用离散数值直接列出,也可以用取值范围(冒号)和点运算(在幂运算、除法等算术运算符之前加个点号)得出相应的向量.
正文
1. 定义函数, 绘制初步图形
绘制函数y=f(x)的图形分为三步:定义x的取值范围和取值间隔/取值个数;通过定义y与x的关系f(x)来给出y向量;用plot(x,y)命令绘制函数图形.
(1) 定义x的取值范围和取值间隔用x=(a:k:b) 的形式, 表示x属于范围[a,b], 且间隔为k,即x的第一个值为a, 第二个值为a+k, 第三个值为a+2k, 以此类推, 最后一个值为b. 例如:

其中k值越小则同一定义域范围上的点数越多,绘出的函数曲线越光滑.
另外还可以用linspace函数生成x的值, x=linspace(a,b,n)是为x生成a到b之间均匀的n个值, 结果是一个1*n的行向量(这n个数之间的差是相等的). 如果不指定个数n, 仅仅用linspace(a,b)则默认生成a到b之间的100个值.
(2) 定义y与x之间的关系直接利用Matlab的算术运算符和已经定义的函数来给出表达式,例如y=sin(x)、y=5*x-1等等. 注意,如果涉及x的n次幂, 除法或指数函数,则不能直接用x^n, x/n, a^x而要用x.^n, x./n或者a.^x来表示,指对x的分量进行运算得到y的对应的分量.
(3) 完成前面两步后,最后直接用plot(x,y)就能绘制出函数图形,其中x作为横轴,y作为纵轴. 例如函数
在[0, 1]之间的图形绘制代码和结果如下:
s=linspace(,,);
y=-(s-+sqrt(*s.^-*s+))/;
plot(s,y);

如果我们需要在一个图形浮动窗口中同时绘出多个相关的函数以进行对比,则给出的y要一个矩阵,它的列数与x的列数相等,行数等于函数个数,其第i行表示第i个函数上离散点的纵坐标取值.
例如,若我们想绘出三个函数 y1=sin(x)/√(x+1), y2=sin(x/2)/√(x+1), y3=sin(x/3)/√(x+1)的对比图,我们可以用如下代码:
x=[:0.2:];
y(,:)=sin(x)./sqrt(x+);
y(,:)= sin(x/)./sqrt(x+);
y(,:)= sin(x/)./sqrt(x+);
plot(x,y);
运行结果如下:

2. 代码设置绘图属性
在绘图时,可以用代码直接设置曲线颜色,图例,默认坐标轴的名称等等,可参考如下代码
h1=plot(x,y(,:),':b');%无记忆行走,蓝色虚线条
hold on;%保证不覆盖前面已绘的图形
h2=plot(x,y(,:),'--g');%一步记忆
hold on;
h3=plot(x,y(,:),'-r');%两步记忆
hold on;
legend([h1,h2,h3],'QW0M','QW1M','QW2M');%为各个曲线分别添加图例
hold on;
xlabel ('Position');ylabel('Probability');%设置横纵坐标的标签名称
3. 单独绘制坐标轴
单独绘制轴线的思路是在轴线位置画直线,然后在两直线的端点处画三角形,然后填充三角形作为箭头。
%设置函数定义域和值域的绘图范围
rangeXmin=-3.5;
rangeXmax=3.5;
rangeYmin=-1.5;
rangeYmax=1.5;
%axis off;关闭默认的轴显示
hold on;%将后续绘图保持在本图形窗口
x=linspace(rangeXmin,rangeXmax,50);
y1=sin(x);y2=x;%设置两个函数
plot(x,y1,'r',x,y2,'g');%y1函数曲线为红色r,y2函数曲线为绿色g
axis([rangeXmin*1.1 rangeXmax*1.1 rangeYmin*1.1 rangeYmax*1.1]);%设置坐标范围
line([rangeXmin,rangeXmax],[0,0],'color','black');%绘制x轴直线,黑色
line([0,0],[rangeYmin,rangeYmax],'color','black');%绘制y轴直线
%绘制x轴箭头
arrowXx=[rangeXmax 0.97*rangeXmax 0.97*rangeXmax rangeXmax];
arrowXy=[0 0.03*rangeYmax -0.03*rangeYmax 0];
plot(arrowXx,arrowXy,'black');
fill(arrowXx,arrowXy,'black');%填充三角形
%绘制y轴箭头
arrowYx=[0 0.03*rangeXmax -0.03*rangeXmax 0];
arrowYy=[rangeYmax 0.97*rangeYmax 0.97*rangeYmax rangeYmax];
plot(arrowYx,arrowYy,'black');
fill(arrowYx,arrowYy,'black');
%添加坐标轴名称
text(0.95*rangeXmax,0.1*rangeYmax,'x');
text(0.05*rangeXmax,rangeYmax,'y');
%添加重点坐标以及刻度
text(0.05*rangeXmax,-0.05*rangeYmax,num2str(0),'Color','black');%原点坐标
text(pi/2,-0.1*rangeYmax,'\pi/2');%默认文本颜色为黑色,π字符用\pi输出
text(pi/2,0,'|');%刻度
text(-pi/2,-0.1*rangeYmax,'-\pi/2');text(-pi/2,0,'|');
text(pi,-0.1*rangeYmax,'\pi');text(pi,0,'|');
text(-pi,-0.1*rangeYmax,'-\pi');text(-pi,0,'|');
text(0.05*rangeXmax,1,'1');text(0,1,'-');
text(0.05*rangeXmax,-1,'-1');text(0,-1,'-');
绘图结果如下

注意,其中line(X,Y,'propertyname','propertyvalue')函数的参数X为行向量,给出直线起点和终点的横坐标,Y也为行向量,给出直线起点和终点的纵坐标;text(x,y,'textvalue')是在坐标(x,y)处添加文本'textvalue'。
4. 手动设置函数图属性
在绘制出函数曲线之后, 我们可以通过图形窗口上的菜单和按钮来对函数图进行编辑, 如添加图例说明、设置坐标标签、更改曲线颜色、显示某些点的坐标值等等。
(1) 添加图例. 利用图例(Legend),我们可以明确地为每一条函数曲线取一个名字. 方法是点击Figure窗口上的Insert Legend按钮
, 此时图形的右上角会出现图例框, 其默认的曲线名称为Data1, Data2, Data3. 双击曲线名称文本, 就可以重新命名曲线了. 右击图例框, 利用弹出的快捷菜单还可以设置图例文本字体、文本颜色、图例外框颜色等等外观属性。

(2) 设置坐标标签. 对于我们前面的函数, 横坐标是x, 纵坐标是y1,y2,y3, 我们可以通过Figure窗口的菜单Insert-X Label, Insert-Y Label来添加坐标标签. 如果要删除标签, 右击标签选择Delete即可.
(3) 更改曲线颜色粗细形状等属性. 点击Figure窗口上的Edit Plot按钮
, 然后双击某一条曲线, 在弹出的属性设置窗口中设置参数即可.
(4) 显示曲线上某些点的坐标值. 如果曲线上的某个点比较重要, 需要额外标记出其坐标值, 则单击Figure窗口上的Data Cursor按钮
, 然后单击曲线上需要标记的点即可. 如果想额外再多标记几个点, 则先右击Figure区域, 选择Create New Datatip, 然后再单击待标记的点. 如果想删除某个标记点, 右击那个点, 选择Delete Current Datatip.

MATLAB绘制函数图的更多相关文章
- 用Html5制作的一款数学教学程序Function Graphics(绘制函数图的程序)
最近我不仅对游戏开发感兴趣,还对函数图感兴趣,特此我开发了这个程序.以下是一些介绍和下载演示地址,喜欢的朋友可以看看: 一,产品名片 产品名:Function Graphics 版本: 0.1 开发者 ...
- paper 39 :Matlab绘制误差棒图(errorbar函数的使用)
同很多非数学相关专业的朋友一样,我第一次碰到这个图时也是丈二和尚摸不着头脑.只知道这个工字型的图案,中间的点代表的是平均值,上下的两条横线代表的是方差值,除此之外,连这个图叫什么名字都不知道,只好硬着 ...
- 使用 NumPy 和 Matplotlib 绘制函数图
Numpy是用python进行科学计算的基本程序包. 它主要包含以下功能: ♦强大的n维数组对象 ♦复杂(广播)函数工具 ♦用于集成c/c++和Fortran代码-有用的线性代数 ♦傅里叶变换和随机数 ...
- 使用Matlab绘制三维图的几种方法
以下六个函数都可以实现绘制三维图像: surf(xx,yy,zz); surfc(xx,yy,zz); mesh(xx,yy,zz); meshc(xx,yy,zz); meshz(xx,yy,zz) ...
- 使用matplotlib库绘制函数图
函数如下: z = x^2 * y / (x^4 +y^2) 代码如下: import numpy as np import matplotlib.pyplot as plt import mpl_t ...
- 用MATLAB绘制折线图,x轴为字符串,并旋转一定的角度!!!
先上代码,然后再一行一行解释: x=1:37; %这一行其实一开始,写的时候是没有的,后来需要给X轴上规定几个刻度才加上的 plot(x,Y,'linewidth',2); %以x为自变量,y为因变量 ...
- matlab绘制函数
>> x1=linspace(,*pi,); x2=linspace(,*pi,); x3=linspace(,*pi,); y1=sin(x1); y2=+sin(x2); y3=+si ...
- Matlab绘制三维曲面(以二维高斯函数为例)
原文地址为:Matlab绘制三维曲面(以二维高斯函数为例) 寒假学习了一下Python下的NumPy和pymatlab,感觉不是很容易上手.来学校之后,决定继续看完数字图像处理一书.还是想按照上学期的 ...
- matlab绘制心形函数
matlab 7.0 绘制二维.三维心形函数 又到周六,下周就要迎来春节小长假了,想想都有些激动.在外漂了一整年,总于可以回家和父母团聚了,还有吃好吃的...,哎呀~想想都流口水呢.不过先 ...
随机推荐
- df -h hang 问题
此处仅截取原文中的解决方案,以便快速查找解决方法. 解决方法如下:1. systemctl restart proc-sys-fs-binfmt_misc.automount; 2. 升级到最新 sy ...
- 金蝶K/3 跟踪语句_业务单据
跟踪语句_业务单据_BOM select * from t_TableDescription where Ftablename like '%ICBOM%' order by FFieldName o ...
- UVA 10474 - Where is the Marble?--vector
https://vjudge.net/problem/UVA-10474 https://blog.csdn.net/xiyaozhe/article/details/81081344 简单用法 so ...
- 【redis】-- springboot集成redis及使用
springboot自动配置的redis并不是特别好用,所以需要我们使用原生的jedis, 1.添加依赖 2.在application文件中配置 # Redis服务器地址 redis.host= # ...
- Java 常用知识点
Java 常用知识点 1.日期格式化 SimpleDateFormat Date date=new Date(System.currentTimeMillis()) ; SimpleDateForma ...
- 在iphone的safari浏览器中,拨打电话,出现系统异常弹框
这是系统级别的问题,暂时无法解决. IPHONE的safari浏览器电话拨打,前两次点击拨打按钮,会正常弹出系统弹框包含(电话号码,取消,呼叫). 第3次往后,点击按钮会出现另一种系统弹框包含(已阻止 ...
- WPF: 共享Grid宽度或高度的方法
需要两个属性: 1. Grid.IsSharedSizeScope="True" 2. SharedSizeGroup=名称 <StackPanel Margin=" ...
- 原生JavaScript中动画与特效的实现原理
现如今,许多页面上均有一些动画效果.适当的动画效果可以在一定程度上提高页面的美观度,具有提示效果的动画可以增强页面的易用性. 实现页面动画的途径一般有两种. 一种是通过操作JavaScript间接操作 ...
- 写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
问题: 写一个带文本菜单的程序,菜单项如下(1) 取五个数的和 (2) 取五个数的平均值(X) 退出. 由用户做一个选择, 然后执行相应的功能.当用户选择退出时程序结束. 实现: ...
- Container/Injection
1.容器的历史 容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的 ...