help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: structures in cell arrays


From: John W. Eaton
Subject: Re: structures in cell arrays
Date: Fri, 26 Sep 2003 15:28:21 -0500

On 26-Sep-2003, Paul Griffiths <address@hidden> wrote:

| Hi,
| Thanks for the patch - it did fix the indexing problem (although for some
| reason I could not apply the patch and had to edit load-save.cc manually.)
| 
| I found that not all cell arrays saved in MATLAB can be loaded in Octave.
| The example given before, X{2,2}.foo(2).bar(2:3,2:3) = rand(2), when saved
| in MATLAB, cannot be loaded into Octave. Even if we consider a simpler
| case, X{2,2} = 1;
| 
| >> X{2,2} = 1
| 
| X = 
| 
|      []     []
|      []    [1]
| 
| >> save x.mat X
| 
| And then we try to load this file in Octave,
| 
| octave-2.1.50:3> load x.mat
| error: load: invalid array flags subelement
| error: load: trouble reading binary file `x.mat'
| error: load: reading cell data for `'
| error: load: trouble reading binary file `x.mat'

Please try the following patch.

Thanks,

jwe


2003-09-26  John W. Eaton  <address@hidden>

        * load-save.cc (read_mat5_binary_element): Return early if the
        miMATRIX element has length zero.


Index: src/load-save.cc
===================================================================
RCS file: /usr/local/cvsroot/octave/src/load-save.cc,v
retrieving revision 1.173
diff -u -r1.173 load-save.cc
--- src/load-save.cc    19 Sep 2003 21:41:21 -0000      1.173
+++ src/load-save.cc    26 Sep 2003 20:27:36 -0000
@@ -2600,6 +2600,8 @@
   TWO_BYTE_INT number;
   number = *(TWO_BYTE_INT *)"\x00\x01";
 
+  global = false;
+
   // MAT files always use IEEE floating point
   if ((number == 1) ^ swap)
     flt_fmt = oct_mach_info::ieee_big_endian;
@@ -2615,6 +2617,13 @@
       error ("load: invalid element type");
       goto early_read_error;
     }
+
+  if (element_length == 0)
+    {
+      tc = Matrix ();
+      return retval;
+    }
+
   pos = is.tellg ();
 
   // array flags subelement



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]