構造体を読み込む

Matlab初心者です。
test.matにあるtest_01,_02,_03.....の複数の構造体を一つずつ読み込み、各構造体内にある、Fというフィールドを取り出すのに、途中なのですが、以下のようにしました。
dataDir = ''C:\Users\*******\Documents\test.mat''
nub = 10
tf = [ ]
for cnt=1:nsub
dname = fullfile(dataDir,sprintf('test_0%d',cnt));
data = load(dname);
tf = squeeze(data.F);
end
この時 ”ファイル 'C:\Users\*********\Documents\test.mat\test_01' を読み取れません。そのような
ファイルまたはディレクトリはありません。”と表示されます。
構造体を読み込むときはどのようにしたらよいでしょうか。

 Accepted Answer

Kenta
Kenta on 14 Dec 2018

2 votes

Jun 様
test.matにあるdata1, data2, data3を読み込み、それぞれのtitleというフィールドを取り出すコードを作成してみました。ここでは、tfにそれぞれのtitleというフィールドの値が正しく入っていますが、いかがでしょうか。Jun様の状況を把握し間違えている場合はお教えください。よろしくお願いいたします。

3 Comments

Jun
Jun on 14 Dec 2018
Edited: Jun on 14 Dec 2018
ご返答ありがとうございます。
お送りいただいたsample.matは内容を確認できました。しかし、残念ながらtest.matを開くと文字化けしてしまい確認ができていません。
sample.matを実行すると、tfにtitleというフィールド値は入っています。ただ、ここから、実際のtitle フィールド(10×1×6 doubleというものなのですが)これを読み込み10×6へ変換したいと思っています。
clear
clc
dataDir = 'C:\Users\*****\Documents\test.mat';
nub = 10;
tf = cell(nub,1);
load test.mat
for cnt=1:nub
dname = sprintf('data%d',cnt);
data = strcat(dname,'.title');
tf{cnt} = squeeze(data);
end
上記を実行すると、やはりtest1.titleというファイルまたはディレクトリはない、とエラーが出てきてしまいます。
10×6 doubleはそれぞれ title1 という名前の.matファイルで保存したいと思っています。
実施したいことをまとめると、test.matにある10個のdata(構造体)にあるtitleのフィールドを10×1×6 double から10×6 double へ変換し、title1,2,3・・・・10、という名称の.matファイルを作成する、ということです。いろいろとわかりにくくすみません。
ご教授いただけると幸いです。
Kenta
Kenta on 14 Dec 2018
文字化けしてしまうのですね。それでは、data_sourceをまず実行してもらえますか。
それでtest.matが保存されます。
データは10*1*6なのですね。squeeze関数を使う理由がわかりました。ありがとうございます。
sample2を実行すると、望む形のデータがcell配列に入っていると思いますが、いかがでしょうか。
Jun
Jun on 14 Dec 2018
確認できました!!
ありがとうございました。
お送りいただいたファイルで望む形になりました。
また内容を確認して、勉強させてもらいます。

Sign in to comment.

More Answers (0)

Asked:

Jun
on 14 Dec 2018

Commented:

Jun
on 14 Dec 2018

Community Treasure Hunt

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

Start Hunting!