前言:上一篇说了变量的类型和赋值,这里接着说这些变量的根本运算,捎带一些罕用的零碎自带的函数,通过这些运算和函数,曾经能够实现一些简略的计算了。
1. 数值变量的根本运算
数值变量都是矩阵,矩阵之间最根本的运算有加、减、乘(方)、转置,运算符别离是 +-*’,与数学中的个别示意无异,但仍有一些中央须要留神,以下联合代码进行阐明。
1)矩阵加减法只有维度雷同的矩阵能力进行,例如
a=[1 2]
b=[1 3]
c=[1;2]
则 d =a+ b 和 d =a- b 都是能够进行的,因为 a 和 b 都是 1 行 2 列,但 d =a+ c 则无奈进行,因为数学上,不同维度的矩阵加减法并没有定义。
2)矩阵乘法只有第一个矩阵的列数等于第二个矩阵的行数时,能力进行,例如上段代码中的 abc,则 d =a c 是能够进行的,但 d =a b 则不能进行,起因同样是因为这种计算在数学上没有定义。还有一种非凡的乘法,也就是乘方,例如 A =[1 2;3 4] 状况下 B =A* A 这样的矩阵乘法能够写成 B =A^2,当然,数学上规定,只有方阵能力进行乘方。
3)矩阵与数乘除,因为数也能够看做 1 1 的矩阵,因而这是一种非凡的矩阵乘除法,和数学上定义一样,比方 d =a 2 和 d =a/2,这些都能进行。
4)转置,任何维度的矩阵都能够进行转置,例如 d =a’ 就会将 a 这个行向量转置,失去一个列向量 d。须要留神的是,这种运算更精确的说法是共轭,对实数矩阵而言,这两种说法并没有什么区别,但对复数矩阵而言,共轭的意思,不仅是把 a(i,j) 和 a(j,i) 替换地位,更要把所有元素的虚数局部乘以 -1。
2. 数值变量的非凡运算
和其他软件不同,matlab 里提供了一些很有意思的运算符,有点乘.、点除./ 和点方.^,这些运算符在自身的运算符前加一个点,能够实现很弱小的性能,但因为和个别的运算符太像,也造成了很多人混同。这些运算符有很多叫法,比方.,个别称为点乘、元素乘、数乘,这些叫法都是为了让这个运算符区别于一般的乘,有时为了强调这种区别,也把通常的乘叫矩阵乘。
简略而言,这些运算的含意是将矩阵作为个别的数来进行运算,比方
[1 2 3].[4 5 6]=[14 25 36]
[1 2 3]./[4 5 6]=[1/4 2/5 3/6]
[1 2 3].^3=[1^3 2^3 3^3]
所以这里点乘和点除须要留神,只有同样维度的矩阵能力进行这种非凡运算。另外点除还要留神不要除以零,尽管 matlab 并不会报错,但除以零在数学上没有定义,所以这种除法其实曾经失去了意义。
于是,什么时候用矩阵乘,什么时候用点乘,其实是看计算的目标,但有些时候,这两种运算符确实是等效的:
1)数字的乘除,1 1 和 1.1,当然后果雷同
2)矩阵与数字的乘除,1 a 和 1.a,后果也是一样的
3. 数值变量的罕用函数
这里的函数都能够通过 doc+ 函数名查到更具体的帮忙,因而仅列出典型用法。
a=ones(3) 或者 a =ones(1,5) 生成指定大小的全 1 矩阵
a=zeros(3) 或者 a =zeros(1,5) 生成指定大小的全 0 矩阵
a=eye(3) 生成指定大小的单位方阵
inv([1 2;3 4]) 矩阵求逆,只能对方阵操作。matlab 有左除法,通常更高效,如有须要也可尝试
size([1 2;3 4]) 取得矩阵的行数和列数,也能够通过 size([1 2;3 4],1) 独自取得行数或者列数
length([1 2 3]) 取得向量的长度,这个命令也能够对矩阵操作,当然个别只对向量操作
max([1 2 3]) 和 min([1 2 3]) 取得向量的最大和最小值,也能够对矩阵操作
sort([2 1 3]) 按大小对向量进行排序,也能够对矩阵操作
sum([1 2 3]) 求和,也能够对矩阵操作
cumsum([1 2 3]) 累积求和,相似求定积分,个别只对向量操作,须要留神的是,累积求和后,后果和原向量长度一样
diff([1 2 5 6]) 差分运算,相似于求导,个别只对向量操作,须要留神的是,差分操作后,后果的长度比原向量少一
plot([1 2.5 3],[5 6 4]) 画图,须要留神的是,两个向量的长度要相等能力画图
exp([1 2]) 指数函数,相似的数学函数还有三角函数(sin,cos,tan,asin,acos,atan),对数函数(log),这些函数在对矩阵操作时,相当于对矩阵中的每个元素进行操作,相似点乘这样的运算符。