現在、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. ユーザーのメモリ消費量を取得するスクリプトまたはコマンド
- 4. JWT Oauth2リフレッシュトークンを取り消します
- 5. Doorkeeperトークンを取り消します
- 6. VIMにブロック取り消しはありますか?
- 7. Oauthの取り消しトークン
- 8. RXjsはソースからデバウンスを取り消します
- 9. Hibernate DB2はユーザーのためにSTATEMENTを取り消します
- 10. 登録を取り消す
- 11. QTableView QStandardItemModelユーザーエントリを元に戻すまたは取り消す
- 12. BackgroundWorker内でWebclient.DownloadFileを取り消します。
- 13. パブリックロールからの接続許可を取り消します
- 14. NSUndoManagerがiOSのコアデータで作業を取り消します
- 15. webclient非同期リクエストを取り消します
- 16. PostgreSQL:C/C++プログラムからクエリを取り消します。
- 17. 検証エラーでTextBox入力を取り消します
- 18. RichTextBoxカスタムUIContainerの処理を取り消します
- 19. 方法:Webサービス機能要求を取り消します。
- 20. ロールのpostgresデータベースへのアクセスを取り消します
- 21. R import csv date(day)の値を取り消します
- 22. gitブランチの変更を取り消しました
- 23. MATLABからJavaScriptコマンドを実行してPDFファイルを取得する
- 24. disableUndoRegistrationは引き続き取り消し操作を許可しています
- 25. Jhipster - jwtの取り消しを管理する方法は?
- 26. MATLAB: "contour"コマンドは流線シミュレーションで流線を与えますか?
- 27. svnの取り消し方法
- 28. プロデューサーのコンシューマーリクエストの取り消し
- 29. のXcode 7.3:取り消し線
- 30. TextChangedイベントの取り消し(ASP.NET)
+1:良いアイデア。もう1つは、それぞれの操作の後にすべてをディスクに保存することですが、これは過度なことかもしれません:) – Anonymous