annotate scripts/io/importdata.m @ 18538:fcd87f68af4f

Deprecate nfields and replace with numfields. * NEWS: Announce deprecation of nfields and addition of new function numfields. * container.txi: Add numfields to the manual. * oct-map.cc (octave_map::cat): Change %!tests to use numfields. * ov-struct.cc (Fnumfields): Function renamed from nfields. * scripts/deprecated/nfields.m: Add m-file which warns about nfields deprecation. * scripts/deprecated/module.mk: Add nfields.m to build system. * fieldnames.m: Change seealso link to point to numfields. * __isequal__.m: Use numfields to simplify code. * imwrite.m: Replace 'isempty (fieldnames (fmt))' with 'numfields (fmt) > 0' for clarity. * imageIO.m: Replace 'isempty (fieldnames (fmt))' with 'numfields (fmt) > 0' for clarity. * importdata.m: Use numfields to simplify code. * assert.m: Use numfields to simplify code.
author Rik <rik@octave.org>
date Sun, 02 Mar 2014 12:56:11 -0800
parents 87dfe4892ef9
children 271873b2f44f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16768
e2de3c8882be copyright notice fixes
John W. Eaton <jwe@octave.org>
parents: 16767
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
38 ## The number of header rows before the data begins. (Only valid for ASCII
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
e2de3c8882be copyright notice fixes
John W. Eaton <jwe@octave.org>
parents: 16767
diff changeset
63 ## Author: Erik Kjellson <erikiiofph7@users.sourceforge.net>
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
64
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
72 error ("importdata: FNAME must be a string");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
78 if (! ischar (delimiter)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
79 || (length (delimiter) > 1 && ! strcmp (delimiter, '\t')))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
82 if (strcmp (delimiter, '\t'))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
88 if (! isnumeric (header_rows) || header_rows < 0
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
89 || header_rows != fix (header_rows))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
96 [~, ~, ext, ~] = fileparts (fname);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
97 ext = lower (ext);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
98
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
99 switch (ext)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
100 case {".au", ".snd", ".flac", ".ogg"}
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
101 error ("importdata: not implemented for file format %s", ext);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
102 case {".avi", ".mj2", ".mpg", ".asf", ".asx", ".wmv", ".mp4", ".m4v", ...
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
103 ".mov"}
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
106 ".jp2", ".jpf", ".jpx", ".j2c", ".j2k", ".pbm", ".pcx", ".pgm", ...
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
107 ".png", ".pnm", ".ppm", ".ras", ".tif", ".tiff", ".xwd"}
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
18538
fcd87f68af4f Deprecate nfields and replace with numfields.
Rik <rik@octave.org>
parents: 18532
diff changeset
149 if (numfields (output) == 1)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
150 output = output.(fields{1});
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
151 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
152 endif
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
153
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
154 endfunction
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
155
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
156 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
157
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
158 ## 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
159 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
160 output.textdata = {};
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
161 output.rowheaders = {};
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
162 output.colheaders = {};
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
163
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
164 [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
165 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
166 error (msg);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
167 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
168
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
169 header_rows = 0;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
170 header_cols = 0;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
171
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
172 ## Work through first few rows line by line until a delimiter is found.
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
173 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
174
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
175 ## 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
176 if (isempty (delimiter))
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
177 ## 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
178 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
179 'tokens', 'once');
87dfe4892ef9 importdata.m: Fix non-compliant PCRE regexp causing problems on Mac.
Rik <rik@octave.org>
parents: 17358
diff changeset
180 #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
181 # 'tokens', 'once');
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
182 if (! isempty (delim))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
183 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
184 endif
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
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
187 if (delimiter == " ")
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
188 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
189 else
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
190 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
191 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
192 row_data = str2double (row_entries);
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
193 if (all (isnan (row_data)) || header_rows < num_header_rows)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
194 header_rows++;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
195 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
196 else
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
197 if (! isempty (output.textdata))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
198 if (delimiter == " ")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
199 output.colheaders = regexp (strtrim (output.textdata{end}),
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
200 ' +', 'split');
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
201 else
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
202 output.colheaders = ostrsplit (output.textdata{end}, delimiter);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
203 endif
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
204 endif
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
205 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
206 ## 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
207 break;
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
208 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
209
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
210 endwhile
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
211
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
212 fclose (fid);
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
213
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
214 if (row == -1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
215 error ("importdata: Unable to determine delimiter");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
216 endif
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
217 if (num_header_rows >= 0)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
218 header_rows = num_header_rows;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
219 endif
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
220
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
221 ## Now, let the efficient built-in routine do the bulk of the work.
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
222 if (delimiter == " ")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
223 output.data = dlmread (fname, "", header_rows, header_cols,
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
224 "emptyvalue", NA);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
225 else
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
226 output.data = dlmread (fname, delimiter, header_rows, header_cols,
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
227 "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
228 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
229
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
230 ## Go back and correct any individual values that did not convert.
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
231 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
232 if (header_cols > 0)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
233 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
234 endif
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
235 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
236
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
237 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
238
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
239 na_rows = find (any (na_idx, 2));
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
240 for ridx = na_rows(:)'
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
241 row = file_content{ridx+header_rows};
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
242 if (delimiter == " ")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
243 fields = regexp (strtrim (row), ' +', 'split');
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
244 else
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
245 fields = ostrsplit (row, delimiter);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
246 endif
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
247
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
248 text = fields(na_idx(ridx,:));
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
249 text = text(! strcmpi (text, "NA")); # Remove valid "NA" entries
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
250 if (! isempty (text))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
251 output.textdata(end+1:end+numel (text), 1) = text;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
252 endif
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
253 if (header_cols)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
254 output.rowheaders(end+1, :) = fields(1:header_cols);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
255 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
256 endfor
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
257
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
258 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
259
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
260 ## 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
261 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
262 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
263 elseif (! isempty (output.rowheaders) && ! isempty (output.colheaders))
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
264 output = struct ("data", {output.data}, "textdata", {output.textdata});
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
265 endif
15557
13206177060b importdata.m: 3X speedup by using str2double rather than num2str.
Rik <rik@octave.org>
parents: 15555
diff changeset
266
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
267 endfunction
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
268
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 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
271 %! ## Comma separated values
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
272 %! 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
273 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
274 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
275 %! 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
276 %! 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
277 %! [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
278 %! [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
279 %! 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
280 %! 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
281 %! assert (d1, ",");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
282 %! 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
283 %! 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
284 %! assert (d2, ",");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
285 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
286
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
287 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
288 %! ## Tab separated values
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
289 %! 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
290 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
291 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
292 %! 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
293 %! 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
294 %! [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
295 %! [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
296 %! 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
297 %! 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
298 %! 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
299 %! 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
300 %! 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
301 %! 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
302 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
303
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
304 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
305 %! ## 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
306 %! 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
307 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
308 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
309 %! 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
310 %! 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
311 %! [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
312 %! [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
313 %! 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
314 %! 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
315 %! assert (d1, " ");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
316 %! 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
317 %! 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
318 %! assert (d2, " ");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
319 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
320
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
321 %!test
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
322 %! ## No separator, 1 column of data only
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
323 %! A = [3.1;-7.2;0;0.012;6.5;128];
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
324 %! fn = tmpnam ();
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
325 %! fid = fopen (fn, "w");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
326 %! fprintf (fid, "%f\n", A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
327 %! fclose (fid);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
328 %! [a1,d1,h1] = importdata (fn, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
329 %! [a2,d2,h2] = importdata (fn);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
330 %! unlink (fn);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
331 %! assert (a1, A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
332 %! assert (d1, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
333 %! assert (h1, 0);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
334 %! assert (a2, A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
335 %! assert (d2, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
336 %! assert (h2, 0);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
337
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
338 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
339 %! ## Header text
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
340 %! 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
341 %! 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
342 %! "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
343 %! 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
344 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
345 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
346 %! 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
347 %! 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
348 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
349 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
350 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
351 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
352 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
353 %! assert (h, 2);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
354
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
355 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
356 %! ## 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
357 %! 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
358 %! A.textdata = {"Label1\tLabel2\tLabel3";
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
359 %! "col 1\tcol 2\tcol 3"};
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
360 %! 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
361 %! fn = tmpnam ();
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
362 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
363 %! fprintf (fid, "%s\n", A.textdata{:});
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
364 %! 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
365 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
366 %! [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
367 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
368 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
369 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
370 %! assert (h, 2);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
371
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
372 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
373 %! ## Row headers
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
374 %! 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
375 %! 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
376 %! A.rowheaders = A.textdata;
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
377 %! fn = tmpnam ();
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
378 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
379 %! 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
380 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
381 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
382 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
383 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
384 %! 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
385 %! assert (h, 0);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
386
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
387 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
388 %! ## Row/Column headers and Header Text
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
389 %! 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
390 %! A.textdata = {"This is introductory header text"
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
391 %! " col1 col2 col3"
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
392 %! "row1"
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
393 %! "row2"};
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
394 %! fn = tmpnam ();
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
395 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
396 %! 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
397 %! 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
398 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
399 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
400 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
401 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
402 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
403 %! assert (h, 2);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
404
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
405 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
406 %! ## 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
407 %! 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
408 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
409 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
410 %! 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
411 %! fputs (fid, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
412 %! 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
413 %! fclose (fid);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
414 %! [a,d,h] = importdata (fn, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
415 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
416 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
417 %! assert (d, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
418 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
419
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
420 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
421 %! ## Exponentials
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
422 %! 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
423 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
424 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
425 %! 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
426 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
427 %! [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
428 %! 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
429 %! 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
430 %! 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
431 %! 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
432
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 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
434 %! ## Complex numbers
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
435 %! 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
436 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
437 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
438 %! 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
439 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
440 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
441 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
442 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
443 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
444 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
445
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
446 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
447 %! ## Exceptional values (Inf, NaN, NA)
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
448 %! 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
449 %! fn = tmpnam ();
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
450 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
451 %! 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
452 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
453 %! [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
454 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
455 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
456 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
457 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
458
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
459 %!test
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
460 %! ## Missing values and Text Values
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
461 %! A.data = [3.1 NA 0; 0.012 NA 128];
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
462 %! A.textdata = {char(zeros(1,0))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
463 %! "NO DATA"};
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
464 %! fn = tmpnam ();
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
465 %! fid = fopen (fn, "w");
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
466 %! 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
467 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
468 %! [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
469 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
470 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
471 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
472 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
473
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
474 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
475 %! ## CRLF for line breaks
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
476 %! 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
477 %! fn = tmpnam ();
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
478 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
479 %! 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
480 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
481 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
482 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
483 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
484 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
485 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
486
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
487 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
488 %! ## 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
489 %! 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
490 %! fn = tmpnam ();
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
491 %! 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
492 %! 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
493 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
494 %! [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
495 %! unlink (fn);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
496 %! assert (a, A);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
497 %! assert (d, "\t");
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
498 %! assert (h, 0);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
499
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
500 %!error importdata ()
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
501 %!error importdata (1,2,3,4)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
502 %!error <FNAME must be a string> importdata (1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
503 %!error <option -pastespecial not implemented> importdata ("-pastespecial")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
504 %!error <DELIMITER must be a single character> importdata ("foo", 1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
505 %!error <DELIMITER must be a single character> importdata ("foo", "ab")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
506 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", "1")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
507 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", 1.5)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
508 %!error <not implemented for file format .au> importdata ("foo.au")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
509 %!error <not implemented for file format .avi> importdata ("foo.avi")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
510