annotate scripts/io/importdata.m @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 76269aa97398
children a40c0b7aa376
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29494
diff changeset
3 ## Copyright (C) 2012-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
15549
48b1312bb0fe fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15547
diff changeset
7 ##
48b1312bb0fe fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15547
diff changeset
8 ## This file is part of Octave.
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24477
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
15549
48b1312bb0fe fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15547
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24477
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22738
diff changeset
13 ## (at your option) any later version.
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
14 ##
15549
48b1312bb0fe fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15547
diff changeset
15 ## 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
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22738
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22738
diff changeset
18 ## GNU General Public License for more details.
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
19 ##
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
20 ## 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
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24477
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
25
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
26 ## -*- texinfo -*-
20852
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20735
diff changeset
27 ## @deftypefn {} {@var{A} =} importdata (@var{fname})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20735
diff changeset
28 ## @deftypefnx {} {@var{A} =} importdata (@var{fname}, @var{delimiter})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20735
diff changeset
29 ## @deftypefnx {} {@var{A} =} importdata (@var{fname}, @var{delimiter}, @var{header_rows})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20735
diff changeset
30 ## @deftypefnx {} {[@var{A}, @var{delimiter}] =} importdata (@dots{})
516bb87ea72e 2015 Code Sprint: remove class of function from docstring for all m-files.
Rik <rik@octave.org>
parents: 20735
diff changeset
31 ## @deftypefnx {} {[@var{A}, @var{delimiter}, @var{header_rows}] =} importdata (@dots{})
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
32 ## Import data from the file @var{fname}.
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
33 ##
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
34 ## Input parameters:
16816
12005245b645 doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 16768
diff changeset
35 ##
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
36 ## @itemize
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
37 ## @item @var{fname}
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
38 ## The name of the file containing data.
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19293
diff changeset
39 ##
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
40 ## @item @var{delimiter}
16816
12005245b645 doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 16768
diff changeset
41 ## 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
42 ## (Only valid for ASCII files)
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
43 ##
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
44 ## @item @var{header_rows}
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
45 ## 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
46 ## files)
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
47 ## @end itemize
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
48 ##
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
49 ## Different file types are supported:
16816
12005245b645 doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 16768
diff changeset
50 ##
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
51 ## @itemize
16826
a4969508008e doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents: 16816
diff changeset
52 ## @item ASCII table
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
53 ##
20160
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
54 ## Import ASCII table using the specified number of header rows and the
03b9d17a2d95 doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents: 19833
diff changeset
55 ## specified delimiter.
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
56 ##
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
57 ## @item Image file
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
58 ##
16816
12005245b645 doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents: 16768
diff changeset
59 ## @item @sc{matlab} file
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
60 ##
15551
e21b21c2a20d importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15549
diff changeset
61 ## @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
62 ##
16826
a4969508008e doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents: 16816
diff changeset
63 ## @item WAV file
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
64 ##
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
65 ## @end itemize
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
66 ##
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
67 ## @seealso{textscan, dlmread, csvread, load}
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
68 ## @end deftypefn
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
69
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
70 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
71
28789
28de41192f3c Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents: 28693
diff changeset
72 if (nargin < 1)
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
73 print_usage ();
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
74 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
75
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
76 if (! ischar (fname))
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
77 error ("importdata: FNAME must be a string");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
78 elseif (strcmpi (fname, "-pastespecial"))
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
79 error ("importdata: option -pastespecial not implemented");
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
80 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
81
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
82 if (nargin > 1)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
83 if (! ischar (delimiter)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
84 || (length (delimiter) > 1 && ! strcmp (delimiter, '\t')))
28912
0de38a6ef693 maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents: 28896
diff changeset
85 error ("importdata: DELIMITER must be a single character");
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
86 endif
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
87 if (strcmp (delimiter, '\t'))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
88 delimiter = "\t";
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
89 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
90 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
91
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
92 if (nargin > 2)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
93 if (! isnumeric (header_rows) || header_rows < 0
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
94 || header_rows != fix (header_rows))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
95 error ("importdata: HEADER_ROWS must be an integer >= 0");
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
96 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
97 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
98
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
99 ## Check file format
20713
2469d78a1d8b Consistently use 'filename' rather than 'file name' throughout code base.
Rik <rik@octave.org>
parents: 20160
diff changeset
100 ## Get the extension from the filename.
28563
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 28358
diff changeset
101 [~, ~, ext] = fileparts (fname);
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
102 ext = lower (ext);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
103
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
104 switch (ext)
22736
44d9d526d1e3 importdata.m: Allow importing of sound files via audioread.
Rik <rik@octave.org>
parents: 22735
diff changeset
105 case {".au", ".snd", ".flac", ".ogg", ".wav", ".wave"}
44d9d526d1e3 importdata.m: Allow importing of sound files via audioread.
Rik <rik@octave.org>
parents: 22735
diff changeset
106 [output.data, output.fs] = audioread (fname);
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
107 case {".avi", ".mj2", ".mpg", ".asf", ".asx", ".wmv", ".mp4", ".m4v", ...
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19293
diff changeset
108 ".mov"}
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
109 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
110 case {".bmp", ".cur", ".gif", ".hdf", ".ico", ".jpe", ".jpeg", ".jpg", ...
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
111 ".jp2", ".jpf", ".jpx", ".j2c", ".j2k", ".pbm", ".pcx", ".pgm", ...
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
112 ".png", ".pnm", ".ppm", ".ras", ".tif", ".tiff", ".xwd"}
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
113 delimiter = NaN;
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
114 header_rows = 0;
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
115 [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
116 case ".mat"
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
117 delimiter = NaN;
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
118 header_rows = 0;
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
119 output = load (fname);
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
120 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
121 ## 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
122 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
123 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
124 ## 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
125 try
e21b21c2a20d importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15549
diff changeset
126 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
127 catch
e21b21c2a20d importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 15549
diff changeset
128 ## 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
129 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
130 end_try_catch
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
131 otherwise
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
132 ## Assume the file is in ASCII format.
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
133 [output, delimiter, header_rows] = ...
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
134 importdata_ascii (fname, delimiter, header_rows);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
135 endswitch
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
136
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
137 ## 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
138 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
139 fields = fieldnames (output);
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
140 for i=1:length (fields)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
141 if (isempty (output.(fields{i})))
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
142 output = rmfield (output, fields{i});
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
143 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
144 endfor
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
145
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
146 ## 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
147 ## i.e., output = output.onlyFieldLeft
15547
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
148
9a455cf96dbe Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents: 15546
diff changeset
149 ## Update the list of fields
18538
fcd87f68af4f Deprecate nfields and replace with numfields.
Rik <rik@octave.org>
parents: 18532
diff changeset
150 if (numfields (output) == 1)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
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
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
170 header_rows = 0;
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
171 header_cols = 0;
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19293
diff changeset
172
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
173 ## 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
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))
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
178 ## Look for number, DELIMITER, DELIMITER*, number
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
179 delim = regexpi (row, '[-+]?\d*[.]?\d+(?:[ed][-+]?\d+)?[ij]?([^-+\d.deij])\1*[-+]?\d*[.]?\d+(?:[ed][-+]?\d+)?[ij]?',
22796
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
180 'tokens', 'once');
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
181 if (! isempty (delim))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
182 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
183 endif
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
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
186 if (delimiter == " ")
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
187 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
188 else
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
189 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
190 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
191 row_data = str2double (row_entries);
22796
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
192 if (header_rows < num_header_rows)
20735
418ae0cb752f Replace ++,-- with in-place operators for performance.
Rik <rik@octave.org>
parents: 20713
diff changeset
193 header_rows += 1;
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
194 output.textdata{end+1, 1} = row;
22796
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
195 elseif (all (isnan (row_data)) && header_rows < 25)
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
196 header_rows += 1;
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
197 output.textdata{end+1, 1} = row;
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
198 elseif (all (isnan (row_data)))
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
199 ## Failed to find any numeric input in first 25 lines
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
200 row = -1;
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
201 break;
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
202 else
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
203 ## The number of header rows and header columns is now known.
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
204 header_cols = find (! isnan (row_data), 1) - 1;
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
205 has_rowheaders = (header_cols == 1);
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
206
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
207 ## Set colheaders output from textdata if appropriate
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
208 ## NOTE: Octave chooses to be Matlab incompatible and return
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
209 ## both 'rowheaders' and 'colheaders' when they are present.
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
210 ## Matlab allows only one to be present at a time.
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
211 if (! isempty (output.textdata))
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
212 if (delimiter == " ")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
213 output.colheaders = regexp (strtrim (output.textdata{end}),
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
214 ' +', 'split');
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
215 else
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
216 output.colheaders = ostrsplit (output.textdata{end}, delimiter);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
217 endif
28693
2bb050267d74 maint: Remove trailing spaces from code base.
Rik <rik@octave.org>
parents: 28563
diff changeset
218
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
219 nc_hdr = numel (output.colheaders);
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
220 nc_dat = numel (row_data);
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
221 if (! has_rowheaders)
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
222 if (nc_hdr != nc_dat)
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
223 output = rmfield (output, {"rowheaders", "colheaders"});
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
224 else
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
225 output = rmfield (output, "rowheaders");
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
226 endif
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
227 else
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
228 if (nc_hdr != nc_dat-1)
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
229 output = rmfield (output, "colheaders");
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
230 endif
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
231 endif
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
232 endif
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
233
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
234 break;
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
235 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
236
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
237 endwhile
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
238
18663
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
239 if (row == -1)
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
240 ## No numeric data found => return file as cellstr array
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
241 ## 1. Read as char string
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
242 fseek (fid, 0, "bof");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
243 output = fread (fid, Inf, "*char")';
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
244 fclose (fid);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
245 ## 2. Find EOL type
18681
99d1ef340de4 importdata.m: limit EOL search to first 4096 characters.
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18663
diff changeset
246 idx = find (output(1:min (4096, length (output))) == "\n", 1) - 1;
18663
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
247 if (isindex (idx) && output(idx) == "\r")
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
248 dlm = "\r\n";
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
249 else
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
250 dlm = "\n";
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
251 endif
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
252 ## 3. Split each line into a cell (column vector)
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
253 output = strsplit (output, dlm)';
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
254 ## 4. Remove last cell (for files with -proper- EOL before EOF)
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
255 if (isempty (output{end}))
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
256 output(end) = [];
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
257 endif
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
258 ## 5. Return after setting some output data
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
259 delimiter = "";
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
260 header_rows = numel (output);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
261 return;
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
262 endif
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
263
22796
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
264 fclose (fid);
1c73344fd348 importdata.m: Improve performance when reading text files (bug #49630).
Rik <rik@octave.org>
parents: 22755
diff changeset
265
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
266 if (num_header_rows >= 0)
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
267 ## User has defined a number of header rows which disagrees with the
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
268 ## auto-detected number. Print a warning.
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
269 if (num_header_rows < header_rows)
28693
2bb050267d74 maint: Remove trailing spaces from code base.
Rik <rik@octave.org>
parents: 28563
diff changeset
270 warning ("Octave:importdata:headerrows_mismatch",
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
271 "importdata: detected %d header rows, but HEADER_ROWS input configured %d rows", header_rows, num_header_rows);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
272 endif
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
273 else
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
274 ## use the automatically detected number of header rows
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
275 num_header_rows = header_rows;
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
276 endif
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
277
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
278 ## 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
279 if (delimiter == " ")
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
280 output.data = dlmread (fname, "", num_header_rows, header_cols,
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
281 "emptyvalue", NA);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
282 else
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
283 output.data = dlmread (fname, delimiter, num_header_rows, header_cols,
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
284 "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
285 endif
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
286
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
287 ## Go back and correct any individual values that did not convert.
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
288 ## FIXME: This is only efficient when the number of bad conversions is small.
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
289 ## Any file with 'rowheaders' will cause the for loop to execute over
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
290 ## *every* line in the file.
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
291
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
292 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
293 if (header_cols > 0)
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
294 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
295 endif
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
296 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
297
25873
75f7e8728e17 importdata.m: Correct import of NA in files with CRLF endings (bug #54622).
Rik <rik@octave.org>
parents: 25054
diff changeset
298 file_content = ostrsplit (fileread (fname), "\r\n", true);
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
299
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
300 na_rows = find (any (na_idx, 2));
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
301 ## Prune text lines in header that were already collected
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
302 idx = (na_rows(1:min (header_rows, end)) + num_header_rows) <= header_rows;
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
303 na_rows(idx) = [];
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
304 for ridx = na_rows(:)'
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
305 row = file_content{ridx+num_header_rows};
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
306 if (delimiter == " ")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
307 fields = regexp (strtrim (row), ' +', 'split');
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
308 else
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
309 fields = ostrsplit (row, delimiter);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
310 endif
19593
446c46af4b42 strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents: 19293
diff changeset
311
22735
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
312 missing_idx = na_idx(ridx,:);
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
313 if (! size_equal (missing_idx, fields))
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
314 ## Fields completely missing at end of line. Replace with NA.
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
315 col = columns (fields);
28358
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
316 ## FIXME: This code should be redundant because dlmread was called
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
317 ## with "emptyval", NA. Delete if there are no problems
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
318 ## detected after some time. Commented out: 5/23/2020.
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
319 ##output.data(ridx, (col+1):end) = NA;
22735
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
320 missing_idx = missing_idx(1:col);
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
321 endif
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
322 text = fields(missing_idx);
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
323
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
324 text = text(! strcmpi (text, "NA")); # Remove valid "NA" entries
28358
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
325 text = text(! strcmpi (text, "")); # Remove empty entries
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
326 if (! isempty (text))
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
327 output.textdata(end+1, 1:columns (text)) = text;
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
328 endif
22735
6f111a0f32c3 importdata.m: Fix failing BIST test (bug #49546).
Rik <rik@octave.org>
parents: 22731
diff changeset
329
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
330 if (has_rowheaders)
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
331 output.rowheaders(end+1, 1) = fields(1);
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
332 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
333 endfor
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
334
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
335 endif
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
336
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
337 ## Final cleanup to satisfy Matlab compatibility
17357
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
338 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
339 output = output.data;
28358
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
340 else
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
341 ## Text fields should be cell array of strings, rather than just cell.
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
342 try
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
343 output.textdata = cellstr (output.textdata);
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
344 end_try_catch
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
345 try
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
346 output.rowheaders = cellstr (output.rowheaders);
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
347 end_try_catch
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
348 try
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
349 output.colheaders = cellstr (output.colheaders);
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
350 end_try_catch
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
351 endif
28358
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
352
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
353 if (num_header_rows != header_rows)
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
354 header_rows = num_header_rows;
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
355 endif
15557
13206177060b importdata.m: 3X speedup by using str2double rather than num2str.
Rik <rik@octave.org>
parents: 15555
diff changeset
356
15546
3bf1e0da76b0 importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff changeset
357 endfunction
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
358
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
359
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
360 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
361 %! ## Comma separated values
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
362 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
363 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
364 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
365 %! 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
366 %! 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
367 %! [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
368 %! [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
369 %! 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
370 %! 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
371 %! assert (d1, ",");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
372 %! 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
373 %! 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
374 %! assert (d2, ",");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
375 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
376
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
377 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
378 %! ## Tab separated values
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
379 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
380 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
381 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
382 %! 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
383 %! 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
384 %! [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
385 %! [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
386 %! 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
387 %! 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
388 %! 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
389 %! 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
390 %! 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
391 %! 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
392 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
393
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
394 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
395 %! ## 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
396 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
397 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
398 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
399 %! 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
400 %! 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
401 %! [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
402 %! [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
403 %! 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
404 %! 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
405 %! assert (d1, " ");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
406 %! 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
407 %! 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
408 %! assert (d2, " ");
44624eb20076 Speed up importdata() ASCII CSV processing using dlmread() as core
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 17325
diff changeset
409 %! assert (h2, 0);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
410
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
411 %!test
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
412 %! ## No separator, 1 column of data only
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
413 %! A = [3.1;-7.2;0;0.012;6.5;128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
414 %! fn = tempname ();
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
415 %! fid = fopen (fn, "w");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
416 %! fprintf (fid, "%f\n", A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
417 %! fclose (fid);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
418 %! [a1,d1,h1] = importdata (fn, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
419 %! [a2,d2,h2] = importdata (fn);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
420 %! unlink (fn);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
421 %! assert (a1, A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
422 %! assert (d1, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
423 %! assert (h1, 0);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
424 %! assert (a2, A);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
425 %! assert (d2, "");
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
426 %! assert (h2, 0);
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
427
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
428 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
429 %! ## Header text
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
430 %! 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
431 %! 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
432 %! "this row does not contain any data, but the next one does."};
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
433 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
434 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
435 %! 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
436 %! 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
437 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
438 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
439 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
440 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
441 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
442 %! assert (h, 2);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
443
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
444 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
445 %! ## 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
446 %! 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
447 %! A.textdata = {"Label1\tLabel2\tLabel3";
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
448 %! "";
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
449 %! "col 1\tcol 2\tcol 3"};
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
450 %! A.colheaders = {"col 1", "col 2", "col 3"};
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
451 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
452 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
453 %! fprintf (fid, "%s\n", A.textdata{:});
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
454 %! 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
455 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
456 %! [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
457 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
458 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
459 %! assert (d, "\t");
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
460 %! assert (h, 3);
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
461
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
462 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
463 %! ## Row headers
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
464 %! 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
465 %! 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
466 %! A.rowheaders = A.textdata;
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
467 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
468 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
469 %! 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
470 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
471 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
472 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
473 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
474 %! 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
475 %! assert (h, 0);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
476
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
477 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
478 %! ## Row/Column headers and Header Text
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
479 %! 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
480 %! A.textdata = {"This is introductory header text"
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
481 %! "col1\tcol2\tcol3"
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
482 %! "row1"
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
483 %! "row2"};
28277
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
484 %! A.rowheaders = A.textdata(3:4);
01358faf49c9 importdata.m: Overhaul column header detection (bug #58328).
Rik <rik@octave.org>
parents: 27978
diff changeset
485 %! A.colheaders = {"col1", "col2", "col3"};
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
486 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
487 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
488 %! 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
489 %! 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
490 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
491 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
492 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
493 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
494 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
495 %! assert (h, 2);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
496
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
497 %!test
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
498 %! ## 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
499 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
500 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
501 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
502 %! 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
503 %! fputs (fid, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
504 %! 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
505 %! fclose (fid);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
506 %! [a,d,h] = importdata (fn, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
507 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
508 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
509 %! assert (d, " ");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
510 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
511
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
512 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
513 %! ## Exponentials
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
514 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
515 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
516 %! fid = fopen (fn, "w");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
517 %! 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
518 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
519 %! [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
520 %! 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
521 %! 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
522 %! 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
523 %! 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
524
24477
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
525 %!testif ; ! ismac ()
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
526 %! ## Complex numbers
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
527 %! A = [3.1 -7.2 0-3.4i; 0.012 -6.5+7.2i 128];
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
528 %! fn = tempname ();
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
529 %! fid = fopen (fn, "w");
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
530 %! fputs (fid, "3.1\t-7.2\t0-3.4i\n0.012\t-6.5+7.2i\t128");
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
531 %! fclose (fid);
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
532 %! [a,d,h] = importdata (fn, '\t');
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
533 %! unlink (fn);
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
534 %! assert (a, A);
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
535 %! assert (d, "\t");
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
536 %! assert (h, 0);
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
537
29494
76269aa97398 if bug number is supplied, prefer '%!test' over '%!xtest'
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
538 %!test <47413>
24477
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
539 %! ## Same test code as above, but intended only for test statistics on Mac.
e8cb11de9383 test: Mark certain bugs as xtest when run on Mac platforms (bug #52627).
Rik <rik@octave.org>
parents: 23573
diff changeset
540 %! if (! ismac ()), return; endif
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
541 %! ## Complex numbers
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
542 %! A = [3.1 -7.2 0-3.4i; 0.012 -6.5+7.2i 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
543 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
544 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
545 %! 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
546 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
547 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
548 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
549 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
550 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
551 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
552
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
553 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
554 %! ## Exceptional values (Inf, NaN, NA)
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
555 %! A = [3.1 Inf NA; -Inf NaN 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
556 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
557 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
558 %! 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
559 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
560 %! [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
561 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
562 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
563 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
564 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
565
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
566 %!test
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
567 %! ## Missing values and Text Values
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
568 %! A.data = [3.1 NA 0; 0.012 NA 128];
28358
3c5304bbb71e importdata.m: Changes to algorithm to remove some blank entries from textdata.
Rik <rik@octave.org>
parents: 28357
diff changeset
569 %! A.textdata = {"NO DATA"};
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
570 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
571 %! fid = fopen (fn, "w");
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
572 %! 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
573 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
574 %! [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
575 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
576 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
577 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
578 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
579
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
580 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
581 %! ## CRLF for line breaks
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
582 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
583 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
584 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
585 %! 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
586 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
587 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
588 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
589 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
590 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
591 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
592
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
593 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
594 %! ## 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
595 %! A = [3.1 -7.2 0; 0.012 6.5 128];
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
596 %! fn = tempname ();
16653
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
597 %! 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
598 %! 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
599 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
600 %! [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
601 %! unlink (fn);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
602 %! assert (a, A);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
603 %! assert (d, "\t");
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
604 %! assert (h, 0);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
605
23573
1b4f4ec53b4a use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents: 23572
diff changeset
606 %!test <*43393>
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22323
diff changeset
607 %! ## Distinguish double from complex when no delimiter is supplied
25006
ddb4bc5fccaa Replace tmpnam() with tempname() in core Octave.
Rik <rik@octave.org>
parents: 24534
diff changeset
608 %! fn = tempname ();
19293
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
609 %! fid = fopen (fn, "w");
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
610 %! fputs (fid, "2.0000e+02 4.0000e-04");
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
611 %! fclose (fid);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
612 %! [a, d, h] = importdata (fn);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
613 %! unlink (fn);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
614 %! assert (a, [2e2, 4e-4]);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
615 %! assert (d, " ");
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
616 %! assert (h, 0);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
617
19301
9f83ea3fa48c maint: Periodic merge of gui-release to default.
Rik <rik@octave.org>
parents: 19278 19293
diff changeset
618 %!test
18663
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
619 %! ## Only text / no numeric data; \n as EOL
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
620 %! fn = tempname ();
18663
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
621 %! fid = fopen (fn, "w");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
622 %! fputs (fid, "aaaa 11\nbbbbb 22\nccccc 3\n");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
623 %! fclose (fid);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
624 %! [a, d, h] = importdata (fn);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
625 %! unlink (fn);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
626 %! assert (a, {"aaaa 11"; "bbbbb 22"; "ccccc 3"});
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
627 %! assert (d, "");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
628 %! assert (h, 3);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
629
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
630 %!test
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
631 %! ## Only text / no numeric data; \r\n as EOL; missing last EOL before EOF
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
632 %! fn = tempname ();
18663
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
633 %! fid = fopen (fn, "w");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
634 %! fputs (fid, "aaaa 11\r\nbbbbb 22\r\nccccc 3");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
635 %! fclose (fid);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
636 %! [a, d, h] = importdata (fn);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
637 %! unlink (fn);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
638 %! assert (a, {"aaaa 11"; "bbbbb 22"; "ccccc 3"});
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
639 %! assert (d, "");
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
640 %! assert (h, 3);
271873b2f44f importdata.m: Return cellstr of text when no numeric data found (bug #41630).
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18538
diff changeset
641
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
642 %!test <*58294>
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
643 %! ## Varying values of header lines field
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
644 %! fn = tempname ();
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
645 %! fid = fopen (fn, "w");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
646 %! fputs (fid, "header1\nheader2\n3.1\n4.2");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
647 %! fclose (fid);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
648 %! warning ("off", "Octave:importdata:headerrows_mismatch", "local");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
649 %! ## Base import
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
650 %! [a, d, h] = importdata (fn, "");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
651 %! assert (a.data, [3.1; 4.2]);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
652 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
653 %! assert (h, 2);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
654 %! ## Import with 0 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
655 %! [a, d, h] = importdata (fn, "", 0);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
656 %! assert (a.data, [NA; NA; 3.1; 4.2]);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
657 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
658 %! assert (h, 0);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
659 %! ## Import with 1 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
660 %! [a, d, h] = importdata (fn, "", 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
661 %! assert (a.data, [NA; 3.1; 4.2]);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
662 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
663 %! assert (h, 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
664 %! ## Import with 3 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
665 %! [a, d, h] = importdata (fn, "", 3);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
666 %! assert (a.data, [4.2]);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
667 %! assert (a.textdata, {"header1"; "header2"; "3.1"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
668 %! assert (h, 3);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
669 %! unlink (fn);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
670
28896
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28789
diff changeset
671 ## Test input validation
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28789
diff changeset
672 %!error <Invalid call> importdata ()
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
673 %!error <FNAME must be a string> importdata (1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
674 %!error <option -pastespecial not implemented> importdata ("-pastespecial")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
675 %!error <DELIMITER must be a single character> importdata ("foo", 1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
676 %!error <DELIMITER must be a single character> importdata ("foo", "ab")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
677 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", "1")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
678 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", 1.5)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
679 %!error <not implemented for file format .avi> importdata ("foo.avi")
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
680 %!warning <detected 2 header rows, but HEADER_ROWS input configured 1 rows>
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
681 %! fn = tempname ();
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
682 %! fid = fopen (fn, "w");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
683 %! fputs (fid, "header1\nheader2\n3.1");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
684 %! fclose (fid);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
685 %! a = importdata (fn, "", 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
686 %! unlink (fn);