gpt4 book ai didi

matlab - 如何在不创建许多文件的情况下将我的 Matlab 代码分解为函数?

转载 作者:太空宇宙 更新时间:2023-11-03 20:12:02 24 4
gpt4 key购买 nike

我尝试在 Matlab .m 文件中编写一个函数:

function returnValue = someFunction(x, y)
returnValue = x * y + 3
end

但是,Matlab 注意到不允许我在脚本中间简单地声明一个函数。我尝试将函数移至文件顶部,但 Matlab 强制我将函数重命名为文件名。

我很快意识到 Matlab 函数必须与其文件名匹配。如何在单个文件中模块化我的 Matlab 代码?有没有一种方法可以在我的脚本中间定义一个函数?

最佳答案

匿名函数

对于非常小的函数,例如您示例中的函数,您可以像这样简单地定义一个匿名函数:f = @(x, y) x * y + 3。您甚至可以在工作区的提示符或任何脚本文件中定义此类函数。

嵌套函数

如果将 MATLAB 脚本转换为函数,它将允许您定义嵌套函数:

function a = my_script(x)
y = 3;
function r = some_function(b)
r = b * y + 3;
end
a = some_function(x)
end

注意嵌套函数可以看到y的值。这可能很方便,例如,当您优化 ODE 的参数并且您使用的求解器不提供修改参数值的方法时。

子函数

您还可以在一个文件中定义一个具有多个局部子函数的函数。子功能定义在“公共(public)”功能之下。在您的示例中,some_function 可以是 my_script.m 中的子函数。

function a = my_script(x)
y = 3;
p = 42;
a = some_function(x, y) + p;
end

function r = some_function(x, y)
r = x * y + 3;
end

end 关键字在这里是可选的。与嵌套函数相比,子函数更有助于封装算法的各个部分,因为 some_function 不会看到 p 的值。

关于matlab - 如何在不创建许多文件的情况下将我的 Matlab 代码分解为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18796978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com