Figure配列にあ​るグラフの軸をすべて​変更する方法

13 ビュー (過去 30 日間)
Haruki Yamaguchi
Haruki Yamaguchi 2018 年 6 月 5 日
コメント済み: Naoya 2018 年 6 月 11 日
spectrogram関数を使いfigureを作成しており、複数のfigureを一つにまとめfigureファイル(.fig)として保存しております。
このとき.figファイルをMATLAB上で取り込み、figure配列にある各figureのカラーマップを変更するため、以下のようなプログラムを作成しましたがうまく動作しませんでした。
このプログラムでは変数figに入っている最後のfigureのみカラーマップがグレースケールに変更され、変更されたfigure1枚がコピーされて各fig(i)に同じものが代入されている状態になっています。
それぞれのfigureごとにカラーマップを変更する方法を教えて頂きたいです。
fig=openfig('all.fig','invisible'); % all.figには10個のfigureが入ってます
for i=1:10
colormap(fig(i),'gray');
end

回答 (2 件)

Naoya
Naoya 2018 年 6 月 8 日
こちらでも簡単な下記のような簡単なコードで再現を試みてみましたが、特に報告頂いた症状は確認できていません。 以下のコードをお試しいただき、症状はあらわれますでしょうか?
figure,spectrogram(rand(1,100));
fig(1) = gcf;
figure,spectrogram(rand(1,100));
fig(2) = gcf;
figure,spectrogram(rand(1,100));
fig(3) = gcf;
figure,spectrogram(rand(1,100));
fig(4) = gcf;
savefig(fig,'all')
close all,clear all
fig = openfig('all.fig');
for i = 1:length(fig), colormap(fig(i),'gray'), end

Haruki Yamaguchi
Haruki Yamaguchi 2018 年 6 月 11 日
プログラムを確認したところ、正常に動きました。ありがとうございます。 colormapの指定で、シングルコーテーションが実際に動かすプログラムの中で抜けていたようでした。
今回はfigureファイルで保存していますが、.matファイルで同様のことを行っているのですが、fig配列として保存し、load関数を利用して変数をインポートするときにどうしてもfigureがインポート中に表示されてしまいます。 .matファイルでfigure配列をインポートして表示させない方法はありますでしょうか。
  1 件のコメント
Naoya
Naoya 2018 年 6 月 11 日
正常動作を確認できたということで、安心しました。
matファイルへ保存する前段で、figure配列それぞれの Visibleプロパティを 0 へ設定することで、 load 経由でインポートする際、Figure の表示を回避することができるかと思います。

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

カテゴリ

Help Center および File Exchange書式設定と注釈 についてさらに検索

Community Treasure Hunt

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

Start Hunting!