1.2 MATLAB中的数组及其运算
现代科学计算都基于多维空间,因此MATLAB中的数值计算都是以向量或矩阵的形式来定义的。需要注意的是,MATLAB中定义的数组(向量)运算,无论是运算符号还是运算规则,都与我们熟悉的线性代数中的定义有一定差异。
MATLAB中数组(向量)和矩阵的定义非常简便,比如在命令窗口输入:
x=[123456]
或
x=[1, 2, 3, 4, 5, 6]
即可定义一个6维行向量或1×6的矩阵。输入命令:
x=[123; 456; 789]
得到的是一个3×3的矩阵,括号内的“; ”表示分行。
MATLAB中可以定义多种形式的数组(向量)。设m<n,命令如表1-1所示,
表1-1
其中,linspace(m, n, k)是将 [m, n] 进行k等分,取其端点。
上面介绍的都是如何定义行向量,要定义列向量可以用命令:
x=[1; 2; 3; 4; 5]
如果已有行向量x,则可以对其转置获得列向量,转置命令为:
y=x′
在MATLAB中,数组与数字之间可以定义加减乘除。比如设X=[a, b, c, d, e], q为标量,则有如下计算规则:
X+q=[ a+q, b+q, c+q, d+q, e+q]
X∗q=[ a∗q, b∗q, c∗q, d∗q, e∗q]
X/q=[ a/q, b/q, c/q, d/q, e/q]
X.\q=[q/a, q/b, q/c, q/d, q/e]
务必要特别注意上述代码的差异,很多编程错误都缘于这些基本的运算符号输入有误。
设X=[a, b, c, d, e], q为标量,数组的幂运算代码及其计算规则为
X.^q=[ a^q, b^q, c^q, d^q, e^q]
q.^X=[ q^a, q^b, q^c, q^d, q^e]
设X=[a, b, c, d], Y=[e, f, g, h],则MATLAB 定义的数组之间的运算规则如下:
X+Y=[ a+e, b+f, c+g, d+h]
X. ∗Y=[ a∗e, b∗f, c∗g, d∗h]
X. /Y=[ a/e, b/f, c/g, d/h]
X.\Y=[ e/a, f/b,g/c, h/d]
X.^Y=[ a^e, b^f, c^g, d^h]
显然,MATLAB中定义的数组(向量)运算种类比线性代数课程中的要多,尤其要注意其中向量点乘X. ∗Y、向量点除X. /Y和X.\Y以及向量指数运算X.^Y的正确代码和意义。