-2

我有一个 194×1 矩阵。当我尝试找到它的大小时,我收到以下消息:

Subscript indices must either be real positive integers or logicals.

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

4

3 回答 3

5

您是否可能不小心覆盖了该size功能?

>> which size

应该给出这个输出

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

如果你得到类似的东西

大小是一个变量

然后你重写这个函数。

要修改这一点,您必须clear使用变量

>> clear size

现在您可以使用该功能

>> size( A )
于 2013-05-09T11:20:51.947 回答
2

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

[rows cols] = size(A);

或者

rows = length(A);
于 2013-05-09T11:18:20.053 回答
2

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

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

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

于 2013-05-09T11:20:59.823 回答