あなたが本当にしたいのであれば、そうすべきではありませんが、variable2etc を関数にしevalinて、 の現在の値を取得するために使用できますvariable1:
variable2 = @() 2 * evalin('caller', 'variable1')
variable1 = 1;
variable2() % output: 2
variable1 = 15;
variable2() % output: 30
これはかなり醜い解決策であり、私自身は使用しません。コードが関数内にある場合は、少し良い解決策があります (eval を使用しないという意味で):
function [ ... ] = myFun( ... )
variable1 = 1;
variable2() % output: 2
variable1 = 15;
variable2() % output: 30
function v2 = variable2; v2 = 2 * variable1; end
end
update_varsそれでも、個人的には Robert P のスクリプトに似たものを使用します。繰り返しますが、関数内にいる場合は、ネストされた関数が親のすべての変数にアクセスして変更できるという事実を使用できます。
function [ ... ] = myFun( ... )
variable1 = 1;
updateVars();
variable2 % 2
variable1 = 15;
updateVars();
variable2 % 30
function updateVars
variable2 = 2 * variable1;
end
end