1

私はconditionals.mという名前のファイルに次の関数を書きました。

function result = conditionals(category, feature)

result=5;

end

Octaveのコマンドラインからこの関数を呼び出します。

v=conditionals(3,4)

次のエラーが発生します。

error : A(I) : Index exceeds matrix dimension.

ここで何が問題なのですか?

4

3 に答える 3

4

エラー:

エラー:A(I):インデックスが行列の次元を超えています。

オクターブがそれをconditionals関数ではなく行列であると見なしていることを示します。

Octaveはおそらくそれconditionalsが関数であることを知らず、代わりにそれを行列として扱っています。

関数がOctaveの検索パスにあるかどうかを確認しましたか?

于 2013-01-10T18:39:24.343 に答える
0

これは私にとってはうまくいきます。

octave> function result = conditionals (category, feature)
>   result = 5;
> endfunction
octave> v = conditionals (3, 4)
v =  5

このエラーは、関数と同じ名前の変数があることを示しています。whosOctave プロンプトで入力して、定義された変数のリストを表示します。という名前のものが見つかった場合はconditionals、それを削除しますclear conditionals

また、条件がconditionals.mファイルの場合は、関数の検索パス上にあることを確認してください。Octave プロンプトで実行pathして、関数の検索パスを確認します。コマンド プロンプトで実行which conditionalsして、関数の場所を確認します。

于 2013-01-10T18:47:08.453 に答える
0

それは私にも起こりました。コマンド名に関係なく、どのコマンドでも発生する可能性があります。PS1(">>");Ovtave でコマンド プロンプトを変更するために を実行すると、同じエラーが発生しました。

オクターブ-3.2.3.exe:9> PS1(">>");

エラー: A(I): インデックスが行列の次元を超えています。

他の人も言及したように、このエラーは、同じコマンド名のパラメーターがある場合に発生します。誤って間違った構文でコマンドを入力したために、octave がコマンドを実行し、内部コマンドをオーバーロードするコマンド名で変数を生成した場合に発生します。

このステータスは、whoコマンドで確認できます。ここでコマンドと同じ変数名が表示される場合は、それを削除する必要があります。clear variable_name変数を削除するために使用します。

PS1コマンドの出力は次のとおりです。

ここに画像の説明を入力

それが役に立てば幸い。

于 2014-08-01T09:17:23.480 に答える