MATLAB 语言特点
- 语法规则简单
尤其内定的编程规则,与其他编程语言(如C、Fortran等)相比更接近于常规数学表示。对于数组变量的使用,不需类型声明,无需事先申请内存空间。 - MATLAB基本的语言环境提供了数以千计的计算函数
极大的提高了用户的编程效率。如,一个fft函数即可完成对指定数据的快速傅里叶变换,这一任务如果用C语言来编程实现的话,至少要用几十条C语言才能完成。 - MATLAB是一种脚本式(scripted)的解释型语言
无论是命令、函数或变量,只要在命令窗口的提示符下键入,并“回车(Enter)”,MATLAB都予以解释执行。 - 平台无关性(可移植性)
MATLAB软件可以运行在很多不同的计算机系统平台上,如Windows Me/NT/2000/XP、很多不同版本的UNIX以及Linux。无论你在哪一个平台上编写的程序都可以运行在其它平台上,对于MATLAB数据文件也一样,是平台无关的。极大保护了用户的劳动、方便了用户。其绘图功能也是平台无关的。无论任何系统平台,只要MATLAB能够运行,其图形功能命令就能正常运行。
MATLAB 入门

简单计算
计算 [12+2×(7-4)]÷32

ans即answer计算sin(45°)

Matlab中正弦函数sin就是常见的正弦函数
它的参数值是以“弧度”为单位的
pi也是Matlab的预定义变量
pi=3014159…
Matlab对字母大小写是敏感的计算 2 e x + 0.5 + 1 \sqrt{2{{e}^{x+0.5}}+1}2ex+0.5+1,其中x=4.92

sqrt(x):对x开平方
exp(x):指数计算 y = 2 sin ( 0.3 π ) 1 + 5 y=\frac{2\sin (0.3\pi )}{1\text{+}\sqrt{5}}y=1+52sin(0.3π)

计算 y = 2 cos ( 0.3 π ) 1 + 5 y=\frac{2\cos (0.3\pi )}{1\text{+}\sqrt{5}}y=1+52cos(0.3π)

计算半径为5.2m的圆的周长和面积

以上两个例子,命令行中用到了等号“=”,所以计算结果不在赋给“ans”,而是赋给用户指定法人变量y、area、circle_len。
无论是预定义变量还是用户自定义变量都被存储在系统的工作空间内,即系统定义的一个存储窗口变量的内存空间。
常见通用命令
- “clc”清除窗口显示内容的命令
- who、whos命令用来显示工作空间的变量

- clear 命令用来清除工作空间的变量

- 数值显示格式设置
缺省显示格式:简洁的短(short g)格式
窗口命令及语法格式:
>>> format [显示格式关键字]

- 常见通用命令
| 命令 | 含义 |
|---|---|
| clc | 清除命令窗口的显示内容 |
| clear | 清除Matlab工作空间中保存的变量 |
| who或whos | 显示Matlab工作空间中的变量信息 |
| dir | 显示当前工作目录的文件和子目录清单 |
| cd | 显示或设置当前工作目录 |
| type | 显示指定m文件的内容 |
| help或doc | 获取在线帮助 |
| quit或exit | 关闭/退出Matlab |
工作空间

- 查看工作空间内存变量,可以由who、whos查看
- 命名新变量
- 修改变量名
- 删除变量
- 绘图
- 保存变量数据
- 装入数据
历史窗口
- 打开历史窗口


- 首先记录每次启动时间
- 并记录在命令窗口输入命令,此次运行期间,输入的所有命令被记录为一组,并以此次启动时间为标志
- 可以查看命令窗口输入过的命令或语句
- 可以选择一条或多条命令执行拷贝、执行、创建M文件等
- 要清除历史记录,可以选择Edit菜单中的Clear Command History 命令
当前目录窗口和搜索路径
- 当前目录窗口
指Matlab运行时的工作目录 - 只有在当前目录和搜索路径下的文件、函数才可以被运行和调用。
- 如果没有特殊指明,数据文件也将存放在当前目录下;
- 用户可以将自己的工作目录设置成当前目录,从而使得所有操作都在当前目录中进行。
- 搜索路径
指Matlab执行过程中对变量、函数和文件进行搜索的路径。 - 在File菜单中选择Set Path命令或在命令窗口输入pathtool命令,出现搜索路径设置对话框:

