
1.2.5 MATLAB的向量
在数学中,向量指的是具有大小和方向的量,可以形象化地表示为一个带有箭头的线段,箭头的方向表示的是向量的方向,而线段的长度就代表向量的大小。向量的概念在线性代数中经过抽象化之后,得到了更为一般的诠释。在学习向量的同时往往会学习到矩阵。矩阵指的是一个按照长方形阵列排列的复数或者实数的集合,最早是由方程组的系数及常数所构成的方阵。在数学的运算中常常见到矩阵,如应用数学学科中的统计分析、物理学中的力学、计算机科学中的动画制作等。在其他学科的学习中,可以将一些数据按照某种方式记录下来,记为一个向量,通过不同的向量相互组合,可以得到一个矩阵,对矩阵进行各种运算得到数据的处理结果。
作为一个高效的数值计算器,MATLAB也支持向量的运算。同时,MATLAB包含矩阵运算的内置函数,因此可以完成科研工作中的所有对于矩阵的操作。在科研过程中所用到的公式都可以在MATLAB中编写出来,因此只要在MATLAB中确定输入的数据和运算规律,运行MATLAB代码即可得到结果。
向量通常有两种形式,分别称为行向量和列向量。行向量表示的是一个1×n阶的矩阵,所包含的元素组成一行。列向量则与行向量相反,表示的是一个n×1阶的矩阵,所包含的元素排成一列。
在MATLAB中可以将一系列的元素通过空格隔开,并将所有的元素用方括号封闭起来表示一个向量,这些元素的个数称为向量的长度,例如:

通过输入向量的元素以及对应的赋值向量的操作得到一个向量长度为3的行向量。在这个赋值的过程中,空格十分重要,如果不严格按照空格的规则去赋值向量,将得到一个错误的向量,影响向量长度以及每个元素的准确值,并在运算的过程中会得到错误的结果。
在MATLAB中还能对向量进行特定的数学运算。例如:

对通过赋值得到两个向量v2和v3进行数学运算,例如,对v和v3进行加的操作:

还可以对v向量进行数乘的运算:

MATLAB可以将对向量的加运算和数乘运算结合起来完成更为复杂的计算,并得到正确的结果。

因此在科研及数学计算时,可以根据推导的公式或者实验数据处理的方法在MATLAB中编写相对应的MATLAB代码,并输入在实验中所获得的数据,运行该MATLAB代码即可得到结果。
但是当对向量长度不同的向量进行运算时,MATLAB将会报错,例如:

MATLAB报错,说明对应的向量长度不同。在MATLAB中,长度不同的向量不能进行加、减运算,因此在输入数据时需要统一向量的长度,以免处理过程中报错。
在MATLAB中,还可以使用冒号的方式输入行向量,这样可以简单快捷地得到所需要的行向量,常常用于定义函数的横坐标向量,例如:


但是当输入“>> 1:-1”这样一个命令时,得到的是一个空向量,也就是没有完成对向量的赋值。一般地,如果输入的MATLAB代码为“a:b:c”,MATLAB将会自动生成一个初始元素为a,增量为b,直到最后一个元素最接近c为止的向量,例如:

而当输入“a:b”时,MATLAB将会自动生成一个初始元素是a,增量为1,最终的元素为b的向量。当输入“1:-1”时,MATLAB并不能生成一个以1为增量,从1增加到-1的向量,因此得到的是一个空向量。
得到向量之后,在进行数据处理时,往往有一些数据是不需要的,或者不在考虑范围之内,这时就要对向量进行截取,根据要求,选择出对应的元素组成一个新的向量,接着对新向量进行数学运算得到最终的计算结果。例如,首先使用冒号来生成一个向量:

如果想得到r5向量中的第三个元素,可以直接输入“r5(3)”来获取第三个元素的取值:

如果想获取这个向量中的一系列元素,需要首先找到对应的元素位置的关系。例如,当想获取第三个到第六个元素时,可以同样使用冒号的方式来实现:

这样就可以实现获取不同位置处的向量元素。当需要每隔一个元素来选取元素组成新的向量时,可以类比冒号生成向量时的法则:

即可实现对向量从第一个元素开始,每隔一个元素之后将满足条件的元素单独选取出来组成新的向量。当需要对元素从后往前取出,即将元素的位数从高往低选取时,可以令冒号中间的数为负数,取到最后一个满足条件的元素停止:

向量还可以表示成列向量的形式。顾名思义,列向量中的所有元素按照从上到下的顺序排成一列。对于两个由相同元素按照相同顺序排列而成的行向量和列向量,两者是互为转置关系的,在MATLAB中可以使用符号“’”来对一个向量进行转置操作。例如,在MATLAB中定义w和c分别为一个行向量和列向量,对其进行转置操作:


可以看到转置的操作可以完成行向量和列向量的相互转化。与行向量相类似,列向量与列向量之间也可以完成数乘、加、减的运算,而其要求仍然是列向量的长度要相等,例如:

对于由实数组成的向量,单纯地使用符号“’”完成转置并不会影响向量内部的元素,但是如果一个向量由复数组成,单纯使用“’”进行转置的话得到的是复向量的共轭转置,例如:

对每一个元素完成转置时,同时对复数的元素进行了共轭的运算,如果是为了单纯获得具有复数元素向量的转置,不对其进行共轭的操作,需要使用符号“.’”进行转置操作,例如:

此时,只对各个元素进行了转置的操作,而复数元素并未转化成对应的共轭复数。