Function 在函数Matlab中存储变量

Function 在函数Matlab中存储变量,function,matlab,Function,Matlab,我尝试使用: function abc= calculate(obj) ag=obj.turns*d/c; end 但每次都会替换该值 如何在此函数中存储obj.turns的值?每次调用函数时,该值都会更改。对于所需的持久变量(存在于函数范围之外的变量),您需要创建另一个类属性来保存它,或者更新现有对象,如本例所示 temp=num2cell(obj.turns) s=temp{:} 这是一个增加x值的简单函数。重要的细节是函数还返回对象 或者,您可以使类成为hand

我尝试使用:

function abc= calculate(obj)
ag=obj.turns*d/c;
end
但每次都会替换该值

如何在此函数中存储obj.turns的值?每次调用函数时,该值都会更改。

对于所需的持久变量(存在于函数范围之外的变量),您需要创建另一个类属性来保存它,或者更新现有对象,如本例所示

temp=num2cell(obj.turns)
            s=temp{:}
这是一个增加x值的简单函数。重要的细节是函数还返回对象

或者,您可以使类成为handle类的子类。然后,对象属性会被就地修改,这样您就可以像下面这样逃避

function obj = increment_x(obj) 
    obj.x=obj.x+1;
end

有几件事可以做

将所有变量传入函数(首选方法)

使用全局变量。这可能会让人非常困惑,因此不建议这样做

function ag= calculate(obj,d,c)
ag=obj.turns*d/c;
end
以及其他一些代码:

function calculate(obj)
global ag,d,c
ag=obj.turns*d/c;
end

如果我正确地解释了你想要的,你应该使用一个。下面是一个例子:

function start
global ag,d,c
c=1;d=3;
calculate(obj)
fprintf('%i',ag);

第一次调用
calculate
时,
obj.turns
中的值将放置在
storedTurns
中。每次调用
calculate
时,该值将保持不变,从该点开始忽略传入的变量
obj
中可能存在的任何新值。

您的上述代码被破坏(ag去哪里了?
d
c
来自哪里?)。现在还不清楚“在函数中存储变量”是什么意思;您将其作为参数传递,那么为什么需要“存储”它呢?ag用于下一个函数中,它计算电路参数。所有这些符号都对应于某些确实更改其值的对象。我想画的不是这个函数中的obj.turns值,而是主m文件中的obj.turns值。我认为你不太理解函数的含义,因为这根本没有任何意义。d和c实际上是对象。即obj.m_横截面和obj.m_电感。将其声明为全局将在下面给出一条红线
function start
global ag,d,c
c=1;d=3;
calculate(obj)
fprintf('%i',ag);
function abc = calculate(obj)

  persistent storedTurns;
  if isempty(storedTurns)
    storedTurns = obj.turns;
  end

  ag = storedTurns*d/c;
  ...

end