matファイルをルート Inport マッパー ツールから一つのデ​ータシナリオに変換し​てしまい以後ワークス​ペースに値が読み込​まれなくなってしまっ​た。戻す方法を教えて​欲しい。

matファイルの形式がDataSetになってしまい、lordしてもワークスペースに変数とその値が読込まれない様になってしまい困っております。
元に戻す方法をご教示頂きたいです。

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 13 Jul 2021

0 votes

データセットオブジェクト"Dataset"に格納されたデータには、以下の画像のように
my_data.get('time')
というコマンド形式で取り出すことができます。

4 Comments

Katotyan_pe
Katotyan_pe on 13 Jul 2021
Edited: Katotyan_pe on 13 Jul 2021
取り出したいデータの数が多いので、形式を変換(戻したい)のですが、
一度変換してしまったファイルは教えて頂いた方法でしか取り出せないのでしょうか?
または、for文を組んで取り出すみたいな事をしないと行けないのでしょうか?
取り出した後の変数名がansになってしまいかなりの手間になりそうです。
もしこれが仕様であるなら相当不便ですよね。。。元に戻す方法はないのでしょうか?
階層が深くないのであれば、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
Katotyan_pe on 13 Jul 2021
結論、元に戻せないという事でしょうか?そこだけはっきりしておきたいです。
Atsushi Ueno
Atsushi Ueno on 13 Jul 2021
問題を再現してみました
Simulink ⇒ モデルコンフィグレーションパラメータ ⇒ ルートInportマッパーツール ⇒ MATファイルから ⇒ 対象データ選択 ⇒ [信号をシナリオ データセットに変換して MAT ファイルに保存]チェックボックスをON ⇒ OKボタン押下
するとMATファイルを上書き保存しました。文言通り「信号をシナリオ データセットに変換して MAT ファイルに保存」していますが、MATファイルを上書きするかどうかはダイアログを出すなりして注意喚起して欲しいですね。
上書きしてしまった以上は不可逆で元には戻せませんが、変数エディタでオブジェクトを確認すると(先のコメント通り)データがオブジェクトに包まれるだけで、データ自体は存在します。ただ、フィールド名と元の変数の名前が分かれたりしているので、元に戻すには先のコメントのコードのように同クラスのメソッドをやりくりして中身を取り出す必要があります。

Sign in to comment.

Products

Asked:

on 13 Jul 2021

Commented:

on 13 Jul 2021

Community Treasure Hunt

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

Start Hunting!