@@ -20,26 +20,13 @@ function h5save(filename, varname, A, opts)
2020
2121filename = expanduser(filename );
2222
23- if isempty(opts .size )
24- if isvector(A )
25- sizeA = length(A );
26- else
27- sizeA = size(A );
28- end
29- else
30- sizeA = opts .size ;
31- end
3223% coerce if needed
3324A = coerce_ds(A , opts .type );
34- if ischar(A )
35- A = string(A );
36- sizeA = size(A );
37- end
3825
3926if isfile(filename ) && h5exists(filename , varname )
40- exist_file(filename , varname , A , sizeA )
27+ exist_file(filename , varname , A , opts . size )
4128else
42- new_file(filename , varname , A , sizeA )
29+ new_file(filename , varname , A , opts . size )
4330end
4431
4532end % function
@@ -57,6 +44,10 @@ function exist_file(filename, varname, A, sizeA)
5744 start = 1 ;
5845end
5946
47+ if isempty(sizeA )
48+ sizeA = defaultSize(A );
49+ end
50+
6051if isscalar(A )
6152 h5write(filename , varname , A )
6253elseif all(diskshape == sizeA )
@@ -71,24 +62,32 @@ function exist_file(filename, varname, A, sizeA)
7162
7263
7364function new_file(filename , varname , A , sizeA )
74- import stdlib.hdf5nc.auto_chunk_size
65+
7566
7667folder = fileparts(filename );
7768if strlength(folder ) > 0 && ~isfolder(folder )
7869 error(' hdf5nc:h5save:fileNotFound' , ' %s is not a folder, cannot create %s ' , folder , filename )
7970end
8071
81- if isscalar(A ) && ~isstring(A )
82- h5_write_scalar(filename , varname , A )
83- elseif isvector(A )
84- h5create(filename , varname , sizeA , ' DataType' , class(A ))
72+ if isempty(sizeA )
73+ if isscalar(A ) && ~isstring(A )
74+ h5_write_scalar(filename , varname , A )
75+ elseif isvector(A )
76+ h5create(filename , varname , length(A ), ' DataType' , class(A ))
77+ else
78+ create_compress(filename , varname , A , size(A ))
79+ end
8580else
86- % enable Gzip compression--remember Matlab's dim order is flipped from
87- % C / Python
88- h5create(filename , varname , sizeA , ' DataType' , class(A ), ...
89- ' Deflate' , 1 , ' Fletcher32' , true , ' Shuffle' , true , ...
90- ' ChunkSize' , auto_chunk_size(sizeA ))
91- end % if
81+ if isscalar(sizeA )
82+ if sizeA == 0 && ~isstring(A )
83+ h5_write_scalar(filename , varname , A )
84+ else
85+ h5create(filename , varname , sizeA , ' DataType' , class(A ))
86+ end
87+ else
88+ create_compress(filename , varname , A , sizeA )
89+ end
90+ end
9291
9392h5write(filename , varname , A )
9493
0 commit comments