MATLAB Answers

figファイルから複​数のデータを抽出する​にはどうすれば良いで​しょう?

28 ビュー (過去 30 日間)
Akira
Akira 2021 年 9 月 7 日
コメント済み: Akira 2021 年 9 月 12 日
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% figファイルから複数のデータを抽出するには?
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;clc;close all;
%
%% plotデータ例の作成
t = 0:0.01:1;
x1 = 2*cos(2*pi*5*t);y1 = 3*sin(2*pi*1.5*t);
figure(1);clf(1);
plot(t,x1,t,y1);
xlabel('Time[s]');ylabel('y');
savefig('sine.fig')
%% 図からデータ抽出
hfig = open('sine.fig');
ax1 = hfig.Children
t = ax1.Children.XData; % この解釈で良いか...?
xx1 = ax1.Children.YData; % x1を取り出す
yy1 = ax1.Children.YData; % <-- y1を取り出したいがうまくいかない
%
figure(2);clf(2);plot(xx1,yy1); % x1を横軸に、y1を縦軸に描画したい
xlabel('x');ylabel('y');

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 9 月 11 日
1か所だけ、やりたい事に沿わないデータ指定(XDataとすべきところをYDataとしている)がありました。
また、グラフのデータが2本あるので、2本分取り出す必要があります。詳細はコードに追記しました。
clear all; clc; close all;
t = 0:0.01:1; x1 = 2*cos(2*pi*5*t);y1 = 3*sin(2*pi*1.5*t);
figure(1); clf(1); plot(t,x1,t,y1); xlabel('Time[s]'); ylabel('y');
savefig('sine.fig');
hfig = open('sine.fig');
ax1 = hfig.Children;
t = ax1.Children.XData; % この解釈で良いか...? <<<< X軸=時間軸なので、その解釈で良いです
xx1 = ax1.Children.XData; % x1を取り出す <<<< YDataではなくXDataです
yy1 = ax1.Children.YData; % y1を取り出したいがうまくいかない <<<< 実はうまくいってます
xx2 = ax1.Children(2).XData; % x2を取り出す
yy2 = ax1.Children(2).YData; % y2を取り出す
%
figure(2);clf(2);
plot(xx1,yy1); hold on; % x1を横軸に、y1を縦軸に描画したい
plot(xx2,yy2); % x2を横軸に、y2を縦軸に描画(追記)する
xlabel('x');ylabel('y');
  1 件のコメント
Akira
Akira 2021 年 9 月 12 日
どうもありがとうございました。よくわかりました。

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

その他の回答 (0 件)

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!