⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex_lite1.c

📁 在雷达遥感等方面应用的hdf5数据格式的编程源代码
💻 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 + -