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