MATLAB符号数学绘图与单位测量详解
立即解锁
发布时间: 2025-09-06 01:47:39 阅读量: 7 订阅数: 31 AIGC 


MATLAB工程应用精要
### MATLAB 符号数学绘图与单位测量详解
#### 1. 符号绘图基础
在 MATLAB 中,符号工具箱包含了一组用于绘制符号表达式和函数的函数。其中最基础的是 `fplot` 函数,它是一个重载函数,即同一个函数名可用于多个不同的应用场景。MATLAB 会根据输入来决定使用哪个应用。当提供符号信息时,MATLAB 会使用符号绘图工具。
##### 1.1 `fplot` 函数的使用
以一个简单的关于 `x` 的函数为例:
```matlab
syms x
y = x^2 - 2
```
这里的符号变量 `y` 无需存储为实际的符号函数(如 `f(x) = x^2 - 2`)就可以作为 `fplot` 的输入。所有已探索的符号函数中,符号变量和符号函数的行为方式相同。
要绘制这个函数,使用:
```matlab
fplot(y)
```
`fplot` 函数默认的 `x` 范围是从 -5 到 +5。MATLAB 通过选择 `x` 的值并计算相应的 `y` 值来创建平滑的曲线。
如果不想使用默认值,可以在 `fplot` 函数的第二个字段中指定 `x` 的最小值和最大值:
```matlab
fplot(y, [-10, 10])
```
这些值用方括号括起来,表示它们是定义绘图范围的数组元素。可以像其他 MATLAB 绘图一样指定标题、轴标签和注释。例如,为绘图添加标题和标签:
```matlab
title("Second-Order Polynomial")
xlabel("x")
ylabel("y")
```
##### 1.2 `fimplicit` 函数绘制隐函数
`fimplicit` 函数可用于绘制 `x` 和 `y` 的隐函数。例如,考虑隐式方程 `x^2 + y^2 = 1`,这是一个半径为 1 的圆的方程。可以使用以下任何命令来绘制这个圆:
```matlab
syms x y
fimplicit(x^2 + y^2 == 1, [-1.5, 1.5])
fimplicit(x^2 + y^2 - 1, [-1.5, 1.5])
z = x^2 + y^2 - 1
fimplicit(z, [-1.5, 1.5])
```
##### 1.3 参数化绘图
另一种定义类似方程的方法是参数化,即根据第三个变量分别定义 `x` 和 `y` 的方程。一个圆可以参数化为:
```matlab
syms t
x = sin(t)
y = cos(t)
fplot(sin(t), cos(t), [0, 2*pi])
axis([-1.5, 1.5, -1.5, 1.5])
axis square
```
##### 1.4 绘制多条曲线
要在同一图形上绘制多条曲线,需要使用 `hold on` 命令。例如,要绘制 `sin(x)`、`sin(2x)` 和 `sin(3x)`:
```matlab
syms x
y1 = sin(x)
y2 = sin(2*x)
y3 = sin(3*x)
fplot(y1, "-r")
hold on
fplot(y2, "-g")
fplot(y3, ":b")
title("Multiple Symbolic Plots")
xlabel("x")
ylabel("y")
hold off
```
完成绘图后,务必使用 `hold off` 命令。
#### 2. 其他符号绘图函数
除了 `fplot` 和 `fimplicit` 之外,符号工具箱还提供了其他符号绘图函数,这些函数与数值 MATLAB 绘图选项中的函数相对应,如下表所示:
| 函数名 | 功能 |
| ---- | ---- |
| `fplot` | 函数绘图器,如果 `z` 是 `x` 的函数:`fplot(z)` |
| `fplot3` | 三维参数曲线绘图器,如果 `x`、`y`、`z` 是 `t` 的函数:`fplot3(x, y, z)` |
| `fmesh` | 网格绘图器,如果 `z` 是 `x` 和 `y` 的函数:`fmesh(z)` |
| `fsurf` | 表面绘图器,如果 `z` 是 `x` 和 `y` 的函数:`fsurf(z)` |
| `fimplicit` | 隐函数绘图器,如果 `z` 是 `x` 和 `y` 的函数:`fimplicit(z)` |
| `fimplicit3` | 三维隐函数绘图器,如果 `w` 是 `x`、`y` 和 `z` 的函数:`fimplicit3(w)` |
| `fcontour` | 等高线绘图器,如果 `z` 是 `x` 和 `y` 的函数:`fcontour(z)` |
| `ezpolar` | 极坐标绘图器,如果 `z` 是 `x` 的函数:`ezpolar(z)` |
##### 2.1 三维表面绘图示例
以 `peaks` 函数为例,首先定义其符号版本:
```matlab
syms x y
z1 = 3*(1 - x)^2*exp(-(x^2) - (y + 1)^2)
z2 = -10*(x/5 - x^3 - y^5)*exp(-x^2 - y^2)
z3 = -1/3*exp(-(x + 1)^2 - y^2)
z = z1 + z2 + z3
```
使用 `fmesh` 和 `fsurf` 函数绘制:
```matlab
t = tiledlayout(1, 2);
nexttile
fmesh(z)
title("(a) fmesh")
nexttile
fsurf(z)
title("(b) fsurf")
title(t, ["The Peaks Function"; "Rendered with Symbolic Plotting Tools"])
```
##### 2.2 等高线绘图和参数化绘图示例
使用 `fcontour` 函数绘制 `peaks` 函数的等高线:
```matlab
t = tiledlayout(1, 2);
nexttile
fcontour(z)
title("(a) fcontour")
```
使用参数化函数创建圆环:
```matlab
nexttile
syms u v
x = 4 + (3 + cos(v))*sin(u)
y = 4 + (3 + cos(v))*cos(u)
z = 4 + sin(v)
fsurf(x, y, z)
title("(b) A Parameterized fsurf Plot")
title(t, ["Symbolic Plots"])
```
#### 3. 符
0
0
复制全文
相关推荐










