GNU Octave计算数据

GNU Octave计算数据


矩阵的乘法运算

为了便于计算,我们初始化几个矩阵变量,比如设置A为一个3x2的矩阵,设置B为一个3x2的矩阵,设置C为2x2的矩阵。

GNU Octave计算数据

这时要算两个矩阵的乘积,比如说AxC,只需要输入AxC,也就是将一个3x2的矩阵乘以2x2的矩阵,那么就可以得到一个3x2的矩阵。

GNU Octave计算数据


矩阵的点-乘运算

同时你也可以对每个元素做点乘运算,命令是A.*B,得到的结果是A中的每个元素与矩阵B中的对应元素相乘。
我们可以推演一下,这里的第一个元素1乘以11得到11,第二个元素2乘以12得到24,这就是两个矩阵的元素位运算。
通常来说,在Octave中"."(点号)一般用来表示元素位运算。

GNU Octave计算数据


矩阵的点-次方运算

类似地,我们可以输入A.^2,这将对矩阵A中每个元素进行平方

GNU Octave计算数据


矩阵的点-除运算

同样,我们设V为[1;2;3]为一维列向量,那么你可以输入1./V,就可以得到对应的每个元素的导数,这样一来就会分别算出1/1,1/2, 1/3。

GNU Octave计算数据

同样,矩阵也有类似的操作,1./A就可以得到A中每个元素的倒数。
GNU Octave计算数据


矩阵的点-对数运算

进一步推广,我们还可以对矩阵中的每个元素进行求对数运算。

GNU Octave计算数据


矩阵的点-幂次运算

还可以自然对数e进行幂次运算,也就是以e为底,以这些元素为幂的运算。

GNU Octave计算数据


取相反数

同时,可以对V进行求每个元素的相反数

GNU Octave计算数据

求绝对值

此外,还可以使用abs来对列向量V的每个元素求绝对值

GNU Octave计算数据

矩阵同+某个元素

GNU Octave计算数据

另一种更简单的方法是直接用v+1,v+1也就等于把v中的每个元素都加上1.
GNU Octave计算数据


矩阵的转置

对于矩阵A,如果你想要求它的转置,那么方法是用A'进行计算,这将返回对于A的转置矩阵。
特殊地,如果对同一个矩阵A进行转置两次,也就是(A')',那么就会重新得到原矩阵A。

GNU Octave计算数据

求最值

或许我们还需要求一个集合中的最值,比如:a = [1 15 20 0.5],这是1行4列矩阵,val=max(a)将会返回a矩阵中的最大值15。

GNU Octave计算数据

同样,val=min(a)将会返回a矩阵中的最小值0.5.

GNU Octave计算数据

求元素索引

我们还可以通过[val, ind] = max(a),这将使得A矩阵中的最大值存入val,并且将该值对应的索引,元素对应的索引值为2,存入ind,所以ind=2。

GNU Octave计算数据

特别需要注意的是,如果你用命令max(A),而A是一个矩阵的话,这样做就是对每一列求最大值。

GNU Octave计算数据

矩阵元素判断

我们还是用这个例子,若a矩阵a=[1 15 2 0.5],那么那么输入a<3,这将进行逐元素的运算,所以矩阵中元素小于3的返回1,否则返回0。
因此会得到[1 1 0 1]的结果,也就是说,对a矩阵a=[1 15 2 0.5],如果输入a<3,这将进行逐元素的运算,所以元素小于3的返回1,否则返回0。

GNU Octave计算数据

矩阵元素查找

对于矩阵a,如果你写find(a<3),这将输出a中那些小于3的元素索引值(注意:octave中的索引是以1开始的)。

GNU Octave计算数据

更复杂一些的用法是,如果输入[r,c] = find(a>=7),这将找出所有a矩阵中大于等于7的元素,因此,r和c分别表示行和列,这就表示,第1行第1列的元素大于等于7,第3行第2列的元素大于等于7,第2行第3列的元素大于等于7。
GNU Octave计算数据

顺便说一句,其实没有必要去刻意记住这个find函数的用法,只需要会用help函数就行了,每当在使用这个函数忘记怎么用的时候,就可以用help函数,使用help find来找到帮助文档。

魔方阵/幻方

设A=magic(3),magic函数将返回一个矩阵,该矩阵称为魔方阵或幻方(magic squares),它们具有以下这样的数学性质:它们所有的行和列和对角线加起来都等于相同的值。

GNU Octave计算数据

元素求和

除此之外,或许你还需要对矩阵a中的元素进行求和,那么就可以使用sum函数
这时输入sum(a),就可以把a中的所有元素加起来了。

GNU Octave计算数据


元素连乘

如果你想要将矩阵中的元素都乘起来,那么可以输入prod(a),prod函数是意思是product(乘积),他将返回矩阵a中各元素的乘积。

GNU Octave计算数据

元素舍入

我们还可以对元素进行向上向下的四舍五入。
其中floor(a)是向下四舍五入,因此对于a中的元素0.5将被下舍入变成0.

GNU Octave计算数据

另外ceila(a)表示向上四舍五入,所以0.5将上舍入变为最接近的整数,也就是1.

GNU Octave计算数据

一些复杂操作

如果输入max(rand(3), rand(3)),这将返回两个3x3的随机矩阵,并且逐元素比较取最大值。

GNU Octave计算数据

假如输入max(A,[],1),这样做会得到每一列的最大值,这里第一例的最大值就是8,第二列是9,第三列的最大值是7,[]后面的1表示取A矩阵的第一个维度的最大值。

GNU Octave计算数据

相对地,如果键入max(A,[],2),这将得到每一行的最大值,所以第一行的最大值是等于8,第二行最大值是7,第三行是9。
所以你可以用这个方法来求得每一行或每一列的最值,另外,主要注意的是,默认情况下max(A)返回的是每一列的最大值,如果你想要找出整个矩阵A的最大值,你可以输入max(max(A)),或者你可以将A矩阵转成一个向量,然后输入max(max(A)),或者你可以将A矩阵转成一个向量,然后键入max(A(

上一篇:Educational Codeforces Round 122 E. Spanning Tree Queries


下一篇:走廊泼水节—— MST *