MATLAB Answers

m17td024
0

方程式をプロットした​figureファイル​(添付の.fig)か​らグラフの全データ値​(離散的に)を横軸と​縦軸の値が対応するよ​うに抽出するにはどう​すればよいでしょうか​。

Asked by m17td024
on 7 Sep 2018
Latest activity Commented on by m17td024
on 13 Sep 2018
添付のfigureファイルから、プロットデータの値を離散的に複数個、横軸と縦軸が対応するように抽出するにはどうすればよいでしょうか。
他の質問に近いものがあり、以下のように試してみましたが、グラフの方程式に関係のない部分(横軸;左端から右端、縦軸;下端から上端)が抽出されてしまいます。z1が横軸、z2が縦軸です。
hfig = open('modea r=0 v=0.fig');
ax1 = hfig.Children;
z1 = ax1.Children.XData;
z2 = ax1.Children.YData;

  0 Comments

Sign in to comment.

1 Answer

Naoya
Answer by Naoya
on 12 Sep 2018
 Accepted Answer

figファイルを確認してみましたところ、コンターの等高線データのようです。
等高線のデータを取得する方法ですが、Contourオブジェクトの ContourMatrix に格納される行列から取得できます。 わかり辛いかもしれませんが こちら に規則性が記述しております。
該当の figファイルからの取得は下記例のようになります。
% FigureのオープンからContour行列の取得まで
hfig = open('modea r=0 v=0.fig');
ax1 = hfig.Children;
h1 = get(ax1,'Children');
c = h1.ContourMatrix;
% Contour行列から 等高線データを取得
id = 1;
figure;
hold on
while true
n = c(2,id);
data = c(:,id+1:id+n);
plot(data(1,:),data(2,:),'r')
id = id+n+1;
if id > size(c,2)
break
end
end
hold off

  1 Comment

m17td024
on 13 Sep 2018
ご回答いただき誠にありがとうございます。 希望するデータを取得することができました。

Sign in to comment.