我有一个194×1的矩阵。当我试图找到它的大小时,我收到了这样的信息:
Subscript indices must either be real positive integers or logicals.
所有价值观都是积极和合乎逻辑的,问题是什么?
答案 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
。