function abc= calculate(obj)
ag=obj.turns*d/c;
end
私が使用してみました:保存する変数のMatlab
temp=num2cell(obj.turns)
s=temp{:}
をしかし、値は毎回交換されます。
obj.turnsの値をこの関数に保存するにはどうすればよいですか?関数が呼び出されるたびに値が変更されます。
function abc= calculate(obj)
ag=obj.turns*d/c;
end
私が使用してみました:保存する変数のMatlab
temp=num2cell(obj.turns)
s=temp{:}
をしかし、値は毎回交換されます。
obj.turnsの値をこの関数に保存するにはどうすればよいですか?関数が呼び出されるたびに値が変更されます。
必要なもののような永続変数(機能の範囲外にある変数)を保持するには、別のクラスプロパティを作成するか、この例のように既存のオブジェクトを更新する必要があります。
function obj = increment_x(obj)
obj.x=obj.x+1;
end
これは、xの値をインクリメントする単純な関数です。重要な詳細は、関数がオブジェクトを返すことです。
また、クラスをハンドルクラスのサブクラスにすることもできます。オブジェクトのプロパティは、その場で変更されるので、次のようなもので取り除くことができます。 。 。
function 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);
dとcは実際にはオブジェクトobj.m_cross_sectionとobj.m_inductanceです。それらをグローバルに宣言すると、下に赤い線が表示されます – mirage
私はあなたが正しく欲しいものを解釈する場合は、persistent variableを使用する必要があります。
function abc = calculate(obj)
persistent storedTurns;
if isempty(storedTurns)
storedTurns = obj.turns;
end
ag = storedTurns*d/c;
...
end
あなたはcalculate
呼んで初めて、obj.turns
の値がstoredTurns
に配置されます:ここでは例です。この値は、calculate
に電話するたびに固定され、新しい値が入力された変数obj
には無視されます。
上記のコードは壊れています(「ag」はどこですか? 「d」と「c」はどこから来たのか?)そして、あなたが "関数に変数を格納する"という意味ははっきりしません。パラメータとして渡しているので、なぜそれを "格納"する必要がありますか? –
agは次の関数で使用され、回路パラメータを計算します。これらのシンボルはすべて、値を変更するオブジェクトに対応しています。私が望むのは、obj.turnsの値をこの関数ではなくメインのmファイルにプロットすることです。 – mirage
関数の意味を理解しているとは思えません。なぜなら、それはまったく意味がないからです。 –