以下是我的代码,其中h
和Y
是47x1
个向量。
s = h-Y;
sum = sum(s);
我收到此错误:
错误:sum(6057.48):下标必须是整数1到(2 ^ 31)-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!