📄 ex_lite1.c
字号:
/***************************************************************************** NCSA HDF ** Scientific Data Technologies ** National Center for Supercomputing Applications ** University of Illinois at Urbana-Champaign ** 605 E. Springfield, Champaign IL 61820 ** ** For conditions of distribution and use, see the accompanying ** hdf/COPYING f. ** *****************************************************************************/ #include "H5LT.h"#include "math.h"#define DATA_SIZE 1000000typedef struct {
double re; /*real part*/
double im; /*imaginary part*/
} complex_t;complex_t data[DATA_SIZE];int data1[DATA_SIZE];int main( void ){ hid_t file_id; hid_t group1,group2; hsize_t dims[1]; herr_t status; int i,j; char dset_name[100]; double attr_test[3]={1234.56789,1,2.3}; char str_data[256]; hid_t complex_id; //压缩试验而定义的变量 hid_t data_space, dataset32, properties;
unsigned szip_options_mask;
unsigned szip_pixels_per_block;
hsize_t chunk_size[2];
EXAMPLE("make a dataset"); //EXAMPLE 在H5LT.h 中定义,将字符输出 file_id = H5Fcreate ("h:\\ex_lite2.h5", H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); group1=H5Gcreate(file_id,"/Group1",0); group2=H5Gcreate(file_id,"/Group2",0); //创建自定义的结构 complex_id = H5Tcreate (H5T_COMPOUND, sizeof(complex_t));
H5Tinsert (complex_id, "real", HOFFSET(complex_t,re),
H5T_NATIVE_DOUBLE);
H5Tinsert (complex_id, "imaginary", HOFFSET(complex_t,im),
H5T_NATIVE_DOUBLE); for (j=0;j<DATA_SIZE;j++) {
data1[j]=rand();
} for (i=0;i<10000;i++) {
sprintf(dset_name,"dset%.8d",i); printf("%s\n",dset_name); /*for (j=0;j<DATA_SIZE;j++) {
data[j].im=i*i+j;
data[j].re=i*i+j-1;
data1[j]=rand();
} //*/ dims[0] =10;// DATA_SIZE; status = H5LTmake_dataset(group1,dset_name,1,dims,H5T_NATIVE_INT,data1); H5LTset_attribute_double(group1,dset_name,"Samplefreq",attr_test,3); H5LTset_attribute_string(group1,dset_name,"Note","this is a test. 这是一个例子"); H5LTget_attribute_string(group1,dset_name,"Note",str_data); printf("%s",str_data); dims[0] = DATA_SIZE; //试验压缩 data_space = H5Screate_simple (1, dims, NULL); chunk_size[0] = 10000;
//chunk_size[1] = CH_25;
properties = H5Pcreate (H5P_DATASET_CREATE);
H5Pset_chunk (properties, 1, chunk_size);
/*
* Set parameters for SZIP compression; check the description of
* the H5Pset_szip function in the HDF5 Reference Manual for more
* information.
*/
szip_options_mask=H5_SZIP_NN_OPTION_MASK;
szip_pixels_per_block=32;
H5Pset_szip (properties, szip_options_mask, szip_pixels_per_block);
dataset32=H5Dcreate(group2,dset_name,H5T_NATIVE_INT,data_space, properties); H5Dwrite (dataset32, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,H5P_DEFAULT, data1);
H5Dclose (dataset32);
H5Sclose (data_space);
H5Pclose (properties);
} H5Tclose(complex_id); H5Gclose(group1); H5Gclose(group2); status = H5Fclose (file_id); PASSED(); //PASSED 在H5LT.h 中定义,输出"Passed" getchar(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -