Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
HDF5 Hight Level API

Subject: HDF5 Hight Level API

From: meng long

Date: 12 May, 2009 12:57:01

Message: 1 of 7

I want to know when "HDF5 Hight Level API" is available in Matlab.

Subject: HDF5 Hight Level API

From: Ashish Uthama

Date: 13 May, 2009 20:44:38

Message: 2 of 7

On Tue, 12 May 2009 08:57:01 -0400, meng long <menglong6518@yeah.net>
wrote:

> I want to know when "HDF5 Hight Level API" is available in Matlab.


Meng,

Could you tell more?

I guess I would call HDF5READ and HDF5WRITE high level, not sure what you
are looking for.

Subject: HDF5 Hight Level API

From: meng long

Date: 14 May, 2009 09:19:01

Message: 3 of 7

Dear Sir:

Thanks for your answer.

I want to use H5TBmake_table, and so on.

HDF5 is promoted quiker than HDF5 supported in Matlab.

I hope that I can use HDF5_new_features in Matlab by constructing

some code "@H5TB" similar with "@H5F".

meng long

Look forward.

Subject: HDF5 Hight Level API

From: meng long

Date: 20 Jun, 2009 16:22:01

Message: 4 of 7

"Ashish Uthama" <first.last@mathworks.com> wrote in message <op.utvykoyza5ziv5@uthamaa.dhcp.mathworks.com>...
> On Tue, 12 May 2009 08:57:01 -0400, meng long <menglong6518@yeah.net>
> wrote:
>
> > I want to know when "HDF5 Hight Level API" is available in Matlab.
>
>
> Meng,
>
> Could you tell more?
>
> I guess I would call HDF5READ and HDF5WRITE high level, not sure what you
> are looking for.

 sDset.Location = '/Qut/Day/Sh/Idx';
  sDset.Name = '123456';
  hdf5write('fTest.H5',sDset,sObj,'writemode','overwrite');

The 'hdf5write', as above, overwrite 'fTest.H5', not the dataset '123456' as expected.
How to overwrite a dataset?

I hope that Matlab surports 'HDF5' deeply and quickly, surports 'H5TB' etc., since 'Matlab Hight Level Functions for HDF5' are not enought in Industry-Application, and 'Malab Low Level Functions for HDF5' are too slow to deal with compound type in Industry-Application of a large of tables.

Subject: HDF5 Hight Level API

From: Ashish Uthama

Date: 22 Jun, 2009 13:31:27

Message: 5 of 7

On Sat, 20 Jun 2009 12:22:01 -0400, meng long <menglong6518@yeah.net>
wrote:

> "Ashish Uthama" <first.last@mathworks.com> wrote in message
> <op.utvykoyza5ziv5@uthamaa.dhcp.mathworks.com>...
>> On Tue, 12 May 2009 08:57:01 -0400, meng long <menglong6518@yeah.net>
>> wrote:
>>
>> > I want to know when "HDF5 Hight Level API" is available in Matlab.
>>
>>
>> Meng,
>>
>> Could you tell more?
>>
>> I guess I would call HDF5READ and HDF5WRITE high level, not sure what
>> you
>> are looking for.
>
> sDset.Location = '/Qut/Day/Sh/Idx';
> sDset.Name = '123456';
> hdf5write('fTest.H5',sDset,sObj,'writemode','overwrite');
>
> The 'hdf5write', as above, overwrite 'fTest.H5', not the dataset
> '123456' as expected.
> How to overwrite a dataset?
>
> I hope that Matlab surports 'HDF5' deeply and quickly, surports 'H5TB'
> etc., since 'Matlab Hight Level Functions for HDF5' are not enought in
> Industry-Application, and 'Malab Low Level Functions for HDF5' are too
> slow to deal with compound type in Industry-Application of a large of
> tables.

Meng,

Yes, as the document mentions, 'overwrite' will overwrite the entire
contents of the file.

To overwrite a specific dataset, just write to it again:

