Octave 计算数据

首先,先快速初始化几个变量。设A为1个 3 x 2的矩阵,设B为1个3 x 2的矩阵,并设C为1个2 x 2的矩阵。

Octave 计算数据_第1张图片

 

现在来计算两个矩阵的乘积,比如计算A X C,只需要键入A*C,那么1个3 x 2的矩阵与1个2 x 2的矩阵,得到的就是一个3 x 2的矩阵。

Octave 计算数据_第2张图片

 

你也可以对元素进行运算。输入A .* B,这样的话,会将A中的各个元素与B中对应的元素相乘。通常,这个点号,一般用于表示元素的运算。

Octave 计算数据_第3张图片

如果输入A .^ 2,就会对A中的每个元素进行乘方。

Octave 计算数据_第4张图片

 

现在设v是一个列向量,可以输入1 ./ v ,来求得v的每个元素的倒数。

Octave 计算数据_第5张图片

 

同样也可以对矩阵使用,输入 1 ./ A ,会得到A中所有元素的倒数。

Octave 计算数据_第6张图片

 

同样的这里的点号代表进行的是元素的运算。

 

还可以用log(v),对v的所有元素进行求对数运算。

Octave 计算数据_第7张图片

 

而exp(v),就是以e为底,v中的元素作为幂指数的幂运算。

Octave 计算数据_第8张图片

 

另外,还可以用abs(v),来求得v中所有元素的绝对值。

Octave 计算数据_第9张图片

 

如果输入-v,会得到v中所有元素的相反数,这等价于-1乘以v,但是一般写成-v就可以了。

Octave 计算数据_第10张图片

 

这里有个小技巧,如果想取出v,并对v中的每个元素都加1,其中一个方法就是构造一个3 x 1的元素全部为1的向量,然后将这个向量与v相加,这样做的话,会使v从[1;2;3]增加到[2;3;4]。

Octave 计算数据_第11张图片

这样做是因为,length(v)的值为3,所以ones(length(v),1)相当于令ones的大小为3 x 1,然后让v和ones相加,于是v中的各个元素都加上了ones中的对应元素,也就是都加上了1。

 

令一种更简单的方法是,直接输入v+1,同样也能对v中的每个元素对应都加1。

Octave 计算数据_第12张图片

 

再来看一些其他的运算。

如果想求一个矩阵的转置矩阵,可以键入 A'  

Octave 计算数据_第13张图片

 

如果要求A的转置的转置,那么很明显,也就会得到A本身。

Octave 计算数据_第14张图片

 

还有一些有用的函数。先建立一个1行4列的矩阵a,设val = max(a),这样将返回a中最大的元素:

Octave 计算数据_第15张图片

 

还可以设 [ val, ind] = max(a)   这将返回两个值,val是a中的最大元素,ind是a中该元素的索引。即a中的第2个元素为最大元素,该元素为15。

Octave 计算数据_第16张图片

 

但是如果A是一个矩阵,那么输入max(A)就要特别注意。这样做的话实际上会得到每一列的最大值。这一点稍后再来深入讨论。

Octave 计算数据_第17张图片

 

先来看这个例子。设a = [1 15 2 0.5],然后输入a < 3  ,这实际上称为对应元素比较,它将会将a中的每个元素逐个与3进行比较,如果<3,对应位置返回1(表示真),否则返回0(表示假)。

Octave 计算数据_第18张图片

 

现在如果输入find(a < 3),这将找出a中所有小于3的元素,并返回它们的索引。

Octave 计算数据_第19张图片

 

我们又来看下一个例子,如果设A = magic(3),magic函数会返回什么呢?

Octave 计算数据_第20张图片

 

我们可以通过输入 help magic 查询一下。magic函数会返回名为幻方的矩阵。幻方具有一种特殊的数学性质。它的任意行、列、对角线中的元素加起来都等于相同的值,虽然这个函数在机器学习里用处不大,但是可以很便捷地生成一个矩阵。

 

如果输入[r c] = find(A >= 7)   就会找出A中大于等于7的元素,r和c分别表示这些大于等于7的元素所在的行索引和列索引。

Octave 计算数据_第21张图片

例如第1行第1列的元素大于等于7,第3行第2列的元素大于等于7,第2行第3列的元素大于等于7。

 

下面将一个求和函数,有一个矩阵a,输入sum(a)   就会得到a中所有元素的和。如果想求a中所有元素的乘积,输入prod(a),prod也就是product 乘积这个单词的缩写。

Octave 计算数据_第22张图片

 

floor(a)可以对a中所有的元素向下取整(floor这个单词有地板的意思,所以可以记忆为向地板方向取整,也就是向下取整)。

Octave 计算数据_第23张图片

 

而ceil(a)会对a中的所有元素向上取整(ceil有天花板的意思,所以可以及一位向天花板方向取整,也就是向上取整)。

Octave 计算数据_第24张图片

 

如果输入rand(3),会得到一个3  x 3的随机矩阵:

Octave 计算数据_第25张图片

 

而如果输入max(rand(3),rand(3))会返回这样一个矩阵,它由两个3 x 3的随机矩阵对应位置进行逐个比较,每个位置取较大的元素组成。

Octave 计算数据_第26张图片

 

现在有一个矩阵A,如果输入max(A,[],1)  这样会得到每一列的最大值。这里的1表示从A的第一维度去取值。

Octave 计算数据_第27张图片

 

对应地,如果输入max(A,[],2)  就能得到每一行的最大值。

Octave 计算数据_第28张图片

 

通过这种方法就能求得每行或每列的最值。另外需要记住max(A)默认是求每列的最大值。而如果只想求整个矩阵A的最大值,可以输入max(max(A))

Octave 计算数据_第29张图片

或者也可以先将A变成一个向量。也就是可以输入max(A(:)),相当于把A当做一个向量,然后求这个向量的最大元素。

Octave 计算数据_第30张图片

 

最后,让我们把A设为一个9x9的幻方。幻方的特性是幻方的每列、每行加起来都是一样的,包括对角线。

Octave 计算数据_第31张图片

现在如果输入sum(A,1)  就可以求得每一列的和,输入sum(A,2)  就可以得到A中每一行的和。

Octave 计算数据_第32张图片

可以看到它的各行各列加起来都是369,这也验证了幻方的性质。

 

现在来计算A的对角线元素,以确保它们加起来也等于369。那么需要先构造一个9阶的单位矩阵。让这个单位矩阵与A中的每个元素对应相乘,也就是点乘。这样做的结果是,除了对角线以外,其余元素都会乘0而得到0。

Octave 计算数据_第33张图片

 

那么再输入sum(sum(A .* eye(9)))  就能得到A中对角线元素的和。

 

也可以求另一条对角线的和,输入sum(sum(A .* flipud(eye(9))))  flipud表示使矩阵垂直翻转。

 

这是9阶的单位矩阵:

Octave 计算数据_第34张图片

 

纵向翻转这个单位矩阵后得到的矩阵是:

Octave 计算数据_第35张图片

 

最后再说一个命令,假设A还是一个3阶的幻方,要求A的逆矩阵,键入piv(A)

Octave 计算数据_第36张图片

 

这通常被称作伪逆矩阵,但这并不要紧,你可以把它看做是对A求逆,因此这就是A的逆矩阵。

我们设temp = pinv(A),再用temp*A,得到的就是单位矩阵。

Octave 计算数据_第37张图片

 

你可能感兴趣的:(Octave)