필터 지우기
필터 지우기

subplotのfi​gureからCSVデ​ータを取り出す方法

조회 수: 55 (최근 30일)
Osamu Goto
Osamu Goto 2024년 4월 18일 8:17
댓글: Osamu Goto 2024년 4월 19일 0:39
Matlab R2020aの環境下で、.figファイルを読み込んで、figureを読み込んでいます。
そのfigureには、例えば、subplotで2x2の描画画面があり、その1画面の中に複数plotがある場合、
それぞれ描画されている元のデータをCSVで引き出す方法はあるでしょうか?
元データは無くしてしまい、.figデータだけ手元にあるので、よろしくお願いします。

답변 (1개)

Atsushi Ueno
Atsushi Ueno 2024년 4월 18일 15:27
figureハンドル.Children(m).Children(n).X(Y)Data で目的のXY軸情報にアクセスできます。
データの取り出し方は示せてるかと思いますが、行列に突っ込んでいくなどいいかげんです。
なので、より詳細な方法について要求があればコメントください。
%% サンプルデータを作成する
fig = figure; x = linspace(0,10)';
subplot(2,2,1); y1 = [sin(1*x) cos(1*x)]; plot(x,y1); title('Subplot 1: sin(1x), cos(1x)');
subplot(2,2,2); y2 = [sin(2*x) cos(2*x)]; plot(x,y2); title('Subplot 2: sin(2x), cos(2x)');
subplot(2,2,3); y3 = [sin(4*x) cos(4*x)]; plot(x,y3); title('Subplot 3: sin(4x), con(4x)');
subplot(2,2,4); y4 = [sin(8*x) cos(8*x)]; plot(x,y4); title('Subplot 4: sin(8x), cos(8x)');
saveas(fig,'figure1'); % fig ファイル figure1.fig を作成
close(fig); % fig ファイルに保存した figure をクローズする
%% fig ファイルからデータを読み込み CSV 化する
dat = [];
hfig = openfig('figure1.fig','invisible'); % figure は表示しない
for chld = hfig.Children' % 全てのサブプロットを走査
for axs = chld.Children' % 全ての XY 軸データを走査
dat = [dat; axs.XData; axs.YData]; % 行列に収めていく
end
end
writematrix(dat, 'test.csv'); % 順番が逆になっちゃった。ご愛敬
  댓글 수: 1
Osamu Goto
Osamu Goto 2024년 4월 19일 0:39
ありがとございました。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 グラフィックス オブジェクトのプログラミング에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!