Machine Learning學習日記 — Coursera篇 (Week 2.4):Octave tutorial

Pandora123
11 min readMay 19, 2016

--

Octave tutorial

Why using Octave/MATLAB? to implement faster.

安裝指南:Environment Setup Instructions

Octave doc:4.01 version & 4.00 version

本篇文章記載Octave中各個基本指令的使用,類似備忘錄的功能

(除了6. Vectorization外可以直接跳過這一章,需要再回來查即可)

綱要

  1. Basic operation
  2. Moving Data Around
  3. Computing on Data
  4. Plotting Data
  5. Control statement: for, while, if statement
  6. 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的矩陣,而得以求出相乘的總和

用程式實作的比較表

Unvectorized:尚未被向量化的/vectorize:已向量化的

--

--