【问题标题】:MATLAB script code and function code in the same file? [duplicate]MATLAB脚本代码和函数代码在同一个文件中? [复制]
【发布时间】:2011-07-20 15:38:47
【问题描述】:

可能重复:
In MATLAB, can I have a script and a function definition in the same file?

我可以将 MATLAB 脚本代码和函数代码放在同一个文件中吗?

%% SAVED IN FILE myfunc.m (otherwise fail)
function [out1] = myfunc( x )
out1 = sqrt( 1 + (cos(x))^2 );
end

%%
%OTHER CRAP
y = 1:10
% use myfunc

它似乎不起作用,即使那里有 end 关键字。是否允许这种类型的事情,还是我总是需要在其自己正确命名的文件中包含每个函数?

我确信几年前我在同一个文件中看到了使用这些函数的函数和代码。

【问题讨论】:

  • 它不是重复的,这个问题提出了不同的问题,实际上比我在这里问的要模糊得多。
  • 虽然另一个问题的编写/格式不是很好,但两个问题都问同样的问题:是否可以将脚本和函数定义组合在同一个文件中。
  • 是的,如此接近以至于一个不是这个

标签: matlab syntax


【解决方案1】:

如果m-code里面有函数,那么所有的代码都必须用函数封装。 入口函数的名称应与文件名匹配。如果您考虑一下,这是有道理的,因为它有利于代码重用。

你可以试试这个:

文件名:myScript.m

function [] = myScript()
 y = 1:10;
 out1 = myfunc(y);
end

function [out1] = myfunc( x )
 out1 = sqrt( 1 + (cos(x))^2 );
end

然后你可以按 F5,或者在 matlab 命令提示符下输入 myScript

【讨论】:

  • 入口函数应该匹配文件名,但语言不强制它。如果不同,Matlab 将使用文件名作为函数的名称,忽略“函数”行。这是 mlint 中的警告。
  • 谢谢,我把 must 换成了 should。
【解决方案2】:

rossb83's answer 是正确的,只是为了扩展它,你应该知道functions can have subfunctions

函数总和 = 函数 myMath(a, b) foo = a + b; bar = mySubFunc(foo); 结尾 功能栏 = mySubFunc(foo) 酒吧 = foo^2; 结尾

【讨论】:

  • 存储在myMath.m。所以你说除了“主要”功能之外的任何其他功能都被认为是子功能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2017-10-14
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 2014-06-09
  • 1970-01-01
相关资源
最近更新 更多