私はconditionals.mという名前のファイルに次の関数を書きました。
function result = conditionals(category, feature)
result=5;
end
Octaveのコマンドラインからこの関数を呼び出します。
v=conditionals(3,4)
次のエラーが発生します。
error : A(I) : Index exceeds matrix dimension.
ここで何が問題なのですか?
エラー:
エラー:A(I):インデックスが行列の次元を超えています。
オクターブがそれをconditionals
関数ではなく行列であると見なしていることを示します。
Octaveはおそらくそれconditionals
が関数であることを知らず、代わりにそれを行列として扱っています。
関数がOctaveの検索パスにあるかどうかを確認しましたか?
これは私にとってはうまくいきます。
octave> function result = conditionals (category, feature)
> result = 5;
> endfunction
octave> v = conditionals (3, 4)
v = 5
このエラーは、関数と同じ名前の変数があることを示しています。whos
Octave プロンプトで入力して、定義された変数のリストを表示します。という名前のものが見つかった場合はconditionals
、それを削除しますclear conditionals
また、条件がconditionals.m
ファイルの場合は、関数の検索パス上にあることを確認してください。Octave プロンプトで実行path
して、関数の検索パスを確認します。コマンド プロンプトで実行which conditionals
して、関数の場所を確認します。
それは私にも起こりました。コマンド名に関係なく、どのコマンドでも発生する可能性があります。PS1(">>");
Ovtave でコマンド プロンプトを変更するために を実行すると、同じエラーが発生しました。
オクターブ-3.2.3.exe:9> PS1(">>");
エラー: A(I): インデックスが行列の次元を超えています。
他の人も言及したように、このエラーは、同じコマンド名のパラメーターがある場合に発生します。誤って間違った構文でコマンドを入力したために、octave がコマンドを実行し、内部コマンドをオーバーロードするコマンド名で変数を生成した場合に発生します。
このステータスは、who
コマンドで確認できます。ここでコマンドと同じ変数名が表示される場合は、それを削除する必要があります。clear variable_name
変数を削除するために使用します。
PS1コマンドの出力は次のとおりです。
それが役に立てば幸い。