MATLAB fplot()函数的用法(非常详细)
在 MATLAB 中,fplot() 函数是一个专门用于画图像的函数,plot() 函数也可以画一元函数图像,两个函数的区别如下:
fplot() 函数的主要调用格式及说明如下表所示。
对于表中的各种用法有下面几点需要说明:
【实例 1】绘制函数 y=cos2(x), y=cos3(x), x∈[1,4] 的图像。

图 1 函数图形
【实例 2】作出 y=sin(1/x) 函数,x∈[0.01,0.02] 的图像。MATLAB 程序如下:

图 2 fplot()与plot()的比较
从上图中可以很明显地看出,fplot() 函数所作的图要比用 plot() 函数所作的图光滑精确。这主要是由于 plot() 函数分点取得太少,也就是说对区间的划分还不够细,读者往往会以为对长度为 0.01 的区间作 50 等分的划分已经够细了,事实上这远不能精确地描述原函数。
【实例 3】绘制隐函数 f(x)=e2x, f(x)=ex2, f(x)=ex2+2x,x∈(−π,π) 的图像。

图 3 函数图形
- plot() 函数是依据给定的数据点来作图的,而在实际应用中,一般并不清楚函数的具体情况,因此依据所选取的数据点作的图像可能会忽略真实函数的某些重要特性,给科研工作造成不可估计的损失。
- fplot() 函数用来指导数据点的选取,通过其内部自适应算法,它在函数变化比较平稳处所取的数据点会相对稀疏一点,在函数变化明显处所取的数据点则会自动密一些,因此用 fplot() 函数所作出的图像要比用 plot() 函数作出的图像光滑准确。
fplot() 函数的主要调用格式及说明如下表所示。
调用格式 | 说明 |
---|---|
fplot(f,lim) | 在指定的范围 lim 内画出一元函数 f 的图形 |
fplot(f,lim,s) | 用指定的线型 s 画出一元函数 f 的图形 |
fplot(f,lim,n) | 画一元函数 f 的图形时,至少描出 n+1 个点 |
fplot(funx,funy) | 在 t 的默认间隔 [-5, 5] 上绘制由 x=funx(t) 和 y=funy(t) 定义的曲线 |
fplot(funx,funy,tinterval) | 在指定的时间间隔内绘制。将间隔指定为 [tmin, tmax] 形式的二元向量 |
fplot(...,LineSpec) | 指定线条样式、标记符号和线条颜色。例如,'-r' 绘制一条红线。在前面语法中的任何输入参数组合之后使用此选项 |
fplot(...,Name,Value) | 使用一个或多个名称-值对参数指定线条属性 |
fplot(ax,...) | 绘制图形到由 ax 指定的坐标区中,而不是当前坐标区(GCA)。指定坐标区作为第一个输入参数 |
fp = fplot(...) | 根据输入返回函数行对象或参数化函数行对象。使用 fp 可查询和修改线条属性 |
[X,Y] = fplot(f,lim,...) | 返回横坐标与纵坐标的值给变量 X 和 Y |
对于表中的各种用法有下面几点需要说明:
- f 对字符向量输入的支持将在未来版本中删除,可以改用函数句柄,例如“sin(x)”,改为“@(x)sin(x)”。
- lim 是一个指定 x 轴范围的向量 [xmin,xmax] 或者 y 轴范围的向量 [ymin,ymax]。
- [X,Y]=fplot(f,lim,…) 不会画出图形,如用户想画出图形,可用函数 plot(X,Y)。这个语法将在将来的版本中删除,取而代之的是使用 line 对象 FP 的 XData 和 YData 属性。
- fplot() 函数中的参数 n 至少把范围 limits 分成 n 个小区间,最大步长不超过(xmax-xmin)/n。
- fplot() 不再支持用于指定误差容限或评估点数的输入参数。若要指定评估点数,使用网格密度属性。
【实例 1】绘制函数 y=cos2(x), y=cos3(x), x∈[1,4] 的图像。
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> subplot(2,1,1),fplot(@(x)cos(x).^2,[1,4]); % 在第1个图窗中绘制指定区间的函数曲线 >> subplot(2,1,2),fplot(@(x)cos(x).^3,[1,4]); % 在第2个图窗中绘制指定区间的函数曲线运行结果如下图所示:

图 1 函数图形
【实例 2】作出 y=sin(1/x) 函数,x∈[0.01,0.02] 的图像。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> x=linspace(0.01,0.02,50); % 将x定义为介于0.01~0.02的50个线性间隔值 >> y=sin(1./x); % 定义函数y >> subplot(2,1,1),plot(x,y) % 在第1个视窗中以x为横坐标绘制y的图形 >> subplot(2,1,2),fplot(@(x)sin(1./x),[0.01,0.02]) % 在第2个视窗中绘制y的图形运行结果如下图所示:

图 2 fplot()与plot()的比较
从上图中可以很明显地看出,fplot() 函数所作的图要比用 plot() 函数所作的图光滑精确。这主要是由于 plot() 函数分点取得太少,也就是说对区间的划分还不够细,读者往往会以为对长度为 0.01 的区间作 50 等分的划分已经够细了,事实上这远不能精确地描述原函数。
【实例 3】绘制隐函数 f(x)=e2x, f(x)=ex2, f(x)=ex2+2x,x∈(−π,π) 的图像。
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> syms x % 定义符号变量x >> f=exp(x^2+2*x); % 定义以符号变量x为自变量的函数表达式f % 将视图分为2行2列4个视窗,在视窗1中绘制函数曲线,将函数对象属性赋值给fp >> subplot(2,2,1),fp=fplot(@(x) exp(2*x),[-pi,pi]); >> fp.LineStyle = '-.'; % 设置曲线线型为点画线 >> subplot(2,2,2),fp=fplot(@(x) exp(x.^2),[-pi,pi]); % 在视窗2中绘制函数曲线,将函数对象属性赋值给fp >> fp.Color = 'r'; % 设置曲线颜色为红色 >> subplot(2,2,3),fp=fplot(@(x) exp(x.^2+2*x),[-pi,pi]); % 在视窗3中绘制函数曲线,将函数对象属性赋值给fp >> fp.Marker = 'x'; % 设置曲线标记类型为五角星 >> fp.MarkerEdgeColor = 'b'; % 设置曲线标记颜色为蓝色 >> subplot(2,2,4),fplot(f) % 在视窗4中绘制函数曲线运行结果如下图所示:

图 3 函数图形