使用MATLAB绘制3D图形
本文共656字。
版权声明:署名 | CC BY 4.0
近日帮别人用MATLAB画图,记录一下。 MATLAB版本为最新的R2023a。毕竟学校买了正版,不用白不用。
使用两个向量生成meshgrid
1 | % meshgrid 的两个参数长度需保持一致 |
假设meshgrid的参数中两个向量长度为N,则运行结果是得到两个NxN的矩阵X和Y,例子如下:
1 | >> [X, Y] = meshgrid(1:4, 5:8) |
这样一来,
计算因变量的值
1 | % 预分配矩阵内存 |
这里我对F_mat的计算方法不是很满意。虽然可以用parfor并行计算,但是还是想用类似于闭包的东西写得简洁一些(并且相信MATLAB做足了优化,不需要我手动并行了)。
3D作图

1 | % surf 可以作出一个平面 |
自此图就画好了。
附录:一些常见技巧
定义一个函数
1 | function S = SUM(a, b) |
其中S是函数的返回值,当函数执行完毕,S的值就是函数的返回值。实际上,函数名称和函数返回变量可以重名,例如可以把第一行修改为function F = F(a, b)。
求解方程的数值解
1 | syms x; |
首先需要定义若干需要求解的符号变量(用于解方程的符号而不是真正的编程变量),然后调用vpasolve即可。顺便一提solve可以求解析解,但是一旦求不出来,就会先报一个warning然后fallback到vpasolve求解。
判断一个数是否为实数
MATLAB提供了一个函数isreal用于判断一个数是实数或者复数。
1 | r = 1; |
文档指出,虚部为0的数会被认为是复数:
1 | c = complex(1) % 1.0 + 0.0i |
vpasolve的返回值可能是虚部为0的复数,因此需要改用虚部是否为0判断是否为实数:
1 | c = complex(10) % 10.0 + 0.0i |
Fin.