【注意】修改完搜索路径后,需要进行保存。
获取在线帮助
- MATLAB提供的帮助信息有两类
(1)简单纯文本帮助信息
>>> help
>>> lookfor(条件比较宽松)例:inverse
(2)窗口式综合帮助信息(文字、公式、图形)
>>> doc
>>> helpwin

功能演示
roots求根
roots用于求多项式的根
C = [ c 1 , c 2 , . . . . . . , c n + 1 ] C=[{{c}_{1}},{{c}_{2}},......,{{c}_{n+1}}]C=[c1,c2,......,cn+1],这是一个维度为n+1的行向量
对应 c 1 ∗ s n + c 2 ∗ s n − 1 + . . . . . . + c n ∗ s 1 + c n + 1 ∗ s 0 = 0 {{c}_{1}}*{{s}^{n}}+{{c}_{2}}*{{s}^{n-1}}+......+{{c}_{n}}*{{s}^{1}}+{{c}_{n+1}}*{{s}^{0}}=0c1∗sn+c2∗sn−1+......+cn∗s1+cn+1∗s0=0 这个多项式。
- 求方程2 x 5 − 3 x 3 + 71 x 2 − 9 x + 13 = 0 2{{x}^{5}}-3{{x}^{3}}+71{{x}^{2}}-9x+13=02x5−3x3+71x2−9x+13=0的全部根

