この例では、MATLAB の図からデータを抽出する方法を説明します。図がファイル(例えば、'example.fig')として保存されている場合は、'openfig'を使用して図ファイルを開き、Figure オブジェクトを変数'fig'に割り当てます。
fig = openfig('example.fig');
図がすでに開いている場合は、'gcf'を使って Figure オブジェクトにアクセスし、それを変数'fig'に割り当てます。
fig = gcf;
プロットされたグラフィックスオブジェクトのデータにアクセスする方法はいくつかあります。Children プロパティを使用するか、'findobj'を使うことができます。
Childrenプロパティを使用する方法
Children プロパティを通じてプロットされたグラフィックスオブジェクトにアクセスします。Axes オブジェクトは Figure の子であり、プロットされたグラフィックスオブジェクトは通常、Axes オブジェクトの子です。
axObjs = fig.Children;
dataObjs = axObjs.Children;
コマンドウィンドウに表示される'dataObjs'配列は、軸内のグラフィックスオブジェクトの種類を示します。異なるグラフィックスオブジェクトは異なる方法でデータを格納します。例えば、Lineオブジェクトはデータを'XData'、'YData'、および'ZData'プロパティに格納します。'dataObjs'の最初の要素がLineオブジェクトである場合、そのデータに次のコードでアクセスします。
x = dataObjs(1).XData;
y = dataObjs(1).YData;
z = dataObjs(1).ZData;
図に他の種類のグラフィックスオブジェクトが含まれている場合は、適切なプロパティを使用してデータにアクセスしてください。グラフィックスオブジェクトとそのプロパティの一覧については、以下のリンクを参照してください: グラフィックスオブジェクトのプロパティ
findobj関数を使用する方法
また、特定のデータプロパティを持つ図内のすべてのグラフィックスオブジェクトを見つけることもできます。例えば、'YData'プロパティを持つすべてのグラフィックスオブジェクトを見つけ、最初のオブジェクトの'YData'値にアクセスします。
dataObjs = findobj(fig,'-property','YData');
y1 = dataObjs(1).YData;