matfileに格納​されている構造体の一​部の変数のみをワーク​スペースに読み込む方​法はありますでしょう​か

24 ビュー (過去 30 日間)
Takao
Takao 2023 年 6 月 30 日
コメント済み: Takao 2023 年 7 月 3 日
matfileに
S.a
S.b
S.c
という構造体Sがある場合にS.bのみをワークスペースに読み込むことは可能でしょうか。

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 6 月 30 日
構造体Sが保存されたmatファイルのS.bのみを抽出するサンプルを作成してみました。
用途は分かりませんが、下記の例は、MATLABの内部的に一度構造体Sの全てのデータの読み込みをしていますので、読み込み時間が短縮されるといったことはありません。また、matファイルのS変数内のbのメンバーのみ読み込みして、読み込み時間を短縮させるといった方法はおそらくないのではと思います。
S = struct('a',1,'b',2,'c',3);
save('test.mat', 'S'); %サンプル用matファイル作成
mat = matfile('test.mat');
b = getfield(mat.S, 'b')% bのメンバーを抽出
b = 2

その他の回答 (1 件)

Takao
Takao 2023 年 7 月 2 日
回答ありがとうございます。
おっしゃる通りで複数の計測データをmatfileに変換する際にデータサイズがかなりおおきくなってしまったので、読み込み時間を短縮できないかと思い、質問いたしました。
やはり読み込み時間を短縮するやり方はないんですね。。
  2 件のコメント
交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 7 月 3 日
編集済み: 交感神経優位なあかべぇ 2023 年 7 月 3 日
一応、保存する際に構造体にせずに、それぞれの変数a,b,cとしてmatファイルに保存すれば、読み込みの際に、変数bだけを読み込ませるといったことは可能です。
a = 1;
b = 2;
c = 3;
save('test.mat', 'a', 'b', 'c');%サンプル用matファイル作成
m = matfile('test.mat');
m.b % bの変数を読み込み(この時、変数a,bの読み込みは行われないので、読み込み時間は速くなる。)
ans = 2
Takao
Takao 2023 年 7 月 3 日
ありがとうございます。確かにmatに保存する際に工夫するやり方もありますね。トライしてみます

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

カテゴリ

Help Center および File Exchangeワークスペース変数と MAT ファイル についてさらに検索

タグ

製品


リリース

R2019b

Community Treasure Hunt

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

Start Hunting!