1运算的优先级
许多的数学运算写入一个表达式是非常平常的事。例如,考虑初速度为 0 的匀加速运动的位移表达式
distance = 0.5 * accel * time ^ 2
这个表达式有二个乘法运算和一个幂运算。在这样的表达式中,知道运算的先后顺序是十分重要的。如果幂运算先于乘法运算执行,这个表达式等价于
distance = 0.5 * accel * (time ^ 2)
如果乘法运算先于幂运算执行,这个表达式等价于
distance = (0.5 * accel * time) ^ 2
这两个式子将产生不同的结果,所以我们必须清楚它们中那个是正确的。为了使表达的值精确,
MATLAB 建立了一系列的规则控制运算的层次或顺序。这些规则一般情况下遵循代数的运算法则。数学运算的顺序如表1
。
表1
运算的优先级

例子:
变量
a,b,c,d
初始化如下
a = 3; b = 2; c = 5; d = 3;
计算如下的
MATLAB
的赋值语句
(a) output = a*b+c*d;
(b) output = a*(b+c)*d;
(c) output = (a*b)+(c*d);
(d) output = a^b^d;
(e) output = a^(b^d);
正如我们看到的,运算的顺序对一个代数表达式的最终值产生重大的影响。将程序中的每个表达式尽量写清楚,这是十分重要的。编写的程序不仅要能够计算出所要求的值的来,在需要的时侯,还要考虑它的可维护性。你应当经常问自己“六个月后我能看得懂我现在编得程序吗?其他的程序员看到我的代码,他能迅速的理解吗?”。如果在你的心中有所疑虑,那就用更多的括号使之更加清晰。
好的编程习惯
在需要的时侯用括号使用表达式更加清晰和易于理解。
如果在一个表达式中用到括号,那么括号必须平衡。也就是说,左括号数与右括号数相等。如果两者数目不相同,那么将会导致错误的产生。这种错误经常在输入过程中发生,当MATLAB 编译器在执行这个命令时被发现。例如
(2+4) /2)
在执行时将会出现一个错误
2MATLAB的内置函数
与数学的函数不同,MATLAB
函数返回一个或多个值给调用函数。max 函数就是这样的一个例子。这个函数一般情况下返回输入向量中的最大值,但是它返回的第二个参数是输入向量中的最大值在向量中的位置。例如,语句
maxval = max ([1 -5 6 -3])
返回的结果为 maxval=6,
但是要有两个返回值,那么这个函数包括最大所处的位置。
[maxval index] = max ([1 -5 6 -3])
将会产生结果 maxval=6,
和
index=3.
许多 MATLAB
函数定义了一个或多个标量输入,产生一个输出。例如,语句 y=sin(x)计算了
x
的正弦,并将结果存储到
y 变量中。如果这些函数接受了输入值构成的数组,那么MATLAB
将一一计算出每个元素所对应的值。例如,假设
x=[0 pi/2 3*pi/2 2*pi]
那么语句
y=sin(x)
将会产生 y=[0 1 -1 -0].
一些极其常用的 MATLAB
函数列入了表
2
中
.
这些函数将会用在以后的例子的作业中. 如果你要加载不在下表中的函数
,
那么你通过前面介绍的方法
,
搜索适当的函数. 注意与大多数的计算语言不同
,
许多的
MATLAB
函数能够正确计算出复数结果.matlab 自动计算出正确的结果
,
尽管其结果可能是虚数和复数
.
例如
,
在
C
和
Fortan 语言中运行函数sqrt(-2)
时将会出现运行时错误
.
相反
,MATLAB
将会产生虚部答案
.
>> sqrt(-2)
ans =
0 + 1.4142i
表2 MATLAB中常用的内置函数