How to convert a large .mat file of (default format ~ 7) to a 7.3 MAT-file / HDF5 based format when the file is too large to load.

1 回表示 (過去 30 日間)
I have a program which exports .mat files in the default .mat format - I believe it v7 MAT-file? Due to the size I am unable to load the .mat file. When attempting to load the .mat file I receive an "Error using load. Cannot read file X". I have no control over the output of the program used to generate the .mat file. Is there a way in which the .mat file may be accessed to retrieve the content? Ideally I would like to retrieve the data and save it in a v7.3 MAT-file format. Thanks!

採用された回答

Walter Roberson
Walter Roberson 2016 年 8 月 17 日
-v7 format .mat files cannot have any component which is larger than 2 gigabytes. This suggests a strategy of using load() to request particular variables from the -v7 .mat file, and write the contents to the -v7.3 .mat file (possibly using matFile)
  6 件のコメント
Jamie
Jamie 2016 年 8 月 17 日
編集済み: Jamie 2016 年 8 月 17 日
Excellent! Thanks for your help. Avid reader of your many posts!
Gaël
Gaël 2021 年 3 月 4 日
I'm really new to matlab but I had to update the code like this to get it run:
in_matname = 'YourMatFileName.mat';
out_matname = 'NewMatFileName.mat';
S = whos('-file', in_matname);
for K = 1 : length(S)
thisvarname = S(K).name;
% disp(K);
% disp(thisvarname);
datastruct = load(in_matname, thisvarname);
if K == 1
save(out_matname, '-v7.3', '-struct', 'datastruct');
else
save(out_matname, '-struct', 'datastruct', '-append');
end
end

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by