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