错误:下标索引必须是实数正整数或逻辑

时间:2013-05-09 11:13:23

标签: matlab matrix size

我有一个194×1的矩阵。当我试图找到它的大小时,我收到了这样的信息:

  

Subscript indices must either be real positive integers or logicals.

所有价值观都是积极和合乎逻辑的,问题是什么?

3 个答案:

答案 0 :(得分:5)

您是否可能意外覆盖size功能?

>> which size

应该提供此输出

  

内置(C:\ X X X \ toolbox \ matlab \ elmat \ size)

如果你得到像

这样的东西
  

size是一个变量

然后覆盖该功能。

要明确这一点,你必须clear变量

>> clear size

现在您可以使用该功能

>> size( A )

答案 1 :(得分:2)

你能提供你的代码吗?如果你这样做它应该工作:

[rows cols] = size(A);

rows = length(A);

答案 2 :(得分:2)

在MATLAB中,size是一个返回数组维度的函数(矩阵,单元格数组等)。但是,MATLAB也支持overloading。当您调用size(A)(假设A是您的矩阵)时,MATLAB解释器首先检查是否存在名为size的重载变量/函数。

显然,您有一个名为size的变量,根据错误消息判断,因此对于MATLAB size(A)意味着您尝试使用下标变量{{1索引到矩阵size }}。似乎A有一个或多个零元素,并且由于禁止MATLAB中的非正索引,因此会触发上述错误。

最简单的解决方案是为变量A使用其他名称,这样您就可以毫无问题地调用内置函数size