Hi Simon,

On Sep 13, 2010, at 1:19 PM, Simon R. Proud wrote:

> Thanks for your response.
> 
> So rather then creating a theoretical 2000x2200 array I should instead create 
> a single 4400000 array?

        Yup.  Or, I suppose, you could have many calls to H5Dwrite(), but I 
wouldn't suggest that.

                Quincey

> Simon.
> 
> >>> Quincey Koziol <[email protected]> 09/13/10 12:28 PM >>>
> Hi,
>     Your alloc_f_2dim() routine is allocating a nested 2-D array of 
> pointers-to-arrays, instead of a contiguous 2-D array of shorts. It's likely 
> that changing that will address your problem.
> 
>     Quincey
> 
> On Sep 13, 2010, at 12:05 PM, Simonpro wrote:
> 
> > 
> > Hi all,
> > I've just started using the HDF5 C interface and I've been having a few
> > problems. I'm sure it's some simple thing that I've overlooked, but it'd be
> > great if you guys could help find what I've done wrong!!
> > 
> > I can read data with no problems, but when I want to write my results to an
> > HDF5 file things go wrong. I'm trying to write a 2000x2200 array, but the
> > lines being output to the H5 file are not what I expect.
> > I have created an example that is supposed to write the line number to each
> > column in an H5 file (datatype: H5T_NATIVE_USHORT) but rather than the
> > expected results I get something like this:
> > 0    0    0    0    0    0    0 .....
> > 0    0    4009    0    1    1    1 .....
> > 1    1    1    1    0    0    4009 .....
> > 2    2    2    2    2    2    2 .....
> > 3    3    3    3    3    3    3 .....
> > 
> > The '4009' moves 4 columns to the right with each line.
> > 
> > Any ideas what the problem could be? The same issue exists (with different
> > numbers, of course) when I try with a floating point data type.
> > 
> > I've included the sample code I used to generate the data below. Originally
> > there was lots of error checking (based on the status returned from the HDF
> > commands) for each step of the HDF process, but for brevity I remove those
> > checks as they showed no problems:
> > 
> > 
> > 
> > #include <stdlib.h>
> > #include <hdf5.h>
> > 
> > int Save_f_Data(hid_t,char *,short unsigned int **,int,int);
> > void alloc_f_2dim (short unsigned int ***,int,int);
> > 
> > int main()
> > {
> >     char *name="TESTARR";
> >     int xsize=2200;
> >     int ysize=2000;    
> >     int retval;    
> >     hid_t outfile;
> >     herr_t    status;
> >         
> > 
> > outfile=H5Fcreate("/home/simon/Desktop/TEST/outtest.h5",H5F_ACC_TRUNC,H5P_DEFAULT,H5P_DEFAULT);
> >     short unsigned int **testarr;
> >     int i,j;    
> >     
> >     alloc_f_2dim (&testarr,xsize,ysize);
> >     for (i=0;i<xsize;i++)    for (j=0;j<ysize;j++) testarr[i][j]=i;
> >     
> >     retval=Save_f_Data(outfile,name,testarr,xsize,ysize);
> >     status=H5Fclose(outfile);
> > 
> >     printf("Running!\n");
> >     return 0;
> > }
> > 
> > int Save_f_Data(hid_t outfile,char *setname,short unsigned int **
> > procarr,int xsize, int ysize)
> > {
> > 
> >     herr_t     status;
> >     hid_t    dataspace,dataset,datatype;
> >     hsize_t dims[2]={xsize,ysize};
> >     
> >     dataspace=H5Screate_simple(2,dims,dims);
> >     
> > dataset=H5Dcreate(outfile,setname,H5T_NATIVE_USHORT,dataspace,H5P_DEFAULT);
> > 
> > 
> > status=H5Dwrite(dataset,H5T_NATIVE_USHORT,H5S_ALL,H5S_ALL,H5P_DEFAULT,procarr[0]);
> >     
> >     status=H5Sclose(dataspace);
> >     status=H5Dclose(dataset);
> >     return 0;
> > } 
> > 
> > void alloc_f_2dim (short unsigned int ***ptr,int nrh,int nch)
> > {
> > int i = 0;
> > short unsigned int **p = NULL;
> > 
> > p = (short unsigned int **) calloc ((nrh + 1), sizeof (short unsigned int
> > *));
> > if (!p) {
> > fprintf(stderr,"allocation failure dim0 in alloc_d_2dim()");
> >          
> > }
> > for (i = 0; i <= nrh; i++) {
> > p[i] = (short unsigned int *) calloc ((nch + 1), sizeof (short
> > unsigned int));
> > if (!p[i]) {
> >      fprintf(stderr,"allocation dim1 in alloc_d_2dim()");
> >          
> > }
> > }
> > *ptr = p;
> > return;
> > }
> > -- 
> > View this message in context: 
> > http://hdf-forum.184993.n3.nabble.com/Problem-writing-array-to-an-HDF5-file-tp1464609p1464609.html
> > Sent from the hdf-forum mailing list archive at Nabble.com.
> > 
> > _______________________________________________
> > Hdf-forum is for HDF software users discussion.
> > [email protected]
> > http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
> 
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to