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

4 views (last 30 days)
Hideaki Ishii
Hideaki Ishii on 17 Apr 2019
Commented: Hideaki Ishii on 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という
文字だけになります。(当然だとおっしゃる方もいらっしゃると思います。)
どのようにしたら、時系列データを読み込むことができるのでしょうか?
コマンドをご存知の方があれば教えてください。

Accepted Answer

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

Sign in to comment.

More Answers (0)

Categories

Find more on データ型の変換 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!