matlab - 如何结束 MATLAB/Octave 函数定义?

标签 matlab function syntax scripting octave

在寻找 MATLAB 和 Octave 的代码片段时,我注意到函数以各种方式结束,而且似乎都可以正常工作。具体来说,我说的是驻留在其特定文件中的函数。

MATLAB似乎以 end 结束他们的功能。

function y = average(x)
  y = sum(x)/length(x); 
end

Octaveendfunction 结束其函数。

function retval = avg (v)
  retval = sum (v) / length (v);
endfunction

但是,我的函数在函数末尾没有任何关键字就可以正常工作。

所以我的问题是,MATLAB/Octave 对函数定义的结尾有多严格。

最佳答案

endfunction

  • endfunction 是 Octave 特有的,不是有效的 MATLAB 语法(endfor 等也是如此...)
  • 如果您知道代码只会在 Octave 中运行,那么这种语法可以让您的循环/函数/...更清晰、更快速地匹配。请注意,您的代码与 MATLAB 不兼容。
  • 我相信你也可以在 Octave 中使用 end 来实现兼容性。

使用的严格性end

您可能想阅读 MATLAB documentation for nested functions

  • 当函数是文件中的唯一函数时,您不必使用 end 语句来结束函数。来自文档:

    Typically, functions do not require an end statement.

  • 这是关于 SO 的相关问题:Are multiple functions in one .m file nested or local when "end" isn't used ,相关摘录如下,也来自文档:

    To nest any function in a program file, all functions in that file must use an end statement.

因此,在具有唯一函数的函数文件中,简短的回答是“根本不严格”。但是,使用 end 是一种很好的做法,因此如果您要添加其他本地函数,则可以减少歧义并提供更大的灵 active 。

关于matlab - 如何结束 MATLAB/Octave 函数定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208344/

相关文章:

Python matplotlib 值错误 : The truth value of an array with more than one element is ambiguous

Java 语法 >>, &, ?和 :

haskell - GHC 9 中的 `forall {..}`

matlab - 将C结构转换为Matlab结构

Java JNI,dll的多个版本: How to specify which dll is being used for native calls (matlab jvm)

Matlab 将 NaN 插入数组

multithreading - 多线程(bash)时将输出与函数分开

php - 在 MySQL 中创建半正矢公式

R:找不到作为参数传递的函数

c# - 在 C# 中,myInt++ 和++myInt 有什么区别?