File: io_fread.html

package info (click to toggle)
freemat 4.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 141,800 kB
  • ctags: 14,082
  • sloc: ansic: 126,788; cpp: 62,046; python: 2,080; perl: 1,255; sh: 1,146; yacc: 1,019; lex: 239; makefile: 100
file content (129 lines) | stat: -rw-r--r-- 6,901 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FreeMat: FREAD File Read Function</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">FreeMat
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('io_fread.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">FREAD File Read Function </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_io.html">Input/Ouput Functions</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>Reads a block of binary data from the given file handle into a variable of a given shape and precision. The general use of the function is </p>
<pre class="fragment">  A = fread(handle,size,precision)
</pre><p> The <code>handle</code> argument must be a valid value returned by the fopen function, and accessable for reading. The <code>size</code> argument determines the number of values read from the file. The <code>size</code> argument is simply a vector indicating the size of the array <code>A</code>. The <code>size</code> argument can also contain a single <code>inf</code> dimension, indicating that FreeMat should calculate the size of the array along that dimension so as to read as much data as possible from the file (see the examples listed below for more details). The data is stored as columns in the file, not rows.</p>
<p>Alternately, you can specify two return values to the <code>fread</code> function, in which case the second value contains the number of elements read </p>
<pre class="fragment">   [A,count] = fread(...)
</pre><p> where <code>count</code> is the number of elements in <code>A</code>.</p>
<p>The third argument determines the type of the data. Legal values for this argument are listed below: </p>
<ul>
<li>
'uint8','uchar','unsigned char' for an unsigned, 8-bit integer.  </li>
<li>
'int8','char','integer*1' for a signed, 8-bit integer.  </li>
<li>
'uint16','unsigned short' for an unsigned, 16-bit integer.  </li>
<li>
'int16','short','integer*2' for a signed, 16-bit integer.  </li>
<li>
'uint32','unsigned int' for an unsigned, 32-bit integer.  </li>
<li>
'int32','int','integer*4' for a signed, 32-bit integer.  </li>
<li>
'single','float32','float','real*4' for a 32-bit floating point.  </li>
<li>
'double','float64','real*8' for a 64-bit floating point.  </li>
</ul>
<p>Starting with FreeMat 4, the format for the third argument has changed. If you specify only a type, such as <code>'float'</code>, the data is read in as single precision, but the output type is always <code>'double'</code>. This behavior is consistent with Matlab. If you want the output type to match the input type (as was previous behavior in FreeMat), you must preface the precision string with a <code>'*'</code>. Thus, the precision string <code>'*float'</code> implies that data is read in as single precision, and the output is also single precision.</p>
<p>The third option is to specify the input and output types explicitly. You can do this by specifiying a precision string of the form <code>'type1 =&gt; type2'</code>, where <code>'type1'</code> is the input type and <code>'type2'</code> is the output type. For example, if the input type is <code>'double'</code> and the output type is to be a <code>'float'</code>, then a type spec of <code>'double =&gt; float'</code> should be used.</p>
<h1><a class="anchor" id="Example"></a>
Example</h1>
<p>First, we create an array of <code>512 x 512</code> Gaussian-distributed <code>float</code> random variables, and then writing them to a file called <code>test.dat</code>.</p>
<pre class="fragment">--&gt; A = float(randn(512));
--&gt; fp = fopen('test.dat','w');
--&gt; fwrite(fp,A);
--&gt; fclose(fp);
</pre><p>Read as many floats as possible into a row vector</p>
<pre class="fragment">--&gt; fp = fopen('test.dat','r');
--&gt; x = fread(fp,[1,inf],'float');
--&gt; fclose(fp);
--&gt; who x
  Variable Name       Type   Flags             Size
              x    double                    [1x262144]
</pre><p>Note that <code>x</code> is a <code>double</code> array. This behavior is new to FreeMat 4. Read the same floats into a 2-D float array.</p>
<pre class="fragment">--&gt; fp = fopen('test.dat','r');
--&gt; x = fread(fp,[512,inf],'float');
--&gt; fclose(fp);
--&gt; who x
  Variable Name       Type   Flags             Size
              x    double                    [512x512]
</pre><p>To read them as a single precision float array, we can use the following form:</p>
<pre class="fragment">--&gt; fp = fopen('test.dat','r');
--&gt; x = fread(fp,[512,inf],'*float');
--&gt; fclose(fp);
--&gt; who x
  Variable Name       Type   Flags             Size
              x    single                    [512x512]
</pre> </div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_io.html">Input/Ouput Functions</a></li>
    <li class="footer">Generated on Thu Jul 25 2013 17:17:38 for FreeMat by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
  </ul>
</div>
</body>
</html>