【roots】用于求多项式的根
C = [ c 1 , c 2 , . . . . . . , c n + 1 ] C=[{{c}_{1}},{{c}_{2}},......,{{c}_{n+1}}]C=[c1,c2,......,cn+1],这是一个维度为n+1的行向量
对应 c 1 ∗ s n + c 2 ∗ s n − 1 + . . . . . . + c n ∗ s 1 + c n + 1 ∗ s 0 = 0 {{c}_{1}}*{{s}^{n}}+{{c}_{2}}*{{s}^{n-1}}+......+{{c}_{n}}*{{s}^{1}}+{{c}_{n+1}}*{{s}^{0}}=0c1∗sn+c2∗sn−1+......+cn∗s1+cn+1∗s0=0 这个多项式。
求逆inv
Y = inv(X) 计算方阵 X 的 逆矩阵。
X(-1) 等效于 inv(X)。
x = A\b 的计算方式与 x = inv(A)*b 不同,建议用于求解线性方程组。
- 求解线性方程组
{ 2 x + 3 y − z = 2 8 x + 2 y + 3 z = 4 45 x + 3 y + 9 z = 23 \left\{ \begin{matrix} 2x+3y-z=2 \\ 8x+2y+3z=4 \\ 45x+3y+9z=23 \\ \end{matrix} \right.⎩⎨⎧2x+3y−z=28x+2y+3z=445x+3y+9z=23
即矩阵方程
AX=B --> X=A(-1)B
符号计算
- 解方程组
{ 2 x + 3 y − z = 2 8 x + 2 y + 3 z = 4 45 x + 3 y + 9 z = 23 \left\{ \begin{matrix} 2x+3y-z=2 \\ 8x+2y+3z=4 \\ 45x+3y+9z=23 \\ \end{matrix} \right.⎩⎨⎧2x+3y−z=28x+2y+3z=445x+3y+9z=23
即解
{ 2 x + 3 y − z − 2 = 0 8 x + 2 y + 3 z − 4 = 0 45 x + 3 y + 9 z − 23 = 0 \left\{ \begin{matrix} 2x+3y-z-2=0 \\ 8x+2y+3z-4=0 \\ 45x+3y+9z-23=0 \\ \end{matrix} \right.⎩⎨⎧2x+3y−z−2=08x+2y+3z−4=045x+3y+9z−23=0
求解定积分
求解 I = ∫ 0 1 x l n ( 1 + x ) d x I =\int _{0}^{1}{xln(1 + x)dx}I=∫01xln(1+x)dx
- quad
以自适应Simpson积分法计算数值积分
语法
q = quad(fun,a,b)
q = quad(fun,a,b,tol)
q = quad(fun,a,b,tol,trace)
[q,fcnt] = quad(...)

由于quad的精度较低,并不推荐使用quad,建议使用integral。
- int \ integral
integral仅适用于2012以上的版本
integral数值积分
q = integral(fun,xmin,xmax) 使用全局自适应积分和默认误差容限在 xmin 至 xmax 间以数值形式为函数 fun 求积分。
integral 的第一个参数需要是一个函数
多项式曲线拟合
考虑如下 x-y 一组实验数据:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2]
注:y(x) = x3 - 2x2 - 5 In MATLAB y = [1 -2 0 -5]
- polyfit
多项式曲线拟合
p = polyfit(x,y,n)
返回次数为 n 的多项式 p(x) 的系数,该阶数是 y 中数据的最佳拟合(在最小二乘方式中)。p 中的系数按降幂排列,p 的长度为 n+1
p ( x ) = p 1 x n + p 2 x n − 1 + . . . + p n x + p n + 1 p(x) = {p_1}{x^n} + {p_2}{x^{n - 1}} + ... + {p_n}x + {p_{n + 1}}p(x)=p1xn+p2xn−1+...+pnx+pn+1 - polyval
y = polyval(p,x)
计算多项式 p 在 x 的每个点处的值。参数 p 是长度为 n+1 的向量,其元素是 n 次多项式的系数(降幂排序):
p ( x ) = p 1 x n + p 2 x n − 1 + . . . + p n x + p n + 1 p(x) = {p_1}{x^n} + {p_2}{x^{n - 1}} + ... + {p_n}x + {p_{n + 1}}p(x)=p1xn+p2xn−1+...+pnx+pn+1

plot画图,用星号表示x,y坐标描点,虚线表示一次多项式拟合出的线,实线表示三次多项式拟合出的曲线,可见三次拟合结果较好。
数值表示、变量及表达式
数值的记述
Matlab的数只采用习惯的十进制表示,可以带小数点和负号;其缺省的数据类型为双精度浮点型(double)。
例如:3 -10 0.001 1.3e10 1.256e-6变量命令规则
(1)变量名、函数名对字母的大小写是敏感的。如myVar与myvar表示两个不同的变量。
(2)变量名第一个字母必须是英文字母。
(3)变量名可以包含英文字母、下划线和数字。
(4)变量名不能包含空格、标点。
(5)变量名最多可包含63个字符(6.5及以后的版本)。Matlab预定义的变量
| 变量名 | 意义 |
|---|---|
| ans | 最近的计算结果的变量名 |
| eps | MATLAB定义的正的极小值=2.2204e-16 |
| pi | 圆周率π |
| inf | ∞值,无限大 |
| i 或 j | 虚数单位,sqrt(-1) |
| NaN | 非数, 0/0、∞/∞ |
【说明】
每当MATLAB启动完成,这些变量就被产生。
MATLAB中,被0除不会引起程序中断,给出报警的同时用inf或NaN给出结果。
用户只能临时覆盖这些预定义变量的值,Clear或重启MATLAB可恢复其值。
- 运算符和表达式
| 运算 | 数学表达式 | MATLAB运算符 | MATLAB表达式 |
|---|---|---|---|
| 加 | a+b | + | a+b |
| 减 | a-b | - | a-b |
| 乘 | a×b | * | a*b |
| 除 | a/b或a\b | / 或 \ | a/b或a\b |
| 幂 | ab | ^ | a^b |
【说明】
Matlab用“\”和”/”分别表示“左除”和“右除”。对标量而言,两者没有区别。对矩阵产生不同影响。
MATLAB表达式的书写规则与“手写方式”几乎完全相同。
表达式按与常规相同的优先级自左至右执行运算。
优先级:指数运算级别最高,乘除次之,加减最低。
括号改变运算的次序。
- 复数及其运算
MATLAB中复数的表达:z=a+bi,其中a、b为实数。
MATLAB把复数作为一个整体,像计算实数一样计算复数。
复数 z 1 = 3 + 4 i , z 2 = 1 + 2 i , z 3 = 2 e π 6 i z1 = 3 + 4i,z2 = 1 + 2i,z3 = 2{e^{\frac{\pi }{6}i}}z1=3+4i,z2=1+2i,z3=2e6πi
计算 z = z 1 z 2 z 3 z = \frac{{{z_1}{z_2}}}{{{z_3}}}z=z3z1z2 - real
X = real(Z) 返回数组 Z 中每个元素的实部。 - imag
Y = imag(Z) 返回数组 Z 中每个元素的虚部。 - angle
theta = angle(z) 为复数数组 z 的每个元素返回区间 [-π,π] 中的相位角。theta 中的角度表示为 z = abs(z).exp(itheta)。 - abs
Y = abs(X) 返回数组 X 中每个元素的绝对值。
如果 X 是复数,则 abs(X) 返回复数的模。
