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

5 ビュー (過去 30 日間)
Hideaki Ishii
Hideaki Ishii 2019 年 4 月 17 日
コメント済み: Hideaki Ishii 2019 年 4 月 17 日
<問合せ事項>
ワークスペース上の構造体の中のデータを、読み込みたい。構造体のデータが規則性のある名称でたくさんあるので
構造体の名称を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という
文字だけになります。(当然だとおっしゃる方もいらっしゃると思います。)
どのようにしたら、時系列データを読み込むことができるのでしょうか?
コマンドをご存知の方があれば教えてください。

採用された回答

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeデータ型の変換 についてさらに検索

Community Treasure Hunt

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

Start Hunting!