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

조회 수: 22 (최근 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 CenterFile Exchange에서 Whos에 대해 자세히 알아보기

태그

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!