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

4 comentarios
Katotyan_pe
el 13 de Jul. de 2021
Editada: Katotyan_pe
el 13 de Jul. de 2021
Toshinobu Shintai
el 13 de Jul. de 2021
階層が深くないのであれば、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
el 13 de Jul. de 2021
Atsushi Ueno
el 13 de Jul. de 2021
問題を再現してみました
Simulink ⇒ モデルコンフィグレーションパラメータ ⇒ ルートInportマッパーツール ⇒ MATファイルから ⇒ 対象データ選択 ⇒ [信号をシナリオ データセットに変換して MAT ファイルに保存]チェックボックスをON ⇒ OKボタン押下
するとMATファイルを上書き保存しました。文言通り「信号をシナリオ データセットに変換して MAT ファイルに保存」していますが、MATファイルを上書きするかどうかはダイアログを出すなりして注意喚起して欲しいですね。
上書きしてしまった以上は不可逆で元には戻せませんが、変数エディタでオブジェクトを確認すると(先のコメント通り)データがオブジェクトに包まれるだけで、データ自体は存在します。ただ、フィールド名と元の変数の名前が分かれたりしているので、元に戻すには先のコメントのコードのように同クラスのメソッドをやりくりして中身を取り出す必要があります。
Categorías
Más información sobre シミュレーションのための信号データの読み込み en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!