Octave 控制語句,定義和使用函式
目錄
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)