八度:指数超出矩阵维度

时间:2013-01-10 18:37:04

标签: matlab octave

我在名为conditionals.m的文件中编写了以下函数:

function result = conditionals(category, feature)

result=5;

end

我从Octave的命令行调用此函数:

v=conditionals(3,4)

我收到以下错误:

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

这里有什么问题?

3 个答案:

答案 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命令的输出。

enter image description here

希望它有所帮助。