【问题标题】:MATLAB error message "This statement is not inside any function."MATLAB 错误消息“此语句不在任何函数内。”
【发布时间】:2014-12-07 22:41:59
【问题描述】:

我正在尝试定义一个简单的函数,然后调用它:

   function p=MyExp(N);
      p=[ 1 ]; % 0th order polynomial. 
      for k=1:N
         pk=1/(factorial(k));
         p=[pk,1];
      end
   end


   poly3=MyExp(3);
   disp (poly3)

MATLAB 正在返回一条消息: 错误:文件:matlab_labIII_3_I.m 行:10 列:1 该语句不在任何函数内。 (它跟在结束函数定义的 END 之后 “我的经验”。)

这个脚本在 OCTAVE 上运行良好!

谢谢

【问题讨论】:

  • 什么是matlab_labIII_3_I.m,它与MyExp有什么关系?
  • matlab_labIII_3_I.m 是我正在执行的文件名。

标签: matlab function


【解决方案1】:

如果您在 Matlab 脚本中使用函数,您应该将所有代码都包含在函数中,其中可以有多个。类似产品(Octave 和 Scilab)没有此限制。

有一个简单的方法,只需对代码进行最少的更改:将非函数代码包装到一个函数中,然后调用 that。 main 函数应该首先出现在脚本中。

function MyProgram()
   poly3=MyExp(3);
   disp (poly3)
end 

function p=MyExp(N);
      p=[ 1 ]; % 0th order polynomial. 
      for k=1:N
         pk=1/(factorial(k));
         p=[pk,1];
      end
end

此外,当您使用函数时,Matlab 期望您的文件名与要调用的函数名相匹配。因此,该文件应命名为MyProgram.m(或您的主函数的任何名称)。

【讨论】:

  • 所以你是说每个定义的函数都需要存在于自己的脚本中?
  • 不,脚本中可以有两个或多个函数。我说过,只要你有一个函数,一切都必须在某个函数内。
  • 还有,应该说main函数应该是第一个吧。
  • 这很不直观,因为我来自 Python 世界,但我在 MATLAB 中有一个数学作业。这个 MATLAB 约束非常令人失望。我喜欢在脚本开头定义函数,然后在同一个脚本中使用它们(就像我在 python 中所做的那样)。感谢您提供快速且内容丰富的答案。
  • 我也觉得它不直观且令人失望。 :) Matlab 有很长的发展路线,并坚持 80 年代的一些惯例。许多用户将他们的任务拆分为一堆 .m 文件,每个文件包含一个函数...
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 2013-04-28
  • 1970-01-01
  • 2015-07-13
  • 2019-12-24
相关资源
最近更新 更多