現在、MATLABで基本的な画像処理アプリケーションを開発中です。私は以前の状態の機能に元に戻すを実装する必要があります。私はネットを検索しました。uiundoですが、GUIの操作だけを元に戻します。元に戻す簡単なコマンドがありますか?ありがとう。MATLABはコマンドを取り消します
答えて
余裕がある場合は、すべてのプログラム状態を構造体に格納し、この構造体をcircular bufferにプッシュすることができます。バッファ内の要素数によって、元に戻すレベルの数が決まります。
Command patternを使用して独自の複数レベル(または1レベル)の元に戻す必要があると思います。
これは、操作を実行して状態を復元するロジックを含むオブジェクトに操作をラップする必要があります。いいえ、銀の弾丸、勤勉が必要です。
一般アンドゥが複雑になりますが、あなたはMATLAB変数の状態を保存し、保存された状態に戻るにのみ関心がある場合、これは一つの可能な解決策になるかもしれません:
save_state.m:
SavedStateFolder = '/home/user/matlab_saved_states_folder/';
save([ SavedStateFolder, 'saved_state_', sprintf('%06d', (size(dir(SavedStateFolder), 1) - 1)) ]);
fprintf('state saved in saved_state_%s.mat\n', sprintf('%06d', (size(dir(SavedStateFolder), 1) - 2)));
undo_index.m:
function undo_index()
SavedStateFolder = '/home/user/matlab_saved_states_folder/';
FilesStruct = dir(SavedStateFolder);
LastSavedStateIndex = size(FilesStruct, 1) - 2;
if (LastSavedStateIndex < 1)
fprintf('No saved states available.\n');
else
fprintf('Index of last saved state is %06d\n', LastSavedStateIndex);
end
return
undo.m:
SavedStateFolder = '/home/user/matlab_saved_states_folder/';
load([ SavedStateFolder, 'saved_state_', sprintf('%06d', input('Enter saved state index ')) ]);
次に、save_state
を使用してMATLAB変数の状態を保存したり、すべての変更を追跡したい場合は、すべてのコマンドにsave_state;
という接頭辞を付けることもできます。以前の状態の変数に戻す場合は、undo_index
を実行して最後に保存した状態のインデックスを確認し、undo
を実行してundo_index
で指定されたインデックスを入力するか、小さい正の整数を入力して以前の状態変数の状態。最初に保存された状態ファイルの名前はsaved_state_000001.mat
、次にsaved_state_000002.mat
などとなります。save_state
はすべてをディスクに保存するので、SSDまたはRAMディスクを使用するとよいでしょう。データ。また、またはundo
を実行すると、SavedStateFolder
という変数の以前の内容が失われることにも注意してください。これを回避するには、例えば、ハードコードされたフォルダ名とsave.state.m
とundo.m
にSavedStateFolder
のすべてのインスタンスを置き換えることができます。
save_state.m:
save([ '/home/user/matlab_saved_states_folder/', 'saved_state_', sprintf('%06d', (size(dir('/home/user/matlab_saved_states_folder/'), 1) - 1)) ]);
fprintf('state saved in saved_state_%s.mat\n', sprintf('%06d', (size(dir('/home/user/matlab_saved_states_folder/'), 1) - 2)));
undo.m:
load([ '/home/user/matlab_saved_states_folder/', 'saved_state_', sprintf('%06d', input('Enter saved state index ')) ]);
save_state
,undo_index
およびundo
は、SavedStateFolder
には、.
,..
とsaved_state_*.mat
ファイル。また、saved_state_*.mat
ファイルの数と保存される実行中のインデックスはこのようにして見つかっています。したがって、たとえば、以前のsaved_state_*.mat
ファイルを削除すると、同じ数の空のファイルを作成してそれらを置き換えると、カウントは一致せず、save_state
はすでに存在する保存済み状態ファイルの上に状態を保存する可能性があります。
- 1. 取り消しまたは再作成 'IRC' bashはコマンド
- 2. 長時間実行しているRuby Net :: SSHコマンドを取り消すには
- 3. Laravel認証を取り消します
- 4. JWT Oauth2リフレッシュトークンを取り消します
- 5. Doorkeeperトークンを取り消します
- 6. ユーザーのメモリ消費量を取得するスクリプトまたはコマンド
- 7. ubuntuの "mv file - "コマンドを取り消す方法
- 8. Androidで「USBデバッグ認証の取り消し」を取り消す方法はありますか
- 9. VIMにブロック取り消しはありますか?
- 10. adbコマンドを使用して管理者権限を取り消すことはできますか?
- 11. redshiftはsuper_userからprivlageを取り消します
- 12. OracleはCLOB空間を取り消します
- 13. Hibernate DB2はユーザーのためにSTATEMENTを取り消します
- 14. Androidはキャンバスに描画メソッドを取り消します
- 15. RXjsはソースからデバウンスを取り消します
- 16. ServiceTrackerはいつServiceReferenceを取り消しますか?
- 17. ActiveMQメッセージの取り消し
- 18. IdentityServer4 refresh_token取り消し
- 19. 取り消しDropboxのアクセス
- 20. Oauthの取り消しトークン
- 21. 変更を取り消す
- 22. ドラッグアクションを取り消すJavaFX
- 23. 登録を取り消す
- 24. NokogiriはRailsコマンドを打ち消します
- 25. yumの履歴の取り消しコマンドで依存パッケージの削除を停止します
- 26. 取り消し自体を起動せずに取り消されたタスクを処理するには?
- 27. QTableView QStandardItemModelユーザーエントリを元に戻すまたは取り消す
- 28. Javascriptでリソースを取り消すことはできますか?
- 29. 平面ループ消去ランダムウォーク(matlab)
- 30. Matlabのif(check)コマンド
+1:良いアイデア。もう1つは、それぞれの操作の後にすべてをディスクに保存することですが、これは過度なことかもしれません:) – Anonymous