help-octave
[Top][All Lists]
Advanced

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

save -mat-binary


From: John W. Eaton
Subject: save -mat-binary
Date: Sat, 14 Jun 2003 16:43:07 -0500

On 14-Jun-2003, cctsim <address@hidden> wrote:

| I have files containing 1's and -1's 
| e.g.
| >> C=[1 1 -1];
| >> save -mat-binary test.mat C
| 
| A colleague using matlab (6.1) needs to load these files.
| However, If we try to open the files in matlab we get the following:
| >> load test.mat
| >> C
| C =
| 
|   1.0e-316 *
| 
|     0.8257         0         0
| 
| Saving the file using
|   >> save -mat4-binary test.mat C
| works fine.
| 
| I use octave 2.1.49. 

Can you please try the following patch and let me know if it solves
the problem?

Thanks,

jwe


src/ChangeLog:

2003-06-14  John W. Eaton  <address@hidden>

        * load-save.cc (get_save_type): Avoid all save types other than
        LS_DOUBLE to avoid apparent Matlab bugs.


Index: src/load-save.cc
===================================================================
RCS file: /usr/local/cvsroot/octave/src/load-save.cc,v
retrieving revision 1.169
diff -u -r1.169 load-save.cc
--- src/load-save.cc    28 May 2003 18:24:42 -0000      1.169
+++ src/load-save.cc    14 Jun 2003 21:42:22 -0000
@@ -3507,7 +3507,10 @@
 
   // Matlab doesn't seem to load the UINT32 type correctly, so let's
   // avoid it (and the other unsigned types, even though they may not
-  // have the same problem.
+  // have the same problem.  And apparently, there are problems with
+  // other smaller types as well.  If we avoid them all, then maybe we
+  // will avoid problems.  Unfortunately, we won't be able to save
+  // space...
 
   //  if (max_val < 256 && min_val > -1)
   //    st = LS_U_CHAR;
@@ -3515,14 +3518,12 @@
   //    st = LS_U_SHORT;
   //  else if (max_val < 4294967295UL && min_val > -1)
   //    st = LS_U_INT;
-  //  else
-
-  if (max_val < 128 && min_val >= -128)
-    st = LS_CHAR;
-  else if (max_val < 32768 && min_val >= -32768)
-    st = LS_SHORT;
-  else if (max_val <= 2147483647L && min_val >= -2147483647L)
-    st = LS_INT;
+  //  else if (max_val < 128 && min_val >= -128)
+  //    st = LS_CHAR;
+  //  else if (max_val < 32768 && min_val >= -32768)
+  //    st = LS_SHORT;
+  //  else if (max_val <= 2147483647L && min_val >= -2147483647L)
+  //    st = LS_INT;
 
   return st;
 }



-------------------------------------------------------------
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]