Is modifying dataspace dimensions (extent) after creating them
possible? Suppose I originally created a 2D dataset with dimensions [2
x 307200]. Then later on I want to change the dimensions to [4 x
153600], same number of elements, different dimension size. Or even
possibly change the rank from 2 to 3, but keep then number of elements
same, i.e. dimensions of [1200 x 2 x 256].
I tried using 'set_extent_simple' since the user guide said it can be
used to set, or reset, the size of an existing dataspace.
I attached example Matlab code that attempts to open, read, and re-
write the dataspace size. But it isn't persistent, as in once I close
and re-open, my changes aren't saved.
Thanks!
···
------------------------------------------------------------------------------------------
Code:
% Open the dataset/dataspace
fid = H5F.open('test1.h5','H5F_ACC_RDWR', 'H5P_DEFAULT');
gid = H5G.open(fid,'test1');
did = H5D.open(gid, 'Range');
sid = H5D.get_space(did);
% Read current dimensions
[ndims dims maxdims] = H5S.get_simple_extent_dims(sid)
% Convert dimensions from 2D to 3D
H5S.set_extent_simple(sid, 3, [1200 2 256], [])
% Read back
[ndims dims maxdims] = H5S.get_simple_extent_dims(sid)
% Close
H5S.close(sid);
H5D.close(did);
H5G.close(gid);
H5F.close(fid);
% Re-open and re-read to check
fid = H5F.open('test1.h5','H5F_ACC_RDWR', 'H5P_DEFAULT');
gid = H5G.open(fid,'test1');
did = H5D.open(gid, 'Range');
sid = H5D.get_space(did);
[ndims dims maxdims] = H5S.get_simple_extent_dims(sid)
H5S.close(sid);
H5D.close(did);
H5G.close(gid);
H5F.close(fid);
------------------------------------------------------------------------
% OUTPUT
ndims = 2
dims = 2 307200
maxdims = 2 307200
% After change
ndims = 3
dims = 1200 2 256
maxdims = 1200 2 256
% After closed and re-opened
ndims = 2
dims = 2 307200
maxdims = 2 307200