matlab最基础教程(四):常用的系统自带函数,符号变量与字符串篇
前言:matlab字面意思是矩阵实验室,软件重点是数值变量的运算。所以在符号变量和字符串的运算上,功能并不强大,我用的也不是很多,因此这篇的内容请多多指正。
1.符号变量的基本运算
符号变量的基本运算与数值变量一样,加减乘之类的,比如
syms x y(x)
g=x*y
并没有需要特别说明的。
2.符号变量的特殊运算
符号变量的特殊运算也与数值变量一样,但一般而言,符号变量都是1*1矩阵,因此特殊运算与基本运算一般都是等效的。比如
g=x*y
g=x.*y
的运算结果完全一样。
3.符号变量的常用函数
数值变量的常用函数,一般都可以直接用在符号变量上,比如三角函数
syms x
y=sin(x)
a=1
b=sin(a)
这些都是可以通用的,而且函数的含义也完全一样。
但偏偏有些函数非常蛋疼,对符号变量与数值变量都可以进行操作,但操作的含义完全不同,比如diff,diff对于一个数值变量的运算结果是差分,而对于一个符号变量的运算结果则是求导
syms x
f=diff(sin(x))
a=[1 2 3]
b=diff(a)
运算出来的f是sin(x)的导数,也就是cos(x),依然是个符号变量,而b运算结果则是一个差分向量。
另外也存在很多函数只能对数值变量操作,比如离散傅里叶变换fft。还有很多函数只能对符号变量操作,比如泰勒展开taylor。因此在matlab使用中,一定要区分变量的类型,其实真的用起来也好区分,因为完成特定的计算任务,要么全部用数值,要么全部用符号,这也符合一般处理问题的原则。
我平时做符号运算比较少,用到的函数,除了exp、sin这类数学运算外,还有:
int 求积分,符号运算特有,可以求定积分,也可以求不定积分,但一般不会写+C
diff 求导数,符号运算特有
limit 求极限,符号运算特有
ezplot 作图(新版本中,软件推荐使用fplot),类似数值变量运算时的plot
4.字符串的常用函数
matlab中字符串的常用算符就更少了,但都非常有用,这里介绍几个:
1)num2str和str2num:可以实现数值变量和字符串变量的转换,比如
a=1
b=num2str(1)
运算结果显示a是一个数值变量,b是一个字符串变量,函数名中的2就是英文中to的意思,也就是把num数值类型转化成str字符类型。str2num就是这个函数的反函数,这两个命令结合,可以实现特定的功能,比如提取一个数字的最高位:
a=123456
b=num2str(a)
c=b(1)
d=str2num(c)
2)eval:其原理是把“字符串”变成“命令”并执行。但使用过程中需要注意的是,这个命令不可以“编译”,也就是只能在matlab内使用,无法移植到C,JAVA等其他语言平台。有需要的可以自行尝试这个命令。