我想在Matlab函数中使用加载到我的工作区的数据。这是我的功能的开始。
function [totalProfit] = compute(p,exit)
%% Declaration of variables
entry=0;
T = length(data);
.
.
.
end
我收到错误:
未定义的功能或变量'数据'。
错误在哪里?
答案 0 :(得分:2)
可变数据可能是在函数之外定义的,因此它超出了范围。
将data
作为参数传递给compute
,然后它就可以在函数内使用。
答案 1 :(得分:2)
您可以使用evalin处理来自其他工作区的变量。在您的示例中,这可能是
T = evalin('caller','length(data)')
但请注意,在大多数情况下,如果将变量定义为function的输入参数,则会获得更清晰的代码。所以对于你的情况,这将是
function [totalProfit] = compute(p,exit,data)
T = length(data) ;
end
答案 2 :(得分:0)
Ran是正确的,但我想提一下其他的东西。通常,只有作为参数传递给函数的变量才能在该函数中使用,因此如果要在函数内部使用现有变量,请将它们作为输入参数传递。
可以创建全局变量,允许您在函数内部使用它们而不将它们作为参数传递,但它通常不是编写代码的最佳方式。我使用全局变量的时间是我从单个脚本调用多个函数的地方,我有一些常量将被所有函数使用(例如,引力是常见的)。全局变量的替代方法是使用一个struct,你想要传递给它中的函数的变量,所以你只需要一个额外的输入参数,但你仍然需要小心。