フィルターのクリア

Is their any way to load only selected fields from a saved structure array.

68 ビュー (過去 30 日間)
Bonnie Tyler
Bonnie Tyler 2017 年 2 月 15 日
コメント済み: Walter Roberson 2017 年 2 月 15 日
I have some very large structure arrays stored in .mat files. I want to avoid loading the entire array to save time and memory.

回答 (2 件)

Stephen23
Stephen23 2017 年 2 月 15 日
編集済み: Stephen23 2017 年 2 月 15 日
Method
Make sure you save the structure array using the '-struct' option:
save(filename,'-struct','S')
And then, exactly as the load documentation says, you can load the variables by supplying their names as optional arguments. E.g. if the mat file contains variables X and Y:
S = load(filename,'X','Y');
This will only load X and Y into the structure S, not matter what other variables are also present in the mat file.
Example
>> S.X = 1:3;
>> S.Y = 4:5;
>> S.Z = 6:9;
>> save('test.mat','-struct','S')
>> clear
>> S = load('test.mat','X','Y');
>> fieldnames(S)
ans =
'X'
'Y'
>> S.Y
ans =
4 5
  1 件のコメント
Walter Roberson
Walter Roberson 2017 年 2 月 15 日
However, if they are structure arrays rather than scalar structures, then you cannot use save -struct

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


Walter Roberson
Walter Roberson 2017 年 2 月 15 日
Sorry there is no Mathworks provided way to do that.
If you just happen to be using a v7.3 mat file then I wonder if there would be an approach by using hdf5 routines to access the mat file?

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by