Matlab绘制三维图形
网格图
示例
函数
mesh(X,Y,Z)
X是n维向量,Y是m维向量,Z是m*n维的矩阵
线框网格线的交点的坐标为 (X(j), Y(i), Z(i,j))
X、Y和Z都是m*n维的矩阵
线框网格线的交点的坐标为**(X(i,j), Y(i,j), Z(i,j))**
mesh(Z)
Z是m*n维的矩阵
等价于
X = 1:3
Y = 1:2
Z = [4,8,10;5,9,13]
meshc
在xy平面上绘制曲面的等高线
meshz
在xy平面上绘制曲面的底座
补充
三维旋转和数据游标的使用,以及X-Y视图的切换(在三维旋转状态下点击鼠标右键)
数据游标默认只能添加一个,按住Alt键不动,可以添加多个数据游标
看到背部的图像
hidden off
设置透明度
alpha(a)
0<a<1,其中a越接近1,就越透明
例题
绘制 z = x^2 - y^2的图像 ,其中x和y都位于[0,5]之间
linspace(x1,x2,N)
linspace是Matlab中的一个函数,用于产生给定范围内指定数量的点数,相邻数据跨度相同,并返回一个行向量。
功能:用于产生x1,x2之间的N点行向量,相邻数据跨度相同。其中x1、x2、N分别为起始值、终止值、元素个数
冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
axis vis3d
绘制 z = sin(sqrt(x2+y2))/sqrt(x2+y2) 的图形,其中x和y都位于[-5,5]之间
如果不对tem处理,那么z的最中间的一个值 0/0 = NaN
所以在后面加上一个非常非常小的数字: 1e-12 = 10^(-12) ,当然你也可以单独找到值为0的地方对其修改
曲面图
和网格图的对比
subplot(m,n,index)
把几张图放在一起进行对比
特殊函数
surfc
在xy平面上绘制曲面的等高线
surfl
加上了灯光效果,看起来自然点
设置色彩模式
shading 是用来处理色彩效果的,分以下三种:
1.shading faceted是默认的模式
2.shading flat 在faceted的基础上去掉图上的网格线
3.shading interp 在flat的基础上进行色彩的插值处理,使色彩平滑过渡
等高线图
示例
函数
contour(x,y,z)
在x-y平面绘制等高线图,Matlab会自动选择等高线的层级
contour(x,y,z,n)
n是一个标量,那么Matlab会将等高线的层数设置为n,且会自动选择层所在的高度
contour(x,y,z,levels)
若想得到固定的n个高度的等高线,将levels可以设置为n元行向量,其中向量中的值为高度值
contourf
画出来的等高线图有颜色填充
contour3
3维等高线图,等高线不再投影到x-y平面
符号函数的三维图形绘制
plot3
类似于plot函数,实际上可以认为画的是三维空间下的折线图
fplot3函数
fmesh 三维网格图
默认x的变化范围和y的变化范围都是[-5 5]
fmesh(z,[-2 2 -4 4],‘MeshDensity’,11)
设置每个方向计算的点数
fsurf 三维曲面图
fcontour 绘制等高线
绘制隐函数
fimplicit3(f)
函数句柄
f = @(x,y,z) x.^2 + y.^2 - z.^2;
完整形式
fimplicit3(f,interval,‘EdgeColor’, ‘none’, ‘FaceAlpha’,0.5)
结果
Matlab的符号计算
创建
简单符号变量的创建
syms x
syms a b c
符号方程的创建
syms a x
y = a*x+x^2
或者
y = str2sym(‘a*x+x^2’)
符号矩阵
syms alpha
M = [cos(alpha) -sin(alpha);
sin(alpha) cos(alpha)]
简单运算
符号表达式的整理
化简
因式分解
多项式展开
合并
计算分子与分母
让结果显示的更加自然
mupad
求导与差分
一元函数求导
diff(y,n)
其中y是函数
n表示求n次导数
示例:
*y = cos(x)tan(x)
dy = diff(y,10) %求十阶导数
simplify(dy)
ans =
-sin(x)
多元函数求导
差分
如果diff函数作用的对象不是符号函数,而是矩阵,那么对应的功能是求差分
积分
不定积分
函数int(y,x)
示例:
syms x
y = x^2
int(y,x)
ans =
x^3/3
注意:结果不会加绝对值
定积分
int(y,x,a,b)
表示在区间ab上积分
注意,不是所有的函数都可以利用int函数计算出最后的结果
数值积分
integral(y,a,b)
注意要用函数句柄的形式
求解方程或者方程组
不同的MATLAB版本之间的语法存在不兼容的情况
solve函数
例1 求解单变量方程
例2 多变量方程求解
例3 方程组求解
注意:有的时候会警告
绘制图像
vpasolve函数
vpasolve(eqn, x, [0 2])
在区间内求解
求解能力比solve强
vpasolve(eqn, x, -5)
给定一个初始点
fsolve函数
fsolve是Matlab优化工具箱中的一个函数,可专门用来求解特别复杂的方程和方程组