在Matlab函数中使用工作空间变量

时间:2014-04-08 05:54:44

标签: matlab function workspace

我想在Matlab函数中使用加载到我的工作区的数据。这是我的功能的开始。

function [totalProfit] = compute(p,exit)

%% Declaration of variables

entry=0;
T = length(data);
.
.
.
end

我收到错误:

  

未定义的功能或变量'数据'。

错误在哪里?

3 个答案:

答案 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,你想要传递给它中的函数的变量,所以你只需要一个额外的输入参数,但你仍然需要小心。