Google や MATLAB のドキュメントを使用するのは非常に難しく、数時間費やしましたが、方法を学ぶことができません。
x = 1
y = x
x = 10
y
ans = 10
代わりに何が起こるか:
x = 1
y = x
x = 10
y
ans = 1
x の値は y に格納されます。しかし、y の値を x に等しくなるように動的に更新したいと考えています。
これを行うにはどのような操作を使用しますか?
ありがとうございます。
Matlab は 99% 値渡し環境であり、これはあなたが今実証したものです。参照渡しである 1% はハンドルであり、ハンドル グラフィックス (ここでは関係ありません) またはハンドル クラスのいずれかであり、必要なものにかなり近いものです。
説明したことを実行するためにハンドル クラスを使用するには、以下をファイル呼び出しに入れますRefValue
。
classdef RefValue < handle
properties
data = [];
end
end
これにより、「データ」と呼ばれる単一のプロパティを持つ「ハンドル」クラスが作成されます。
今すぐ試すことができます:
x = RefValue;
x.data = 1;
y = x;
x.data = 10;
disp(y.data) %Displays 10.
次のいずれかを試すことができます。
x=10;
y='x'
y
y =
x
eval(y)
x =
10
x
関数 on を定義しy
てそれを参照することで、暗黙のハンドル on を定義することもできます。
x = 1;
y = @(x) x;
y(x) % displays 1
x = 10;
y(x) % displays 10
MATLABでは、これは不可能です。ただし、同様の動作を実現する方法はたくさんあります。たとえば、配列a = [1, 5, 3, 1]
を作成し、それをx
とでインデックス付けすることができますy
。の場合、、x = 2
を割り当てることができます。変更したら、、。a(x) = 7
y = x
a(x) = 4
a(y) == 4
したがって、インデックス付けは参照をエミュレートするための最速の方法かもしれませんが、洗練されたソリューションが必要な場合は、@natanが指摘するようにシンボリック変数を調べることができます。これから理解することが重要なのは、MATLABにはポインターがないということです。