Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1998
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1998

[Date Index] [Thread Index] [Author Index]

Search the Archive

Binary Files

  • To: mathgroup at smc.vnet.net
  • Subject: [mg13904] Binary Files
  • From: Jason Gill <jgill at vbimail.champlain.edu>
  • Date: Sun, 6 Sep 1998 02:55:41 -0400
  • Organization: IBM Microelectronics
  • Sender: owner-wri-mathgroup at wolfram.com

    I am using the following function to read binary files.  I would not
consider the data files very large, and yet the process is extremely
slow.  I am running Mathematica 3.0 for win95.  I have installed the
MathLink program FastReadBinary Files, which help a ton, but it is
still to slow.  The net is I use this function on multiple files to
create a three dimensional data matrix with Dimensions on the order of
[6,1000,300].  Mathematica handles the data O.K., once loaded but the
loading takes to long.  For the aforementioned matrix,  loading the
files can take upwards of 15 minutes.  Which seems excessie to me.
 Using the timming function, the largest consumer of time is the actual
binary read. Does anyone have any suggestions? I also have access to
Mathematica (3.0)  running on an RS/6000 is there a Mathlink equivalent
to Fast Read Binary available for this platform? Any suggestions would
be greatly appreciated.

Options[ReadandConvertLMX]={SetDirPath->"d:\lmxdata\janussq"};


 ReadandConvertLMX[filename_,opts___]:=
Module[{inline,setpath,convert6,waste,
  },
directory=SetDirPath /. {opts} /. Options[ReadandConvertLMX];
SetDirectory[directory];
  inline = OpenReadBinary[filename];
 {modules,parameters,timestep,powerHour}=
      ReadListBinary[inline,Int16,4,
ByteOrder->MostSignificantByteFirst];
waste=ReadListBinary[inline,Byte,120];
data=ReadListBinary[inline,Byte];
data=Take[Partition[data,4],(modules*parameters)]; Close[inline];
ResetDirectory[];
convert6 = Compile[{b1, b2, b3, b4},  If[b1 < 128,
    (b2*256^2+b3*256+b4)/256^3  16^(b1-64),
         -(b2*256^2+b3*256+b4)/256^3 16^(b1-192)]]; ResetDirectory[];
data=Transpose[Partition[Apply[convert6,data,2],parameters]];
Dimensions[data]];




--
Jason Gill
IBM Microelectronics
Essex Junction, VT 05452
Phone   (802)769-3350
Fax     (802)769-1220
email:  jgill at vbimail.champlain.edu



  • Prev by Date: Vectors (other problem)
  • Next by Date: RE: Structure modification and related questions
  • Previous by thread: Re: Vectors (other problem)
  • Next by thread: Re: Binary Files