saveコマンドを用​いて変数をmatファ​イルに保存する場合に​figureの保存を​除く方法

18 ビュー (過去 30 日間)
貴士 鈴木
貴士 鈴木 2021 年 5 月 17 日
編集済み: Atsushi Ueno 2021 年 5 月 18 日
ワークスペースの変数のみを保存したいのですが、saveコマンドを使用すると表示されているfigureも保存されてしまいます。
変数のみを保存する方法はありますでしょうか。ご教示お願いします。
■条件
・保存したい変数は無数にある。
・保存したくないfigureのハンドルは分かる。
・figureを一時的に消すのは避けたい。
■類似の質問
・2014b で save(uisave)を用いてmat fileを保存する際、figure を保存しないようにす​るためにはどうすれば​いいですか?https://jp.mathworks.com/matlabcentral/answers/170836-2014b-save-uisave-mat-file-figure

採用された回答

Atsushi Ueno
Atsushi Ueno 2021 年 5 月 17 日
whs = whos; % ワークスペースの変数をサイズおよびタイプと共に一覧表示する
whs(ismember({whs.class}, 'matlab.ui.Figure')) = []; % 一覧からクラスが'matlab.ui.Figure'の変数を削除する
wh = {whs.name}; % 一覧から残った変数名のみ取り出す
save('matlab.mat', wh{:}); % 残った変数のみmatファイルに保存する
clear whs wh; % このコードで使った変数を削除する
上記は「figureハンドル以外の変数を選択してsaveコマンドでmatファイルに保存する」コードの例です。
質問にて挙げられた「類似の質問」や「saveコマンド」の仕様を読む限り、現在のワークスペースにあるすべての変数を保存する機能を使用せず、保存すべき変数名を明示的に指定するしか方法が無いと思います。
saveコマンドで一度に複数の変数を保存する方法は、下記を参考にしました。
  2 件のコメント
貴士 鈴木
貴士 鈴木 2021 年 5 月 18 日
丁寧な回答ありがごうざいました。求めていた以上の素晴らしい回答です。
また、追加情報もありがとうございます。確認します。
関係ないですが、アイコンが素敵です。自分も良いと思います。
Atsushi Ueno
Atsushi Ueno 2021 年 5 月 18 日
編集済み: Atsushi Ueno 2021 年 5 月 18 日
捕捉:保存したくないものに共通した項目があれば、まとめて処理出来ます。
下記はwhosコマンドの出力例です。
>> whos
Name Size Bytes Class Attributes
f 1x1 8 matlab.ui.Figure
p 1x1 8 matlab.graphics.chart.primitive.Line
txt1 1x1 8 matlab.graphics.primitive.Text
x 1x41 328 double
y 1x41 328 double
下記はclassが文字列"matlab.(ui|graphics)."を含むものを保存対象から外す例です。
whs = whos;
whs(contains({whs.class}, 'matlab.ui.')) = [];
whs(contains({whs.class}, 'matlab.graphics.')) = [];
wh = {whs.name};
save('matlab.mat', wh{:});
clear whs wh;
上記の例で実行すると、f,p,txt1は保存されず、xとyのみがmatファイルに保存されます。
MATLABはいいぞ

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

タグ

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!