Mercurial > octave-nkf
annotate scripts/io/importdata.m @ 18532:87dfe4892ef9 stable
importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
* importdata.m: Use '-' as the first character in a character class to
prevent it being interpreted as defining a range.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 28 Feb 2014 16:55:26 -0800 |
parents | 95412dcfa707 |
children | fcd87f68af4f 8d7e760bfa68 |
rev | line source |
---|---|
16768 | 1 ## Copyright (C) 2012-2013 Erik Kjellson |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
2 ## |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
3 ## This file is part of Octave. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
4 ## |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
8 ## your option) any later version. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
9 ## |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
13 ## General Public License for more details. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
14 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
18 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
20 ## @deftypefn {Function File} {@var{A} =} importdata (@var{fname}) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
21 ## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter}) |
15847
13d1e9bfa362
doc: small fixes for impordata
Carnë Draug <carandraug+dev@gmail.com>
parents:
15619
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter}, @var{header_rows}) |
13d1e9bfa362
doc: small fixes for impordata
Carnë Draug <carandraug+dev@gmail.com>
parents:
15619
diff
changeset
|
23 ## @deftypefnx {Function File} {[@var{A}, @var{delimiter}] =} importdata (@dots{}) |
13d1e9bfa362
doc: small fixes for impordata
Carnë Draug <carandraug+dev@gmail.com>
parents:
15619
diff
changeset
|
24 ## @deftypefnx {Function File} {[@var{A}, @var{delimiter}, @var{header_rows}] =} importdata (@dots{}) |
17358 | 25 ## Import data from the file @var{fname}. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
26 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
27 ## Input parameters: |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16768
diff
changeset
|
28 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
29 ## @itemize |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
30 ## @item @var{fname} |
17358 | 31 ## The name of the file containing data. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
32 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
33 ## @item @var{delimiter} |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16768
diff
changeset
|
34 ## The character separating columns of data. Use @code{\t} for tab. |
17358 | 35 ## (Only valid for ASCII files) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
36 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
37 ## @item @var{header_rows} |
17358 | 38 ## The number of header rows before the data begins. (Only valid for ASCII |
39 ## files) | |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
40 ## @end itemize |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
41 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
42 ## Different file types are supported: |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16768
diff
changeset
|
43 ## |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
44 ## @itemize |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
45 ## @item ASCII table |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
46 ## |
17358 | 47 ## Import ASCII table using the specified number of header rows and |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
48 ## the specified delimiter. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
49 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
50 ## @item Image file |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
51 ## |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
16768
diff
changeset
|
52 ## @item @sc{matlab} file |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
53 ## |
15551
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
54 ## @item Spreadsheet files (depending on external software) |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
55 ## |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
56 ## @item WAV file |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
57 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
58 ## @end itemize |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
59 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
60 ## @seealso{textscan, dlmread, csvread, load} |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
61 ## @end deftypefn |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
62 |
16768 | 63 ## Author: Erik Kjellson <erikiiofph7@users.sourceforge.net> |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
64 |
17358 | 65 function [output, delimiter, header_rows] = importdata (fname, delimiter = "", header_rows = -1) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
66 |
17358 | 67 if (nargin < 1 || nargin > 3) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
68 print_usage (); |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
69 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
70 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
71 if (! ischar (fname)) |
17358 | 72 error ("importdata: FNAME must be a string"); |
73 elseif (strcmpi (fname, "-pastespecial")) | |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
74 error ("importdata: option -pastespecial not implemented"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
75 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
76 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
77 if (nargin > 1) |
17358 | 78 if (! ischar (delimiter) |
79 || (length (delimiter) > 1 && ! strcmp (delimiter, '\t'))) | |
80 error("importdata: DELIMITER must be a single character"); | |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
81 endif |
17358 | 82 if (strcmp (delimiter, '\t')) |
83 delimiter = "\t"; | |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
84 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
85 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
86 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
87 if (nargin > 2) |
17358 | 88 if (! isnumeric (header_rows) || header_rows < 0 |
89 || header_rows != fix (header_rows)) | |
90 error ("importdata: HEADER_ROWS must be an integer >= 0"); | |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
91 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
92 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
93 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
94 ## Check file format |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
95 ## Get the extension from the file name. |
17358 | 96 [~, ~, ext, ~] = fileparts (fname); |
97 ext = lower (ext); | |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
98 |
17358 | 99 switch (ext) |
100 case {".au", ".snd", ".flac", ".ogg"} | |
101 error ("importdata: not implemented for file format %s", ext); | |
102 case {".avi", ".mj2", ".mpg", ".asf", ".asx", ".wmv", ".mp4", ".m4v", ... | |
103 ".mov"} | |
104 error ("importdata: not implemented for file format %s", ext); | |
17245
7babcdb9bc13
Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents:
16933
diff
changeset
|
105 case {".bmp", ".cur", ".gif", ".hdf", ".ico", ".jpe", ".jpeg", ".jpg", ... |
17358 | 106 ".jp2", ".jpf", ".jpx", ".j2c", ".j2k", ".pbm", ".pcx", ".pgm", ... |
107 ".png", ".pnm", ".ppm", ".ras", ".tif", ".tiff", ".xwd"} | |
108 delimiter = NaN; | |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
109 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
110 [output.cdata, output.colormap, output.alpha] = imread (fname); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
111 case ".mat" |
17358 | 112 delimiter = NaN; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
113 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
114 output = load (fname); |
17358 | 115 case {".xls", ".xlsx", ".wk1", ".dbf", ".pxl"} |
15551
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
116 ## If there's no Excel file support simply fall back to unimplemented.m |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
117 output = xlsread (fname); |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
118 case {".ods", ".sxc", ".fods", ".uos", ".xml"} |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
119 ## unimplemented.m only knows ML functions; odsread isn't one but is in OF |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
120 try |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
121 output = odsread (fname); |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
122 catch |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
123 ## Fall back to unimplemented.m. |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
124 output = xlsread (fname); |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
125 end_try_catch |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
126 case {".wav", ".wave"} |
17358 | 127 delimiter = NaN; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
128 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
129 [output.data, output.fs] = wavread (fname); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
130 otherwise |
17358 | 131 ## Assume the file is in ASCII format. |
17245
7babcdb9bc13
Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents:
16933
diff
changeset
|
132 [output, delimiter, header_rows] = ... |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
133 importdata_ascii (fname, delimiter, header_rows); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
134 endswitch |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
135 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
136 ## If there are any empty fields in the output structure, then remove them |
17358 | 137 if (isstruct (output) && numel (output) == 1) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
138 fields = fieldnames (output); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
139 for i=1:length (fields) |
17358 | 140 if (isempty (output.(fields{i}))) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
141 output = rmfield (output, fields{i}); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
142 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
143 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
144 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
145 ## If only one field is left, replace the structure with the field, |
17358 | 146 ## i.e., output = output.onlyFieldLeft |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
147 |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
148 ## Update the list of fields |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
149 fields = fieldnames (output); |
17358 | 150 if (numel (fields) == 1) |
151 output = output.(fields{1}); | |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
152 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
153 endif |
17358 | 154 |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
155 endfunction |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
156 |
17358 | 157 function [output, delimiter, header_rows] = importdata_ascii (fname, delimiter, num_header_rows) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
158 |
17358 | 159 ## Define fields in the output structure so that the order will be correct. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
160 output.data = []; |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
161 output.textdata = {}; |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
162 output.rowheaders = {}; |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
163 output.colheaders = {}; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
164 |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
165 [fid, msg] = fopen (fname, "r"); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
166 if (fid == -1) |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
167 error (msg); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
168 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
169 |
17358 | 170 header_rows = 0; |
171 header_cols = 0; | |
172 | |
173 ## Work through first few rows line by line until a delimiter is found. | |
174 while (ischar (row = fgetl (fid))) | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
175 |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
176 ## If no delimiter determined yet, make a guess. |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
177 if (isempty (delimiter)) |
17358 | 178 ## This pattern can be fooled, but mostly does the job just fine. |
18532
87dfe4892ef9
importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
Rik <rik@octave.org>
parents:
17358
diff
changeset
|
179 delim = regexp (row, '[-+\d.eE*ij ]+([^-+\d.ij])[-+\d.ij]', |
87dfe4892ef9
importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
Rik <rik@octave.org>
parents:
17358
diff
changeset
|
180 'tokens', 'once'); |
87dfe4892ef9
importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
Rik <rik@octave.org>
parents:
17358
diff
changeset
|
181 #delim = regexp (row, '[+-\d.eE\*ij ]+([^+-\d.ij])[+-\d.ij]', |
87dfe4892ef9
importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
Rik <rik@octave.org>
parents:
17358
diff
changeset
|
182 # 'tokens', 'once'); |
17358 | 183 if (! isempty (delim)) |
184 delimiter = delim{1}; | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
185 endif |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
186 endif |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
187 |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
188 if (delimiter == " ") |
17358 | 189 row_entries = regexp (strtrim (row), ' +', 'split'); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
190 else |
17358 | 191 row_entries = ostrsplit (row, delimiter); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
192 endif |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
193 row_data = str2double (row_entries); |
17358 | 194 if (all (isnan (row_data)) || header_rows < num_header_rows) |
195 header_rows++; | |
196 output.textdata{end+1, 1} = row; | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
197 else |
17358 | 198 if (! isempty (output.textdata)) |
199 if (delimiter == " ") | |
200 output.colheaders = regexp (strtrim (output.textdata{end}), | |
201 ' +', 'split'); | |
202 else | |
203 output.colheaders = ostrsplit (output.textdata{end}, delimiter); | |
204 endif | |
205 endif | |
206 header_cols = find (! isnan (row_data), 1) - 1; | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
207 ## The number of header rows and header columns is now known. |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
208 break; |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
209 endif |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
210 |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
211 endwhile |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
212 |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
213 fclose (fid); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
214 |
17358 | 215 if (row == -1) |
216 error ("importdata: Unable to determine delimiter"); | |
217 endif | |
218 if (num_header_rows >= 0) | |
219 header_rows = num_header_rows; | |
220 endif | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
221 |
17358 | 222 ## Now, let the efficient built-in routine do the bulk of the work. |
223 if (delimiter == " ") | |
224 output.data = dlmread (fname, "", header_rows, header_cols, | |
225 "emptyvalue", NA); | |
226 else | |
227 output.data = dlmread (fname, delimiter, header_rows, header_cols, | |
228 "emptyvalue", NA); | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
229 endif |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
230 |
17358 | 231 ## Go back and correct any individual values that did not convert. |
232 na_idx = isna (output.data); | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
233 if (header_cols > 0) |
17358 | 234 na_idx = [(true (rows (na_idx), header_cols)), na_idx]; |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
235 endif |
17358 | 236 if (any (na_idx(:))) |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
237 |
17358 | 238 file_content = ostrsplit (fileread (fname), "\n"); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
239 |
17358 | 240 na_rows = find (any (na_idx, 2)); |
241 for ridx = na_rows(:)' | |
242 row = file_content{ridx+header_rows}; | |
243 if (delimiter == " ") | |
244 fields = regexp (strtrim (row), ' +', 'split'); | |
245 else | |
246 fields = ostrsplit (row, delimiter); | |
247 endif | |
248 | |
249 text = fields(na_idx(ridx,:)); | |
250 text = text(! strcmpi (text, "NA")); # Remove valid "NA" entries | |
251 if (! isempty (text)) | |
252 output.textdata(end+1:end+numel (text), 1) = text; | |
253 endif | |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
254 if (header_cols) |
17358 | 255 output.rowheaders(end+1, :) = fields(1:header_cols); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
256 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
257 endfor |
17358 | 258 |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
259 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
260 |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
261 ## Final cleanup to satisfy output configuration |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
262 if (all (cellfun ("isempty", output.textdata))) |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
263 output = output.data; |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
264 elseif (! isempty (output.rowheaders) && ! isempty (output.colheaders)) |
17358 | 265 output = struct ("data", {output.data}, "textdata", {output.textdata}); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
266 endif |
15557
13206177060b
importdata.m: 3X speedup by using str2double rather than num2str.
Rik <rik@octave.org>
parents:
15555
diff
changeset
|
267 |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
268 endfunction |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
269 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
270 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
271 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
272 %! ## Comma separated values |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
273 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
274 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
275 %! fid = fopen (fn, "w"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
276 %! fputs (fid, "3.1,-7.2,0\n0.012,6.5,128"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
277 %! fclose (fid); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
278 %! [a1,d1,h1] = importdata (fn, ","); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
279 %! [a2,d2,h2] = importdata (fn); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
280 %! unlink (fn); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
281 %! assert (a1, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
282 %! assert (d1, ","); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
283 %! assert (h1, 0); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
284 %! assert (a2, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
285 %! assert (d2, ","); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
286 %! assert (h2, 0); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
287 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
288 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
289 %! ## Tab separated values |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
290 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
291 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
292 %! fid = fopen (fn, "w"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
293 %! fputs (fid, "3.1\t-7.2\t0\n0.012\t6.5\t128"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
294 %! fclose (fid); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
295 %! [a1,d1,h1] = importdata (fn, "\t"); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
296 %! [a2,d2,h2] = importdata (fn); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
297 %! unlink (fn); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
298 %! assert (a1, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
299 %! assert (d1, "\t"); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
300 %! assert (h1, 0); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
301 %! assert (a2, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
302 %! assert (d2, "\t"); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
303 %! assert (h2, 0); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
304 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
305 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
306 %! ## Space separated values, using multiple spaces to align in columns. |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
307 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
308 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
309 %! fid = fopen (fn, "w"); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
310 %! fprintf (fid, "%10.3f %10.3f %10.3f\n", A'); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
311 %! fclose (fid); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
312 %! [a1,d1,h1] = importdata (fn, " "); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
313 %! [a2,d2,h2] = importdata (fn); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
314 %! unlink (fn); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
315 %! assert (a1, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
316 %! assert (d1, " "); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
317 %! assert (h1, 0); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
318 %! assert (a2, A); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
319 %! assert (d2, " "); |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
320 %! assert (h2, 0); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
321 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
322 %!test |
17358 | 323 %! ## No separator, 1 column of data only |
324 %! A = [3.1;-7.2;0;0.012;6.5;128]; | |
325 %! fn = tmpnam (); | |
326 %! fid = fopen (fn, "w"); | |
327 %! fprintf (fid, "%f\n", A); | |
328 %! fclose (fid); | |
329 %! [a1,d1,h1] = importdata (fn, ""); | |
330 %! [a2,d2,h2] = importdata (fn); | |
331 %! unlink (fn); | |
332 %! assert (a1, A); | |
333 %! assert (d1, ""); | |
334 %! assert (h1, 0); | |
335 %! assert (a2, A); | |
336 %! assert (d2, ""); | |
337 %! assert (h2, 0); | |
338 | |
339 %!test | |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
340 %! ## Header text |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
341 %! A.data = [3.1 -7.2 0; 0.012 6.5 128]; |
17245
7babcdb9bc13
Use ... instead of \ for line continuation marker.
Stefan Mahr <dac922@gmx.de>
parents:
16933
diff
changeset
|
342 %! A.textdata = {"This is a header row."; ... |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
343 %! "this row does not contain any data, but the next one does."}; |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
344 %! A.colheaders = A.textdata (2); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
345 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
346 %! fid = fopen (fn, "w"); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
347 %! fprintf (fid, "%s\n", A.textdata{:}); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
348 %! fputs (fid, "3.1\t-7.2\t0\n0.012\t6.5\t128"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
349 %! fclose (fid); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
350 %! [a,d,h] = importdata (fn, '\t'); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
351 %! unlink (fn); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
352 %! assert (a, A); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
353 %! assert (d, "\t"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
354 %! assert (h, 2); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
355 |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
356 %!test |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
357 %! ## Column headers, only last row is returned in colheaders |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
358 %! A.data = [3.1 -7.2 0; 0.012 6.5 128]; |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
359 %! A.textdata = {"Label1\tLabel2\tLabel3"; |
17358 | 360 %! "col 1\tcol 2\tcol 3"}; |
361 %! A.colheaders = {"col 1", "col 2", "col 3"}; | |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
362 %! fn = tmpnam (); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
363 %! fid = fopen (fn, "w"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
364 %! fprintf (fid, "%s\n", A.textdata{:}); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
365 %! fputs (fid, "3.1\t-7.2\t0\n0.012\t6.5\t128"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
366 %! fclose (fid); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
367 %! [a,d,h] = importdata (fn, '\t'); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
368 %! unlink (fn); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
369 %! assert (a, A); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
370 %! assert (d, "\t"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
371 %! assert (h, 2); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
372 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
373 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
374 %! ## Row headers |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
375 %! A.data = [3.1 -7.2 0; 0.012 6.5 128]; |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
376 %! A.textdata = {"row1"; "row2"}; |
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
377 %! A.rowheaders = A.textdata; |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
378 %! fn = tmpnam (); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
379 %! fid = fopen (fn, "w"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
380 %! fputs (fid, "row1\t3.1\t-7.2\t0\nrow2\t0.012\t6.5\t128"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
381 %! fclose (fid); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
382 %! [a,d,h] = importdata (fn, '\t'); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
383 %! unlink (fn); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
384 %! assert (a, A); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
385 %! assert (d, "\t"); |
17357
44624eb20076
Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents:
17325
diff
changeset
|
386 %! assert (h, 0); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
387 |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
388 %!test |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
389 %! ## Row/Column headers and Header Text |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
390 %! A.data = [3.1 -7.2 0; 0.012 6.5 128]; |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
391 %! A.textdata = {"This is introductory header text" |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
392 %! " col1 col2 col3" |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
393 %! "row1" |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
394 %! "row2"}; |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
395 %! fn = tmpnam (); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
396 %! fid = fopen (fn, "w"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
397 %! fprintf (fid, "%s\n", A.textdata{1:2}); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
398 %! fputs (fid, "row1\t3.1\t-7.2\t0\nrow2\t0.012\t6.5\t128"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
399 %! fclose (fid); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
400 %! [a,d,h] = importdata (fn, '\t'); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
401 %! unlink (fn); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
402 %! assert (a, A); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
403 %! assert (d, "\t"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
404 %! assert (h, 2); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
405 |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
406 %!test |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
407 %! ## Ignore empty rows containing only spaces |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
408 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
409 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
410 %! fid = fopen (fn, "w"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
411 %! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(1,:)); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
412 %! fputs (fid, " "); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
413 %! fprintf (fid, "%10.3f %10.3f %10.3f\n", A(2,:)); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
414 %! fclose (fid); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
415 %! [a,d,h] = importdata (fn, " "); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
416 %! unlink (fn); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
417 %! assert (a, A); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
418 %! assert (d, " "); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
419 %! assert (h, 0); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
420 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
421 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
422 %! ## Exponentials |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
423 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
424 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
425 %! fid = fopen (fn, "w"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
426 %! fputs (fid, "+3.1e0\t-72E-1\t0\n12e-3\t6.5\t128"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
427 %! fclose (fid); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
428 %! [a,d,h] = importdata (fn, '\t'); |
15619
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
429 %! unlink (fn); |
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
430 %! assert (a, A); |
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
431 %! assert (d, "\t"); |
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
432 %! assert (h, 0); |
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
433 |
1feb913c34ca
importdata.m: Correction for non-numeric data and added test for complex numbers.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15560
diff
changeset
|
434 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
435 %! ## Complex numbers |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
436 %! A = [3.1 -7.2 0-3.4i; 0.012 -6.5+7.2i 128]; |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
437 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
438 %! fid = fopen (fn, "w"); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
439 %! fputs (fid, "3.1\t-7.2\t0-3.4i\n0.012\t-6.5+7.2i\t128"); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
440 %! fclose (fid); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
441 %! [a,d,h] = importdata (fn, '\t'); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
442 %! unlink (fn); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
443 %! assert (a, A); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
444 %! assert (d, "\t"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
445 %! assert (h, 0); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
446 |
17358 | 447 %!test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
448 %! ## Exceptional values (Inf, NaN, NA) |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
449 %! A = [3.1 Inf NA; -Inf NaN 128]; |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
450 %! fn = tmpnam (); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
451 %! fid = fopen (fn, "w"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
452 %! fputs (fid, "3.1\tInf\tNA\n-Inf\tNaN\t128"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
453 %! fclose (fid); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
454 %! [a,d,h] = importdata (fn, '\t'); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
455 %! unlink (fn); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
456 %! assert (a, A); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
457 %! assert (d, "\t"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
458 %! assert (h, 0); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
459 |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
460 %!test |
17358 | 461 %! ## Missing values and Text Values |
462 %! A.data = [3.1 NA 0; 0.012 NA 128]; | |
463 %! A.textdata = {char(zeros(1,0)) | |
464 %! "NO DATA"}; | |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
465 %! fn = tmpnam (); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
466 %! fid = fopen (fn, "w"); |
17358 | 467 %! fputs (fid, "3.1\t\t0\n0.012\tNO DATA\t128"); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
468 %! fclose (fid); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
469 %! [a,d,h] = importdata (fn, '\t'); |
15560
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
470 %! unlink (fn); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
471 %! assert (a, A); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
472 %! assert (d, "\t"); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
473 %! assert (h, 0); |
305ad0a215ba
importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15557
diff
changeset
|
474 |
17358 | 475 %!#test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
476 %! ## CRLF for line breaks |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
477 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
478 %! fn = tmpnam (); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
479 %! fid = fopen (fn, "w"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
480 %! fputs (fid, "3.1\t-7.2\t0\r\n0.012\t6.5\t128"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
481 %! fclose (fid); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
482 %! [a,d,h] = importdata (fn, '\t'); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
483 %! unlink (fn); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
484 %! assert (a, A); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
485 %! assert (d, "\t"); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
486 %! assert (h, 0); |
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
487 |
17358 | 488 %!#test |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
489 %! ## CR for line breaks |
16653
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
490 %! A = [3.1 -7.2 0; 0.012 6.5 128]; |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
491 %! fn = tmpnam (); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
492 %! fid = fopen (fn, "w"); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
493 %! fputs (fid, "3.1\t-7.2\t0\r0.012\t6.5\t128"); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
494 %! fclose (fid); |
17325
8cfc28809a07
importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents:
17245
diff
changeset
|
495 %! [a,d,h] = importdata (fn, '\t'); |
16653
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
496 %! unlink (fn); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
497 %! assert (a, A); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
498 %! assert (d, "\t"); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
499 %! assert (h, 0); |
1cfa3a49247f
importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15847
diff
changeset
|
500 |
17358 | 501 %!error importdata () |
502 %!error importdata (1,2,3,4) | |
503 %!error <FNAME must be a string> importdata (1) | |
504 %!error <option -pastespecial not implemented> importdata ("-pastespecial") | |
505 %!error <DELIMITER must be a single character> importdata ("foo", 1) | |
506 %!error <DELIMITER must be a single character> importdata ("foo", "ab") | |
507 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", "1") | |
508 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", 1.5) | |
509 %!error <not implemented for file format .au> importdata ("foo.au") | |
510 %!error <not implemented for file format .avi> importdata ("foo.avi") | |
511 |