多くの他のコンピュータ言語とは異なり,Octaveでは,1つ以上の値を返す関数が定義できるようになっています。複数の値を返す関数を定義するための文法は,以下のようなものです。bodyendfunctionここでname,arg-listおよびbodyは,以前のものと同じ意味であり,ret-listは,関数から戻った値を保持することになる変数名をカンマで区切ったリストである。戻り値のリストは,少なくとも1つの要素を持っていなければなりません。ret-listが1つの要素しか含まないならば,このfunctionステートメントの形式は,前の節で解説した形式と等価です。あるベクトルの最大の要素と,その値がそのベクトルに最初に出現するインデックスの,2つの値を返す関数の例を示します。endforendfunctionこの具体例において,2つの値は単一の配列の要素として返されることになります。これが常に可能であったり便利だったりするわけではありません。返される値は,整合性のある次元でないこともあります。個々の返り値に別個の名前を与えることは,しばしば好ましいものです。関数が呼ばれるたびにnarginをセットすることに加え,Octaveは,nargoutを,返されると期待される値の数に初期化します。これは,関数のユーザがリクエストした値の数に依存して,異なる挙動をするような関数を書くことができるようにします。組み込み変数ansへの暗黙的な代入は,出力引数のカウントにおいて,判断されません。ゆえに,nargoutの値はゼロになります。svdとlu関数は,nargoutの値によって異なる挙動をする組み込み関数の例です。ある戻り値のみをセットする関数を書くことが可能です。2;endfunctionについて,以下のように呼び出すとします。2であり,組み込み変数warn_undefined_return_valuesがゼロでないならば,警告が発生します。(fcn_name)ある関数の内部で,呼び出し側が受け取ことを期待する値の数を返す。オプション引数fcn_nameを付けて呼び出すならば,その関数が返すことのできる戻り値の最大数を返す。その関数が不定数の戻り値を返すならば,-1を返す。()この関数fの内部では,nargoutが2となる。トップレベルでは,nargoutは定義されない。warn_undefined_return_valuesもしwarn_undefined_return_valuesがゼロでないならば,ある関数が期待される戻り値のリストにおいて1つでも値が定義されていないときに,警告を表示する。n)もしnがnargin_minからnargin_maxまでの範囲にあるならば,空行列を返す。なければ,nが大きすぎるか小さすぎるかどうかを示すメッセージを返す。この関数は,関数に与えた引数の数が,受け入れられる範囲内にあることを確かめるために便利である。