extract data from MATLAB figures

109 ビュー (過去 30 日間)
hossein
hossein 2019 年 1 月 31 日
回答済み: hossein 2019 年 2 月 4 日
Dear friends
I have a figure in matlab and want to exract the data from it, I have a code which I have used it several time before for other figures, while it does not work for this figure. would you please advice me to handel the error?
I have attached the figure, and below is the code:
open('2.fig');
h = gcf; %current figure handle
axesObjs = get(h, 'Children'); %axes handles
dataObjs = get(axesObjs, 'Children'); %handles t
xdata = get(dataObjs, 'XData');
ydata = get(dataObjs, 'YData');
  1 件のコメント
Bjorn Gustavsson
Bjorn Gustavsson 2019 年 1 月 31 日
Are you completely sure that the dataObjs have fields 'XData' and 'Ydata'? In my experience that is not guaranteed to be the case, when trying to do this I've sooner or later have had to do it step-wise and rather manually - just to find what children to get the data from. Not the greatest news for you if this will force you to doodle this step manually for a larger number of figures. Perhaps you can get somewhere by looping over all dataObjs and check which has the right XData and YData.
HTH

サインインしてコメントする。

回答 (2 件)

Walter Roberson
Walter Roberson 2019 年 1 月 31 日
Change
axesObjs = get(h, 'Children'); %axes handles
to
axesObjs = findobj(h, 'type', 'axes');
The legend object that you are getting as a child of the figure does not have any children with Xdata and YData, and that is interfering with the get() you are doing.

hossein
hossein 2019 年 2 月 4 日
Dear friends
I see that you said that this kind of figure/code does not generate children by get(). I am wondering how does it possible that a figure generates children while the other figure does not?

カテゴリ

Help Center および File ExchangeGraphics Object Properties についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by