Octave 计算数据

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

再来看一些其他的运算。

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

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

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

 

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

 

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

 

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

 

这是9阶的单位矩阵:

 

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

 

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

 

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值