在这节中,咱们将学习如何对数据进行运算操做。接下来,咱们将会使用这些运算操做来实现咱们的学习算法。算法
我如今快速地初始化一些变量。好比设置A为一个3x2的矩阵,B为一个3x2的矩阵,c为一个2x2的矩阵。机器学习
我想算两个矩阵的乘积,好比计算AxC,只需输入A*C,这是一个3x2矩阵乘以2x2矩阵,获得这样一个3x2矩阵。函数
咱们还能够对元素进行运算。当输入A.*B的时候,会将A中的各个元素与B中对应的元素相乘。一般来讲,在Octave中点号通常用来表示元素运算。学习
输入A.^2,这将对矩阵A中的每个元素进行平方。spa
设v为列向量[1; 2; 3],能够输入1./v,获得每个元素的倒数,因此,就会分别获得1/1 1/2 1/3。矩阵也能够这样操做,1./A 获得A中每个元素的倒数。设计
咱们还能够输入log(v),对v中的全部元素进行求对数运算。exp(v)就是以e为底,以v中的元素为指数的幂运算。3d
另外,还能够用abs(v),对v的每个元素求绝对值。可是如今v中全部的元素都是正数。咱们输入abs([ -1 ; 2 ; -3 ]),来求这个矩阵的全部元素的绝对值。blog
若是输入-v就会获得v中全部元素的相反数。这等价于-1 * v,可是通常写成-v就能够了。索引
若是我想取出v,并对v中的每一个元素都加1。其中一个方法是:首先构造一个3行1列的元素所有为1的向量,而后把这个向量跟原来的向量相加。ip
这样作的依据是:length(v)的值为3,ones(length(v) ,1) 就至关于令ones的大小为3x1。而后再让它们相加,即v中每一个元素都加上1。
另外一种更简单的方法是:直接用 v+1,v + 1 也就等于把v中的每个元素都加上1。
若是想求矩阵A的转置,咱们能够输入A'(单左引号)这样咱们就能获得A的转置。若是想求A的转置的转置,输入(A')'那么咱们就会获得原来的矩阵A。
还有一些有用的函数。咱们设a=[1 15 2 0.5],这是一个1行4列矩阵,让咱们设val=max(a),这将返回a中最大的元素,也就是15。还能够设[val, ind] =max(a),这将返回两个值,val是a中最大的元素,ind是a中该元素的索引。即a中最大的元素为第二个元素,值为15。特别注意:若是你用命令max(A),而是一个矩阵的话,这样作就是对每一列求最大值。这个咱们以后再讨论。
若是咱们输入a<3,这称为对应元素比较。这将a中的每个元素逐个与3进行比较的运算,元素小于3的返回1,不然返回0。
若是我输入find(a<3),这将找出a中哪些元素是小于3的,而后返回它们的索引。
若是输入A = magic(3),magic 函数将返回一个名为幻方矩阵(magic squares),它们具备如下这样的数学性质:它们全部的行和列和对角线加起来都等于相同的值。虽然这个函数在机器学习的用处不大,但能够用这个方法很方便地生成一个3x3的矩阵。这些幻方矩阵每行、每列、每一个对角线三个数字加起来都是等于同一个数。这是通过数学构造的结果。
若是咱们输入[r,c] = find(A>=7),就会找出A中大于等于7的元素。r和c分别表示行和列,这就表示,第一行第一列的元素大于等于7,第三行第二列的元素大于等于7,第二行第三列的元素大于等于7。
求和函数:当咱们输入sum(a),咱们就会获得a中全部元素的和。
若是我想要a中全部元素的乘积,咱们就能够输入prod(a)。它将返回这四个元素的乘积。
floor(a) 是向下取整。ceil(a)表示向上取整。
若是输入rand(3),这一般获得一个3×3的随机矩阵。若是输入 max(rand(3),rand(3)),它由两个3×3的随机矩阵中元素较大值的值组成。全部,你会发现这些元素相对而言都比较大。由于它的每一个元素都是取两个随机矩阵的对应元素中最大值的结果。
输入max(A,[],1),这样作会获得每一列的最大值。因此第一列的最大值就是8,第二列是9,第三列的最大值是7,这里的1表示从A矩阵第一个维度去取值。
相对地,若是我键入max(A,[],2),这将获得每一行的最大值,因此,第一行的最大值是等于8,第二行最大值是7,第三行是9。
能够用这个方法来求得每行或每列的最值。另外,要记住,默认状况下max(A)返回的是每一列的最大值,若是你想要找出整个矩阵A的最大值,你能够输入max(max(A)),或者你能够将矩阵A转换成一个向量,而后求最大值,能够输入max(A(:)),这就是把A转换成一个向量,并返回向量中的最大值。
最后,让咱们把A设计为一个9x9的幻方,幻方的特色是每行每列每对角线的求和都是相等的。这是一个9x9的幻方。
输入sum(A,1),计算每一列的总和,这也验证了这个幻方每一列加起来都相等,都为369。输入sum(A,2),计算每一行的总和,这也验证了这个幻方每一行加起来都相等,都为369。
接着,咱们计算对角线的和,确保它们加起来仍是同一个数。如今咱们要构造一个9x9的单位矩阵,输入eye(9),而后咱们要用A于它元素对应相乘。输入A.*eye(9),这样作的结果是这两个矩阵对应元素相乘,除了对角线元素外的其余元素都为0。
而后输入sum(sum(A.*eye(9)),这其实是求A的对角线的元素之和,确实是369。
你也能够求另外一条对角线(从左下角到右上角的对角线)的和。咱们能够输入sum(sum(A.*flipup(eye(9))),其中flipup表示使矩阵垂直翻转。实际上咱们求得另外一条对角线和也是369。
设A=magic(3)。若是你想求A矩阵的逆矩阵,输入pinv(A),一般称为伪逆矩阵,你就把它当作是矩阵A求逆,所以这就是A矩阵的逆矩阵。设 temp = pinv(A),而后再用temp乘以A,获得的就是单位矩阵,对角线为1,其余元素为0。
以上就是对矩阵的元素进行运算的方法。在运行一个学习算法以后,最有用的事情去观察结果,或者说让结果可视化。在下一节中,咱们会学习如何快速将数据可视化。