下标错误:sum = sum(s)

时间:2017-05-02 17:44:24

标签: octave

以下是我的代码,其中hY47x1个向量。

s = h-Y;
sum = sum(s);

我收到此错误:

  

错误:sum(6057.48):下标必须是整数1到(2 ^ 31)-1或逻辑

有人可以解释一下原因吗?

1 个答案:

答案 0 :(得分:3)

Sardar Usama 的评论中所述,当您还想使用内置函数sum时,不能使用变量名sum

默认情况下,sum是一个函数,按照您的预期在脚本中使用。

在Octave中,您可以掩盖内置函数,例如

sum = 4; % Now there is a workspace variable, sum, with the value 4

执行此操作时,关键字sum现在代表变量,而不是函数。强烈建议不要覆盖默认函数,即使您没有计划在该脚本中使用它们!

要消除阴影,只需清除变量

即可
clear sum % Now it should behave as expected.

您必须在继续之前清除变量的原因是您的工作区。即使在程序退出后,变量sum仍保留在您的工作区中,因此当您再次运行它时(即使您选择了新的变量名称),您仍然已经更改了sum的解释方式。通过清除变量,Octave会将其设置为从工作区中删除时的默认行为。

摘要:使用不同的变量名称。

s = h-Y;
mysum = sum(s); % mysum isn't a built-in, so no clashes here!