第四部分 向量和矩阵作函数参数及简单运算
4.1 一维向量作函数参数
- 1、在MATLAB中,可以将整个向量或矩阵作为参数传递给函数;函数将在每个元素上求值。这意味着结果将与输入参数的维度相同。例如,让我们求向量vec中每个元素的绝对值。abs函数将自动返回每个单独元素的绝对值,结果将是一个与输入向量相同长度的向量。
对于一个矩阵,结果矩阵将与输入参数矩阵具有相同的大小。例如,sign函数将找到矩阵中每个元素的符号:
-2、有很多函数是专门用来运算向量或矩阵的列的;这包括函数min, max, sum和prod。例如,假设我们有以下向量变量:
>> vec1 = 1:5;
>> vec2 = [3 5 8 2];
- 函数min将返回向量中的最小值,函数max将返回最大值。
- sum函数将矢量中的所有元素相加。例如,对于vec1,它将返回1+2+3+4+5或15
- 函数prod将返回vector中所有元素的乘积;例如,对于vec2,它将返回358*2或240
- 3、还有一些函数可以返回累积结果;函数cumsum和cumprod分别返回累积和或累积积。累积的,或运行的和,存储到目前为止的每一步的总和,当它添加从向量的元素。例如,对于vec1,它将存储第一个元素1,然后是3(1+2),然后是6(1+2+3),然后是10(1+2+3+4),最后是15(1+2+3+4+5)。其结果是一个与传递给它的输入参数vector相同元素的向量:
- cumprod函数在将向量中的元素相乘时存储累积积;同样的,结果向量和输入向量的长度是一样的:
- 4、同样,还有cummin和cummax函数
4.2 矩阵作函数参数
上面所述均为对一位向量的代入,对于矩阵的而言,所有这些函数都会作用于每一列。如果一个矩阵的维度是rc,将它作为参数代入min、max、sum和prod函数的结果将是一个1c的行向量,因为它们分别返回每个列的最小值、最大值、和或乘积。例如,假设如下矩阵:
-
1、max和sum函数的作用结果:
要为每一行而不是每一列找到一个函数,一种方法是将矩阵转置。
-
2、对于cumsum和cumprod函数,它们同样返回每一列的累积和或积。得到的矩阵将具有与输入矩阵相同的维数:
可以看到,结果矩阵中的第一行与输入矩阵中的第一行相同。在此之后,行中的值将累积。类似地,cummin和cummax函数找到每一列的累积最小值和最大值:
-
3、另一个用于向量和矩阵的有用函数是diff。diff函数返回向量中连续元素之间的差值。例如:
对于长度为n的向量v, diff(v)的长度是n - 1。对于一个矩阵,diff函数将作用于每一列。
4.3 向量和矩阵的简单运算
- 1、数值运算可以在整个向量或矩阵上进行。例如,我们想把向量v的每个元素都乘以3。在MATLAB中,我们可以简单地将v乘以3,然后在赋值语句中将结果存储回v中:
另一个例子是,我们可以把每个元素除以2:
- 2、但是,对于任何基于乘法(即乘法、除法和取幂)的操作,必须在用于数组操作的操作符前面放置一个点。例如,对于求幂运算符,在处理向量和矩阵时必须使用.^运算符。例如,矢量的平方意味着每个元素都要与自身相乘,所以必须这样使用:
- 同样,运算符.*必须用于数组乘法,./或.\用于数组除法。下面的例子演示了数组乘法和数组除法。