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):索引超出矩阵维度。

表示 octave 认为这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

该错误表明您有一个与函数同名的变量。在 Octave 提示符下键入whos以查看已定义变量的列表。如果您看到一个名为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 回答