ワークスペース上の構​造体の中のデータを、​strcatコマンド​で作った文字列で指示​した、名称のデータを​読み込ませたい。

4 Ansichten (letzte 30 Tage)
Hideaki Ishii
Hideaki Ishii am 17 Apr. 2019
Kommentiert: Hideaki Ishii am 17 Apr. 2019
<問合せ事項>
ワークスペース上の構造体の中のデータを、読み込みたい。構造体のデータが規則性のある名称でたくさんあるので
構造体の名称をstrcatを用いて、文字をFor文で自動的に作って、読み込ませたいが、データを読み込まない。
<背景>
計測器で測定したデータをマトラブで解析する必要があり、matファイルに変換してもらいました。
チャンネル数が100を超えるので計測器のセンサ―情報等もあるためか、matファイルをmatlabで読み込むと構造体の階層データで
格納されていました。具体的にはSignal_001,Signal_002, ,,, Signal_100の構造体データがあります。
解析に必要な時系列のデータは、この構造体のSignal_001.y_values.valuesに格納されています。
例えば、y=Signal_001.y_values.values;のように直接打ち込むと変数yのデータとして時系列データを読み込んでくれます。
<困りごと>
データ数が多いので、各Signal_001~Signal_100に格納された時系列データを連続して読み込み、時系列データだけの
マトリックスを作りたいのです。
データ名称自体に規則性があるので、文字列をFor文で001~100まで作ります。(ここでは省略します)
例えば、s1='Signal_';s2='001';s3='.y_values.values' s=strcat(s1,s2,s3)
こうすることでs1=Signal_001.y_values.valuesというように格納された名称名までは認識をするのですが、
これをA=s1;として、Aに時系列データが入ってほしいのですが、AのデータはSignal_001.y_values.valuesという
文字だけになります。(当然だとおっしゃる方もいらっしゃると思います。)
どのようにしたら、時系列データを読み込むことができるのでしょうか?
コマンドをご存知の方があれば教えてください。

Akzeptierte Antwort

Shunichi Kusano
Shunichi Kusano am 17 Apr. 2019
matファイルの中身に複数の構造体が入っているとのことですので、matファイル読み込みの際に
Signals = load('***.mat');
のように読み込むと、全てを含んだ構造体配列が一つできます。
構造体配列の各フィールドには文字列形式でのアクセスが可能です。
Signals.('Signal_001').y_values.values % これでアクセスできる
あとは文字列部分をforループで回せば、データ部分だけ取り出せると思います。
こちらで簡単にテストした感じではできそうでしたが、いかがでしょうか。
  8 Kommentare
Shunichi Kusano
Shunichi Kusano am 17 Apr. 2019
ちょうど同時の投稿になってしまいましたね。解決出来たようでよかったです。
Hideaki Ishii
Hideaki Ishii am 17 Apr. 2019
誠にありがとうございました。周りに聞いても、解決策がなくここで質問して回答なければ、非常にどろくさいやり方をするところでした。
やっぱりマトラブすごいです。140chのデータがたくさん投げられてくるので、その備えをしていましたが、取り掛かりがスムーズになりました。ありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu データ型の変換 finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!