繁体   English   中英

在Matlab函数中使用工作区变量

[英]Use workspace variables in a Matlab function

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

function [totalProfit] = compute(p,exit)

%% Declaration of variables

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

我收到一个错误:

未定义的函数或变量“数据”。

错误在哪里?

变量数据可能是在函数外部定义的,因此超出了范围。

data作为参数传递进行compute ,然后在函数内部可用。

您可以使用evalin处理来自另一个工作空间的变量。 在您的示例中,这可能是

T = evalin('caller','length(data)')

但是请注意,在大多数情况下,如果将变量定义为函数的输入参数,则会得到更简洁的代码。 所以对于你的情况,这将是

function [totalProfit] = compute(p,exit,data)    
   T = length(data) ;
end

冉是正确的,但我想提一提。 通常,只能在函数内部使用作为参数传递给函数的变量,因此,如果要在函数内部使用现有变量,请将其作为输入参数传递。

可以创建全局变量,使您可以在函数内部使用它们而无需将它们作为参数传递,但这通常不是编写代码的最佳方法。 我使用全局变量的时候就是我从一个脚本中调用多个函数,并且我有一些常数将被所有函数使用(例如,重力是一个常见的常数)。 全局变量的另一种选择是使用结构,将要传递给函数的变量包含在其中,因此您只需要一个额外的输入参数,但是仍然要小心一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM