与其他程序语言类似,MATLAB也提供了数学表达式功能。但是,与大多数程序语言不同的是,这些表达式主要是针对矩阵进行操作的。[大谦MATLAB,dqmatlab点com]
数值表示
MATLAB使用传统的数值表示方法,例如对于比较长的数,使用科学记数法;虚数用i或j作为后缀。
【例3-1】一些合法的数值表示
3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i
所有数值在MATLAB内部被保存为IEEE浮点标准指定的long型格式。浮点数据的精度为16个小数位,范围大约为10-308~10+308。
运算符
1.算术运算符
算术运算符可以实现四则运算以及幂、转置等运算。MATLAB表达式采用的算术运算符如表3-1所示。
表3-1 MATLAB表达式采用的算术运算符
| 运 算 符 | 说 明 | 运 算 符 | 说 明 |
|---|---|---|---|
| + | 加 | \ | 左除 |
| 减 | ^ | 幂 | |
| * | 乘 | ' | 复数共轭转置 |
| / | 除 | () | 指定计算顺序 |
2.比较运算符
比较运算符用于比较两个数的大小,如表3-2所示。
表3-2 比较运算符
| 运 算 符 | 描 述 | 运 算 符 | 描 述 |
|---|---|---|---|
| < | 小于 | >= | 大于或等于 |
| <= | 小于或等于 | == | 等于 |
| > | 大于 | ~= | 不等于 |
3.逻辑运算符
逻辑运算符用于判断对象或对象之间的某种逻辑关系。
【例3-2】
假设有下面3个数组和矩阵
A = [0 1 1 0 1];
B = [1 1 0 0 1];
C=[0 1 2;
0 –3 8;
0 5 0];
表3-3列出了各种运算符及对应函数的逻辑运算结果。
表3-3 逻辑运算符
| 运算符 | 函 数 | 描 述 | 示 例 |
|---|---|---|---|
| & | and | 两个数组中相同位置的值都为非0时返回1,否则返回0 | A & B=01001 或 and(A,B) |
| | | or | 两个数组中相同位置的值有一个为非0时返回1,否则返回0 | A | B=11101 或 or(A,B) |
| ~ | not | 对数组中的元素取反,即非0值变为0,0变为1 | ~A=10010 或 not(A) |
| xor | 两个数组中相同位置的元素只有一个为非0时返回1,否则返回0 | xor(A,B)=10100 | |
| any(C) | 如果矢量中有任何一个元素为非0,则返回1;否则返回0 | any(C) ans= 0 1 1 | |
| all(C) | 如果矢量中所有元素为非0,则返回1,否则返回0 | all(C) ans= 0 1 0 |
续表
| 运算符 | 函 数 | 描 述 | 示 例 |
|---|---|---|---|
| && | 如果符号两端的表达式均为真,则返回true(1);否则返回0 | a=8; a>5 && a<10 ans= 1 | |
| || | 如果符号两端的表达式有一个为真,则返回true(1);否则返回0 | a=11; a>5 || a<10 ans= 1 |
4.运算符的优先级
按照优先级别,各种运算符的先后次序如下所示。
小括号();
转置(.')、幂(.^)、复数共轭转置(')、矩阵的幂(^);
一元的加(+)、一元的减(-)、逻辑否(~);
乘(.*)、右除(./)、左除(.\)、矩阵乘(*)、矩阵右除(/)、矩阵左除(\);
加(+)、减(-);
冒号操作符(:);
小于(<)、小于或等于(<=)、大于(>)、大于或等于(>=)、等于(==)、不等于(~=);
逐元素AND(&);
逐元素OR(|);
&&;
||。
处理字符串表达式
处理字符串表达式需要使用eval函数和feval函数。
eval函数可以处理包含MATLAB表达式、语句或函数调用的字符串。使用该函数的最简单的语法格式为:
eval('string')
【例3-3】用eval函数生成n阶Hilbert矩阵。
t = '1/(m + n - 1)';
k=3;
for m = 1:k
for n = 1:k
a(m,n) = eval(t);
end
end
feval函数与eval函数的区别在于,feval函数执行的是函数而不是MATLAB表达式。要执行的函数通过函数句柄或包含函数名称的字符串在第1个参数中指定。