Vik*_*tor 78 matlab file function
假设我有一个函数f(),我想使用它my_file.m,这是一个脚本.
my_file.m?f.m.我怎么称呼它my_file.m?我阅读了在线文档,但目前尚不清楚最佳方法是什么.
gno*_*ice 48
从版本R2016b开始,您可以在脚本中使用本地函数,如下所示:
data = 1:10; % A vector of data
squaredData = f(data); % Invoke the local function
function y = f(x)
y = x.^2;
end
Run Code Online (Sandbox Code Playgroud)
在发布R2016b之前,可以在MATLAB脚本中定义的唯一函数类型是匿名函数.例如:
data = 1:10; % A vector of data
f = @(x) x.^2; % An anonymous function
squaredData = f(data); % Invoke the anonymous function
Run Code Online (Sandbox Code Playgroud)
请注意,匿名函数更适合于简单操作,因为它们必须在单个表达式中定义.对于更复杂的函数,您必须在它们自己的文件中定义它们,将它们放在MATLAB路径上的某个位置以使它们可以被脚本访问,然后像使用任何其他函数一样从脚本中调用它们.
Joh*_*ohn 37
我解决这个限制的方法是将我的脚本变成不带参数的函数(如果我需要来自全局命名空间的变量,我要么在函数中显式传递它们,要么使用"evalin"来获取它们.)
然后,您可以在"脚本"中定义所需的所有其他功能.这是一个黑客,但我发现它在我需要几个非平凡功能的情况下非常强大.
编辑:这是一个简单的例子.所有这些都可以驻留在一个文件中.
function [] = myScriptAsAFunction()
img = randn(200);
img = smooth(img);
figure(1);
imagesc(img);
axis image;
colorbar;
end
function simg = smooth(img)
simg = img / 5;
end
Run Code Online (Sandbox Code Playgroud)
One*_*ros 19
你可以做这样的事情(假设你的文件被命名my_file.m):
function my_file
%script here
end
function out = f(in)
%function here
end
Run Code Online (Sandbox Code Playgroud)
如果单击运行按钮,该功能my_file将默认执行.
从R2016b开始,您可以在脚本中定义局部函数。
x = 1;
y = add1(x);
function z = add1(x)
z = x + 1;
end
Run Code Online (Sandbox Code Playgroud)