>> hdf5write('myfile.h5', '/dataset1', uint8(5))
>> hdf5read('myfile.h5','/dataset1')

ans =

     5

>> hdf5write('myfile.h5', '/dataset1', uint8(10))
>> hdf5read('myfile.h5','/dataset1')

ans =

    10


Could you please elaborate on your use of compound type and tables?
 

Subject: HDF5 Hight Level API

From: meng long

Date: 22 Jun, 2009 18:17:01

Message: 6 of 7

"meng long" <menglong6518@yeah.net> wrote in message <gubrmt$g57$1@fred.mathworks.com>...
> I want to know when "HDF5 Hight Level API" is available in Matlab.

Dear Sir:

Thanks, I am glad to meet you for discussing HDF5 in deep case.

My table, for example, includes many columns "dOpnP,dClsP,dHgtP,dLowP,dVol,dMny" etc. which is used in financial-time-series application. For this practical application, many
different-type tables are dealt with.

H5TB as HDF5 hight level API, is somewhat a good case for my tables, except that I
cannot add attributes to the H5TB tables, inputs as 'Start, NRecords' in HDF5 hight level functions are difficult to used in financial-time-series application.

I have try to code a 'H5TB' in matlab completely by using Matlab_Low_Level_Fuctions for HDF5, but 'my successful codes' is so slowly in reading data from the tables. For example, reading some data from 300 tables (100k each table) consumes 7-8 seconds, which is 5-6 times than loading 300 mat files storaged same data. The main seconds is consumed in communicating with hdf5lib2, in calling mex functions, etc.. In a word, The main seconds is consumed in communicating with HDF5.

As a conclusion, it is not practical to construct a complex table_system by using Matlab_Low_Level_Fuctions for HDF5.

I have also try to code a complex table_system by using Matlab_Hight_Level_Fuctions for HDF5, but I give up, since hdf5write and hdf5read can be used in a simple application only, and is not flexible to a complex application.

I have try to code a complex table_system By SQL in matlab. Although, matlab is able to communicate with SQL (i.e, MS SQL)。 However, the communication has a low
effective. I give up the slection. Now, I work up on the mat files.

I hope that I work up on a Matlab_H5TB having same effective as mat files in recent future.

your friend
menglong

Subject: HDF5 Hight Level API

From: Vitezslav

Date: 9 Oct, 2009 09:50:03

Message: 7 of 7

> Meng,
>
> Yes, as the document mentions, 'overwrite' will overwrite the entire
> contents of the file.
>
> To overwrite a specific dataset, just write to it again:
>
> >> hdf5write('myfile.h5', '/dataset1', uint8(5))
> >> hdf5read('myfile.h5','/dataset1')
>
> ans =
>
> 5
>
> >> hdf5write('myfile.h5', '/dataset1', uint8(10))
> >> hdf5read('myfile.h5','/dataset1')
>
> ans =
>
> 10

hello,
maybe I miss the point, but IMHO the above example
overwrites the entire contents of the file too.
An example with two datasets:

>> hdf5write('myfile.h5', '/dataset1', uint8(5))
>> hdf5write('myfile.h5', '/dataset2', uint8(5),'WriteMode', 'append')

you have NO possibility to change the values of dataset1 without destroying dataset2:

1. try WriteMode append:
>> hdf5write('myfile.h5', '/dataset1', uint8(10),'WriteMode', 'append')
??? Error using ==> hdf5writec
writeH5Dset: Dataset names must be unique when appending data.

2. without try WriteMode append (default mode is 'overwrite')
>> hdf5write('myfile.h5', '/dataset1', uint8(10))
>> hdf5read('myfile.h5','/dataset1')
ans =
   10
>> hdf5read('myfile.h5','/dataset2')
??? Error using ==> hdf5readc
/dataset2 is not a dataset.

that means that the entire contents of the file was rewritten,
not only the specific dataset1.

with best wishes
vita

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us