我在名为conditionals.m的文件中编写了以下函数:
function result = conditionals(category, feature)
result=5;
end
我从Octave的命令行调用此函数:
v=conditionals(3,4)
我收到以下错误:
error : A(I) : Index exceeds matrix dimension.
这里有什么问题?
答案 0 :(得分:4)
错误:
错误:A(I):索引超出矩阵维度。
表示八度音符认为conditionals
是矩阵,而不是函数。
Octave可能不知道conditionals
是一个函数 - 而是将它视为一个矩阵。
您是否检查过该功能是否在Octave的搜索路径中?
答案 1 :(得分:0)
这适合我。
octave> function result = conditionals (category, feature)
> result = 5;
> endfunction
octave> v = conditionals (3, 4)
v = 5
错误表明您有一个与该函数同名的变量。在Octave提示符下键入whos
以查看已定义变量的列表。如果您看到一个名为conditionals
的人,请使用clear conditionals
此外,如果条件是conditionals.m
文件,请确保它在函数搜索路径上。在Octave提示符下运行path
以查看功能搜索路径。在命令提示符下运行which conditionals
以查看函数的位置。
答案 2 :(得分:0)
它也发生在我身上,它可以在任何命令上发生,无论命令名称如何。当我运行PS1(">>");
更改Ovtave中的命令提示符时,我得到了同样的错误。
倍频3.2.3.exe:9个PS1( “>>” 中);
错误:A(I):索引超出矩阵维度。
正如其他人也提到的,当存在具有相同命令名的参数时会触发此错误。当我们错误地输入错误语法的命令时会发生这种情况,因此,八度运行命令并生成一个带有命令名称的变量,该变量会使内部命令过载。
您可以通过who
命令验证此状态。如果您在此处可以看到与命令相同的变量名称,则必须将其删除。使用clear variable_name
删除变量。
这是PS1命令的输出。
希望它有所帮助。