1. 程式人生 > >Octave 控制語句,定義和使用函式

Octave 控制語句,定義和使用函式

目錄

Octave 控制語句,定義和使用函式

for

while

break

if-else

定義和呼叫函式

一個更復雜的例子


Octave 控制語句,定義和使用函式

for

首先初始化一個10行1列的列向量v:

for迴圈語句

v輸出結果為:

即,把從1到10的2^i存放到列向量v中。

或者,先初始化一個序列indices(英文,索引):

while

break

(以v為10*1的零向量為例)

或者可以讓語句結構看起來更清晰些,新增一些空格:

(e...好像tab鍵不能用?...)

if-else

最後一行為輸出結果

 

定義和呼叫函式

在Octave環境下定義函式,需要建立一個檔案,用函式名來命名,以 ' .m ' 的字尾結尾。

當Octave發現這個檔案,它知道應該在什麼位置查詢該函式的定義。

如,建立一個 ‘squareThisNumber.m’ 檔案

開啟這個檔案,寫入函式定義

第一行告訴Octave,我希望這個函式返回一個值,將它存放在變數y中;並且,還告訴Octave,這個函式有一個自變數x。

在這個檔案中,函式定義的主體就是第二行

(目前使用的是notepad++,其他記事本、寫字板也可以,寫字板更好)

呼叫該函式

首先要把Octave的路徑換成函式定義檔案所在的路徑,否則Octave會認為函式沒有被定義。

新增Octave查詢路徑

即可以使在新增路徑(如桌面)到Octave的查詢路徑之後,就算不在該目錄下,也能找到該目錄下的檔案(如C盤)

Octave還可以定義有多個返回值的函式

 

一個更復雜的例子

現在要定義一個Octave函式來計算對於不同theta取值的代價函式J。假設有如下資料集。

 

X(設計矩陣)的第一列代表x_0,第二列為訓練集的樣本

y代表每個訓練資料對應的輸出,即y軸座標

代價函式 ' costFunctionJ.m '的函式定義為:

theta為theta_0、theta_1等組成的向量。下圖為不同theta向量取值時,代價函式 j 的值:

(因為正確的迴歸的theta的取值正好為[0;1],因此當theta=[0;1]時,代價函式 j 值為0)