annotate scripts/io/importdata.m @ 33634:4a70f390c85e default tip @

maint: Merge stable to default.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 28 May 2024 15:25:54 +0200
parents 2e484f9f1f18
children
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 ##
32632
2e484f9f1f18 maint: update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 31989
diff changeset
3 ## Copyright (C) 2012-2024 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.
31253
a40c0b7aa376 maint: changes to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 30564
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
31788
b482ed13ac1a doc: Use hyphen in "comma-separated list".
Rik <rik@octave.org>
parents: 31706
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
31989
9b36d30d27e3 Make tests that fail with libc++ dependent on whether Octave uses it.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31788
diff changeset
525 %!testif ; ! __have_feature__ ("LLVM_LIBCXX")
24477
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
31989
9b36d30d27e3 Make tests that fail with libc++ dependent on whether Octave uses it.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31788
diff changeset
538 %!testif HAVE_LLVM_LIBCXX <47413>
9b36d30d27e3 Make tests that fail with libc++ dependent on whether Octave uses it.
Markus Mützel <markus.muetzel@gmx.de>
parents: 31788
diff changeset
539 %! ## Same test code as above, intended only for test statistics with libc++.
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
540 %! ## Complex numbers
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
541 %! 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
542 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
543 %! fid = fopen (fn, "w");
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
544 %! 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
545 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
546 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
547 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
548 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
549 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
550 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
551
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
552 %!test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
553 %! ## Exceptional values (Inf, NaN, NA)
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
554 %! 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
555 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
556 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
557 %! 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
558 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
559 %! [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
560 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
561 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
562 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
563 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
564
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
565 %!test
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
566 %! ## Missing values and Text Values
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
567 %! 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
568 %! A.textdata = {"NO DATA"};
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 18681
diff changeset
569 %! fn = tempname ();
15560
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
570 %! fid = fopen (fn, "w");
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
571 %! 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
572 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
573 %! [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
574 %! unlink (fn);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
575 %! assert (a, A);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
576 %! assert (d, "\t");
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
577 %! assert (h, 0);
305ad0a215ba importdata.m: Added tests and made small corrections.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15557
diff changeset
578
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
579 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
580 %! ## CRLF for line breaks
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
581 %! 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
582 %! fn = tempname ();
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
583 %! fid = fopen (fn, "w");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
584 %! 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
585 %! fclose (fid);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
586 %! [a,d,h] = importdata (fn, '\t');
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
587 %! unlink (fn);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
588 %! assert (a, A);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
589 %! assert (d, "\t");
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
590 %! assert (h, 0);
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
591
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
592 %!#test
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
593 %! ## 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
594 %! 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
595 %! fn = tempname ();
16653
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
596 %! 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
597 %! 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
598 %! fclose (fid);
17325
8cfc28809a07 importdata.m: Add %!tests for colheaders and rowheaders.
Rik <rik@octave.org>
parents: 17245
diff changeset
599 %! [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
600 %! unlink (fn);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
601 %! assert (a, A);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
602 %! assert (d, "\t");
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
603 %! assert (h, 0);
1cfa3a49247f importdata.m: Added Carriage Return as possible line break character.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents: 15847
diff changeset
604
23573
1b4f4ec53b4a use new script to tag fixed bugs in tests
John W. Eaton <jwe@octave.org>
parents: 23572
diff changeset
605 %!test <*43393>
22489
93ea313301f9 test: Add bug ids (<#####>) to BIST tests.
Rik <rik@octave.org>
parents: 22323
diff changeset
606 %! ## 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
607 %! fn = tempname ();
19293
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
608 %! 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
609 %! 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
610 %! fclose (fid);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
611 %! [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
612 %! unlink (fn);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
613 %! 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
614 %! assert (d, " ");
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
615 %! assert (h, 0);
8d7e760bfa68 importdata.m: better regexp pattern to assess delimiter (bug #43393)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 18532
diff changeset
616
19301
9f83ea3fa48c maint: Periodic merge of gui-release to default.
Rik <rik@octave.org>
parents: 19278 19293
diff changeset
617 %!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
618 %! ## 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
619 %! 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
620 %! 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
621 %! 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
622 %! 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
623 %! [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
624 %! 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
625 %! 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
626 %! 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
627 %! 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
628
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 %!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
630 %! ## 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
631 %! 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
632 %! 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
633 %! 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
634 %! 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
635 %! [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
636 %! 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
637 %! 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
638 %! 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
639 %! 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
640
28357
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
641 %!test <*58294>
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
642 %! ## Varying values of header lines field
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
643 %! fn = tempname ();
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
644 %! fid = fopen (fn, "w");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
645 %! 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
646 %! fclose (fid);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
647 %! 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
648 %! ## Base import
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
649 %! [a, d, h] = importdata (fn, "");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
650 %! 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
651 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
652 %! assert (h, 2);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
653 %! ## Import with 0 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
654 %! [a, d, h] = importdata (fn, "", 0);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
655 %! 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
656 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
657 %! assert (h, 0);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
658 %! ## Import with 1 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
659 %! [a, d, h] = importdata (fn, "", 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
660 %! 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
661 %! assert (a.textdata, {"header1"; "header2"});
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
662 %! assert (h, 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
663 %! ## Import with 3 header lines
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
664 %! [a, d, h] = importdata (fn, "", 3);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
665 %! assert (a.data, [4.2]);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
666 %! 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
667 %! assert (h, 3);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
668 %! unlink (fn);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
669
28896
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28789
diff changeset
670 ## Test input validation
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28789
diff changeset
671 %!error <Invalid call> importdata ()
17358
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
672 %!error <FNAME must be a string> importdata (1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
673 %!error <option -pastespecial not implemented> importdata ("-pastespecial")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
674 %!error <DELIMITER must be a single character> importdata ("foo", 1)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
675 %!error <DELIMITER must be a single character> importdata ("foo", "ab")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
676 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", "1")
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
677 %!error <HEADER_ROWS must be an integer> importdata ("foo", " ", 1.5)
95412dcfa707 importdata.m: Overhaul function
Rik <rik@octave.org>
parents: 17357
diff changeset
678 %!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
679 %!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
680 %! fn = tempname ();
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
681 %! fid = fopen (fn, "w");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
682 %! fputs (fid, "header1\nheader2\n3.1");
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
683 %! fclose (fid);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
684 %! a = importdata (fn, "", 1);
8aef9f5755fe importdata.m: Properly process HEADER_ROWS input (bug #58294).
Rik <rik@octave.org>
parents: 28277
diff changeset
685 %! unlink (fn);