数学计算有数值计算与符号计算之分。这两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符号计算并不是一件容易的事。而 Matlab 自带有符号工具箱 Symbolic Math Tooibox , 而且可以借助数学软件 Maple, 所以 Matlab 也具有强大的符号运算功能。 在数值计算 ( 包括输入、输出及中间变量在内的 ) 过程中 , 所运作的变量都是被赋了值的数值变量。而在符号计算的整个过程中 , 所运作的是符号变量。注意 : 在符号计算中所出现的数字也都是当作符号处理的。 一、 字符串的定义 MATLAB 用单引号来定义字符串。例如在指令窗口输入:A= ’hello, this is a string’ ,则会输出 A=hello, this is a string 二、 定义符号变量与符号表达式 在 MATLAB 指令窗口,输入的数值变量必须提前赋值,否则会提示出错。只有符号变量可以在没有提前赋值的情况下合法地出现在表达式中,但是符号变量必须预先定义。 在 Matlab 的数据类型中 , 字符型与符号型是两种重要而又容易混淆的数据类型。 符号变量是利用指令 sym 和 syms 来创建 . 它们的使用格式为 : S = sym( ′ A ′ ) 定义单个符号变量 S syms a b c 定义多个符号变量 a, b, c syms 命令的使用要比 sym 简便 , 它一次可以定义多个符号变量 , 而且格式简练。因此一般用 syms 来创建符号变量。注意各符号变量之间必须是空格隔开。 语句 Syms x y z w 表示将 x,y,z 和 w 定义为符号变量。如果再输入: p=sin(x)+cos +z+2*w, 是执行后 P 就表示表达式 sin(x)+cos +z+2*w 三、 将数值表达式转换为符号表达式 命令 sym 可将数值表达式转成符号表达式,其语法为: Sym(‘ 数值表达式 ’) 例如,在指令窗口输入: P=sym(‘2+sqrt(5)’) 则得到输出: P=2+sqrt(5) ,此时P是一个符号表达式,而不是一个数值表达式。 四、 计算符号表达式的值 如果要计算前面的符号表达式P的值,则需要用 eval(P) 来计算P的近似值。即可输入: Eval(P) 得到输出: ans=4.2361 由于 P=sym(‘2+sqrt(5)’) 实际上是一个符号常数,所以也可以用 vpa 命令计算。 五、数值变量、符号变量、字符变量的相互转化 数值变量、符号变量、字符变量的相互转化在 Matlab 工作空间中 , 数值、符号和字符是 3 种主要的数据类型。 Matlab 可以利用命令来实现不同类型数据间的转换。下面对这些命令逐一介绍。 命令形式 : x = double( s) 功能 : 转换 s 为双精度型数值变量 x 。 说明 : s 可以是符号变量也可以是字符变量 , 当 s 是符号变量时 , s 必须是全为数字的符号 , 返回数值变量 x; 当 s 是字符变量时 , 返回数值矩阵 x , 矩阵中的元素是相应的 ASCI I 值。 例如 : s1 = sym( ′ 12 .9 ′ ) ; ↙ x1 = double(s1) ↙ % 把符号变量 s1 转化为数值变量 x1 x1 = 12 .9000 s2 = sym( ′ 2 * x ′ ) ; ↙ % 定义为 2 x 符号表达式 x2 = double(s2) ↙ ?? ? Undefined function or variable ′ x ′ . x3= double( ′ A ′ ) ↙ % 把字符 A 转化为它对应的 ASCI I 码值 x3 = 65 c1 = ′ 122345 ′ ; ↙ % 把字符串′ 122345 ′转化为它对应的 ASCII 码值 x4 = double( c1) ↙ x4 = 49 50 50 51 52 53 命令形式 : x = str2num( s) 功能 : 把字符串变量 s 转化为数值变量 x 。 说明 : 当 s 是一个包含非数字的字符变量时 , st r2num( s) 将返回一个空矩阵 [ ] 。 例如 :s1 = ′ 123 ′ ; x1 = str2num(s1) ↙ x1 = 123 s2 = ′ 12a ′↙ % 字符串变量 s2 包含非数字的字符变量 a s2 = 12a x2 = str2num(s2) ↙ x2 = [ ] 命令形式 : x = numeric ( s) 功能 : 转换 s 为数值变量 x 。 说明 : x = numeric ( s) 等价于 x = double ( sym( s ) ) , 但 s 不可以是矩阵。 例如 :s1 = sym( ′ 12 .9 ′ ) ; x1 = numeric( s1) ↙ x1 = 12 .9000 命令形式 : x = sym( s) 功能 : 转换 s 为符号变量 x 。 说明 : s 不可以是字符矩阵和非法的表达式。 例如 :s1 = ′ 23 * a ′ ; x1 = sym( s1) ↙ x1 = 23 * a s2 = 24 + 6; x2 = sym(s2) ↙ x2 = 30 命令形式 : s = int2str ( x ) 功能 : 将数 x 转换为字符变量 s 。 说明 : 当 x 是普通有理数时 , 将对四舍五入后进行转换。当 x 是虚数时 , 将只对其实部进行转换。 例如 : x1 = 19; s1 = int2str( x1) ↙ s1 = 19 x2 = 2 .4; ↙ s2 = int2str(x2) ↙ % 先把变量 x2 四舍五入 , 然后再转换为字符型变量 s2 s2 = 2 x3 = 2 .9 + 5 * i ; ↙ % 变 量 x3 是复数 s3 = int2str( x3) ↙ s3 = 3 命令形式 : s = num2str ( x) 功能 : 将普通数值变量 x 转换为字符变量 s 。 说明 : 在 int2st r 命令中对 x 的限制则全部取消。这条命令在图形与图例的标注中非常有用。 例如 : x1 = 19; s1 = num2str( x1) ↙ s1 = 19 x2 = 2 .4; s2 = num2str( x2) ↙ s2 = 2 .4 x3 = 2 .9 + 5 * i ; s3 = num2str( x3) ↙ s3 = 2 .9 + 5i |