[已解决] Subscript indices must either be real positive integers or logicals.什么原因

[复制链接]
liuzhengkun98 发表于 2015-6-22 18:53:41
对于下面的程序红色部分出现这个错误是什么原因?
Subscript indices must either be real positive integers or logicals.
Error in xiangguanxishu (line 130)
fenzi2 = length(X)*sum(X .* Y1) - (sum(X) * sum(Y1));



Y1=imf(1,:);
X=x;
if length(X) ~= length(Y1)  
    error('两个数值数列的维数不相等');  
    return;  
end  
fenzi2 = length(X)*sum(X * Y1) - (sum(X) * sum(Y1));  
fenmu2 = sqrt((length(X)*sum(X .^2) - sum(X)^2) * (length(X)*sum(Y1 .^2) - sum(Y1)^2));  
coeff1 = fenzi2 / fenmu2;

最佳答案


stellari 发表于 2015-6-28 10:50:23
liuzhengkun98 发表于 2015-6-23 11:10
sum\length是MATLAB自带的函数,不需要定义啊,所以我觉得不是那里的原因。

你没懂我的意思。sum和length确实是自带函数,但是你自己定义了一个叫sum或length的变量(注意,你定义的是变量,不是函数)。这样MATLAB遇到sum或length时,就把它们当成你定义的变量,而不是函数。这也就是为什么你clear all以后问题会得到解决的原因。

5 条回复


stellari 发表于 2015-6-22 21:36:21
你肯定是在哪里自己定义了一个叫sum或length的数组。找出来,改名即可。

liuzhengkun98 发表于 2015-6-23 11:08:49
stellari 发表于 2015-6-22 21:36
你肯定是在哪里自己定义了一个叫sum或length的数组。找出来,改名即可。

已经解决了,就是重新建了一个M文件,在开头用clear all消除变量后就可以了。

liuzhengkun98 发表于 2015-6-23 11:10:34
stellari 发表于 2015-6-22 21:36
你肯定是在哪里自己定义了一个叫sum或length的数组。找出来,改名即可。

sum\length是MATLAB自带的函数,不需要定义啊,所以我觉得不是那里的原因。

stellari 发表于 2015-6-28 10:50:23
liuzhengkun98 发表于 2015-6-23 11:10
sum\length是MATLAB自带的函数,不需要定义啊,所以我觉得不是那里的原因。

你没懂我的意思。sum和length确实是自带函数,但是你自己定义了一个叫sum或length的变量(注意,你定义的是变量,不是函数)。这样MATLAB遇到sum或length时,就把它们当成你定义的变量,而不是函数。这也就是为什么你clear all以后问题会得到解决的原因。
回复此楼

liuzhengkun98 发表于 2015-6-29 10:31:29
stellari 发表于 2015-6-28 10:50
你没懂我的意思。sum和length确实是自带函数,但是你自己定义了一个叫sum或length的变量(注意,你定义的 ...

哦,这样啊,感谢你给我把错误本质告诉我,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表