matファイルをルート Inport マッパー ツールから一つのデータシナリオに変換してしまい以後ワークスペースに値が読み込まれなくなってしまった。戻す方法を教えて欲しい。
이전 댓글 표시
matファイルの形式がDataSetになってしまい、lordしてもワークスペースに変数とその値が読込まれない様になってしまい困っております。
元に戻す方法をご教示頂きたいです。
답변 (1개)
Toshinobu Shintai
2021년 7월 13일
データセットオブジェクト"Dataset"に格納されたデータには、以下の画像のように
my_data.get('time')
というコマンド形式で取り出すことができます。

댓글 수: 4
Katotyan_pe
2021년 7월 13일
편집: Katotyan_pe
2021년 7월 13일
Toshinobu Shintai
2021년 7월 13일
階層が深くないのであれば、for文で何とかする方法もあります。
MATLABの裏技的なコマンド「eval」を使うことでans以外の変数に格納することもできると思います。
%%
load('my_data.mat');
eleNum = my_data.numElements;
nameList = my_data.getElementNames;
%%
for i = 1:eleNum
eval([nameList{i}, ' = my_data.get(', char(39), nameList{i}, char(39), ');']);
end
コマンドとデータを添付していますのでご確認ください。
Katotyan_pe
2021년 7월 13일
Atsushi Ueno
2021년 7월 13일
問題を再現してみました
Simulink ⇒ モデルコンフィグレーションパラメータ ⇒ ルートInportマッパーツール ⇒ MATファイルから ⇒ 対象データ選択 ⇒ [信号をシナリオ データセットに変換して MAT ファイルに保存]チェックボックスをON ⇒ OKボタン押下
するとMATファイルを上書き保存しました。文言通り「信号をシナリオ データセットに変換して MAT ファイルに保存」していますが、MATファイルを上書きするかどうかはダイアログを出すなりして注意喚起して欲しいですね。
上書きしてしまった以上は不可逆で元には戻せませんが、変数エディタでオブジェクトを確認すると(先のコメント通り)データがオブジェクトに包まれるだけで、データ自体は存在します。ただ、フィールド名と元の変数の名前が分かれたりしているので、元に戻すには先のコメントのコードのように同クラスのメソッドをやりくりして中身を取り出す必要があります。
카테고리
도움말 센터 및 File Exchange에서 シミュレーションのための信号データの読み込み에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!