在這節中,咱們將學習如何對數據進行運算操做。接下來,咱們將會使用這些運算操做來實現咱們的學習算法。算法
我如今快速地初始化一些變量。好比設置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。
以上就是對矩陣的元素進行運算的方法。在運行一個學習算法以後,最有用的事情去觀察結果,或者說讓結果可視化。在下一節中,咱們會學習如何快速將數據可視化。