Machine Learning學習日記 — Coursera篇 (Week 2.4):Octave tutorial
Octave tutorial
Why using Octave/MATLAB? to implement faster.
安裝指南:Environment Setup Instructions
Octave doc:4.01 version & 4.00 version
本篇文章記載Octave中各個基本指令的使用,類似備忘錄的功能
(除了6. Vectorization外可以直接跳過這一章,需要再回來查即可)
綱要
- Basic operation
- Moving Data Around
- Computing on Data
- Plotting Data
- Control statement: for, while, if statement
- Vectorization
1. Basic operation
基本運算
四則運算、指定數字、判斷式
% [任意文字]
後面為註解
PS1("指標符號")
改變原本的指標符號
pi
為圓週率的常數
disp(數字、變數)
若不使用,Octave會將運算結果指定給ans變數,並顯示出來
sprintf("要打的文字、變數",參數)
類似C的printf
format long
將顯示格式改為long(能顯示更多位數)
format short
將顯示格式改為short(能顯示更多位數,但較long少一些)
矩陣創建
數列呈現
格式為 — 初始值:等差:最終值
rand
可隨機產生變數、矩陣(列,行)、矩陣(指定列跟行為相同的維度)
randn
與rand功能類似,差別為產生的可能會有"負數"
ones
可產生1的變數、全為1的矩陣(列,行)、全為1的矩陣(指定列跟行為相同的維度)
zeros
可產生0的變數、全為0的矩陣(列,行)、全為0的矩陣(指定列跟行為相同的維度)
sqrt
對單一變數開根號、對矩陣開根號
hist
產生長條圖
eye
可產生1的變數、對角線為1的矩陣(列,行)、全為0的矩陣(指定列跟行為相同的維度)
help + [instruction]
EX : help eye 即可查詢 eye指令的用法及作用
2. Moving Data Around
size:矩陣大小
除了顯示行列外,也可抓除單獨的 “行數”、“列數”
length:最大的維度(行數,列數取其大)
通常使用在vector(單行的矩陣)
pwd:顯示目前所在路徑
cd:更動目前目錄
前往其他目錄(ex: C槽、任意地點)
ls:顯示當前目錄下的檔案
load:載入資料
who:顯示目前載入的資料
whos:顯示目前載入檔案的“詳細”資料
擷取部分行列區間
save:儲存資料
clear:清除暫存區的資料
取出某一行/列的所有資料
[a b]代表取出a及b行(或列)
取代/指定部分矩陣
新增部分矩陣
將所有行列的元素取出,使其變為一個n*1的vector
3. Computing on Data
矩陣相乘
矩陣點對點相乘/除
log
可對單一變數取log、矩陣取log
exp
可對單一變數取exp、矩陣取exp(以e為底,將變數作為冪次的項次做運算)
abs
可對單一變數取絕對值、矩陣取絕對值
取負
可對單一變數取負數、矩陣取負數
轉置矩陣
行列交換
max:返回最大值及其所在位置
[最大值,所在位置]
兩個矩陣的各個元素最大值
每一列的最大值
每一行的最大值
所有元素的最大值
判斷式
magic(n)
產生一個任一行列相加都為相同的n*n矩陣
[r,c] = find(判斷式)
將符合條件式的元素位置(r,c)返回
sum
prod
數字的乘積
floor:無條件捨去小數位
ceil:無條件進位小數位
flipud
將矩陣翻轉(由最後一列取代第一列、倒數第二列取代第二列...)
pinv()
取得inverse矩陣
4. Plotting Data
創建一個Sin函數 y1,並繪出圖表
創建一個Cos函數 y2,保留原本y1的圖表,並繪出圖表(‘r’:以紅線表示)
x軸命名為’time’,y軸命名為’value’,顯示兩種線的名稱,標題命名為’My Plot’
將目錄切換至桌面,並以jpg的格式輸出圖表'myPlot.jpg'
關閉圖表
以y1繪出的圖表取名為figure(1),以y2繪出的圖表取名為figure(2)
繪出一個1*2的欄位,並進入第一欄(之後繪圖會在第一欄出現,而不是另開一個視窗)
將以y1繪出的圖表繪製到第一欄
進入第二欄(之後繪圖會在第二欄出現,而不是另開一個視窗)
將以y2繪出的圖表繪製到第二欄
設定所有圖表的座標軸,X軸由0.5至1,y軸由-1到1
清除此2*1的欄位中的所有圖表
先以magic函數產生5*5的矩陣,並按照矩陣中的數字大小顯示圖塊
產生右方的色塊與數字的對應區塊
將圖塊改為灰階
若要連續上述執行指令:用 , 區隔各個指令
5. Control statement: for, while, if statement
for迴圈
while迴圈
if else判斷句
函式
Return value a= function X(parameter i, parameter j, ...)
[Return value a, Return value b]= function X(parameter i, parameter j, …)
6. Vectorization
向量化最常的應用就是將原本需要迴圈進行的求和,利用矩陣相乘的特性來一步達成
在舉例中因為 θ 跟 x皆為 3*1的vector,若要達到矩陣相乘的格式,所以將θ反轉成一個1*3的矩陣,而得以求出相乘的總和
用程式實作的比較表