Octave 程式設計教程/向量化
外觀
用向量運算編寫例程比使用內建解釋迴圈效率高出幾個數量級,因為 Octave 可以使用高度最佳化的 FORTRAN 和 C 數值線性代數庫。即使例程或函式沒有用向量化的形式編寫,也可以透過使用 arrayfun 或類似結構來利用向量化。
考慮一個匿名 函式
octave:1> f = @(x) sin(x)*x
Octave 輸出
f = @(x) sin (x)*x
並假設我們想要計算從 1 到 7 的給定整數向量中每個元素的此函式
octave:2> y=1:7
y = 1 2 3 4 5 6 7
然後將 y 作為 f 的引數傳遞會產生錯誤
octave:3> f(y) error: operator *: nonconformant arguments (op1 is 1x7, op2 is 1x7) error: called from: error: at line -1, column -1
這是因為 f 沒有為向量輸入定義。但這並不是問題,因為我們可以這樣做
octave:4> arrayfun(f,y)
輸出是
ans = 0.84147 1.81859 0.42336 -3.02721 -4.79462 -1.67649 4.59891
這比使用迴圈為許多 y 值計算 f 快一個數量級,迴圈有很大的開銷。