Package: libmatio0
Version: 1.3.3-5
Severity: normal

octave can't read compressed files written by libmatio.  I'm not sure
if this is a problem in libmatio or in octave, so feel free to
reassign as necessary.

The following program uses libmatio to write a simple data structure
to a compressed mat file:

#include <stdio.h>
#include <string.h>
#include <errno.h>

#include <matio.h>

#define NRSIGNALS 2
#define NRSAMPLES 100

int write_matfile( const char *fname )
{
        mat_t *mat = NULL;
        matvar_t **matchannels = NULL;

        mat = Mat_Open( fname, 0 );
        if ( mat==NULL )
        {
                fprintf( stderr, "Can't open file `%s' for output\n", fname );
                return 0;
        }

        /* allocate memory for the channels */
        matchannels = malloc( NRSIGNALS * sizeof(*matchannels) );

        /* create a structure for each channel */
        for ( int i = 0; i < NRSIGNALS; i++ )
        {
                int dims[2] = {1,1};
                matvar_t ** matdata = malloc( 2 * sizeof(*matdata) );

                matdata[0] = Mat_VarCreate( "channel",    MAT_C_INT16,  
MAT_T_INT16,  2, dims, &i, 0 );
                matdata[1] = NULL;

                matchannels[i] = Mat_VarCreate( "", MAT_C_STRUCT, MAT_T_STRUCT, 
2, dims, matdata, 0 );

        }

        /* the structures for the channels are combined into a single cell 
array */
        int dims[2] = {1,NRSIGNALS};
        matvar_t * matvar_cell = 
Mat_VarCreate("data",MAT_C_CELL,MAT_T_CELL,2,dims,matchannels,0);

        /* write the file to disk */
        Mat_VarWrite( mat, matvar_cell, COMPRESSION_ZLIB );
        //Mat_VarWrite( mat, matvar_cell, 0 );

        Mat_Close( mat );

        return 1;

}

int main()
{
        write_matfile( "/tmp/foo.mat" );
        return(0);
} 



Observe:

[...@basbak2]/tmp> gcc edf2mat.c -std=c99 -lmatio && ./a.out
[...@basbak2]/tmp> ls -la foo.mat
-rw-r--r-- 1 bas bas 215 nov 17 13:47 foo.mat
[...@basbak2]/tmp> file foo.mat
foo.mat: Matlab v5 mat-file (little endian) version 0x0100
[...@basbak2]/tmp> octave3.2 -q
octave3.2:1> load('foo.mat')
error: load: error uncompressing data element


The file loads fine in matlab.  If the file is written without
compression, it also loads fine in octave.



-- System Information:
Debian Release: 5.0.3
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.26-2-amd64 (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to