Mercurial > hg > octave-lyh
annotate scripts/io/importdata.m @ 15555:17b04c4c268d
importdata.m: style fixes
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Tue, 23 Oct 2012 15:41:09 -0400 |
parents | 499467c51cd5 |
children | 13206177060b |
rev | line source |
---|---|
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
1 ## Copyright (C) 2012 Erik Kjellson |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
2 ## |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
3 ## This file is part of Octave. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
4 ## |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
6 ## under the terms of the GNU General Public License as published by |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or (at |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
8 ## your option) any later version. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
9 ## |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
10 ## Octave is distributed in the hope that it will be useful, but |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
13 ## General Public License for more details. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
14 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public License |
15549
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
16 ## along with Octave; see the file COPYING. If not, see |
48b1312bb0fe
fix copyright header in importdata
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15547
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
18 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
20 ## @deftypefn {Function File} {@var{A} =} importdata (@var{fname}) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
21 ## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter}) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{A} =} importdata (@var{fname}, @var{delimiter}, @var{header_rows}) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
23 ## @deftypefnx {Function File} {[@var{A}, @var{delimiter}] =} importdata (...) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
24 ## @deftypefnx {Function File} {[@var{A}, @var{delimiter}, @var{header_rows}] =} importdata (...) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
25 ## Importing data from file. |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
26 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
27 ## Importing the contents of file @var{fname} into workspace. |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
28 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
29 ## Input parameters: |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
30 ## @itemize |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
31 ## @item @var{fname} |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
32 ## The file name for the file to import. |
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 ## @item @var{delimiter} |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
35 ## The character separating columns of data. Use @code{\t} for tab. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
36 ## (Only valid for ascii files) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
37 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
38 ## @item @var{header_rows} |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
39 ## Number of header rows before the data begins. (Only valid for ascii files) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
40 ## @end itemize |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
41 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
42 ## Different file types are supported: |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
43 ## @itemize |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
44 ## @item Ascii table |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
45 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
46 ## Importing ascii table using the specified number of header rows and |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
47 ## the specified delimiter. |
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 ## @item Image file |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
50 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
51 ## @item @sc{Matlab} file |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
52 ## |
15551
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
53 ## @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
|
54 ## |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
55 ## @item Wav file |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
56 ## |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
57 ## @end itemize |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
58 ## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
59 ## @seealso{textscan, dlmread, csvread, load} |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
60 ## @end deftypefn |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
61 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
62 ## Author: Erik Kjellson <erikiiofph7@users.sourceforge.net> |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
63 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
64 function [output, delimiter, header_rows] = importdata (varargin) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
65 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
66 ## Default values |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
67 fname = ""; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
68 delimiter = ""; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
69 header_rows = -1; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
70 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
71 ########## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
72 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
73 ## Check input arguments |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
74 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
75 if (nargin < 1) |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
76 print_usage (); |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
77 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
78 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
79 fname = varargin{1}; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
80 ## Check that the file name really is a string |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
81 if (! ischar (fname)) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
82 error ("importdata: file name needs to be a string"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
83 endif |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
84 if ( strcmpi (fname, "-pastespecial")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
85 error ("importdata: option -pastespecial not implemented"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
86 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
87 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
88 if (nargin > 1) |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
89 delimiter = varargin{2}; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
90 ## Check that the delimiter really is a string |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
91 if (!ischar (delimiter)) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
92 error("importdata: delimiter needs to be a character"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
93 endif |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
94 if (length (delimiter) > 1 && !strcmpi (delimiter, "\t")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
95 error("importdata: delimiter cannot be longer than 1 character"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
96 endif |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
97 if (strcmpi (delimiter, "\\")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
98 delimiter = "\\\\"; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
99 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
100 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
101 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
102 if (nargin > 2) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
103 header_rows = varargin{3}; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
104 if (!isnumeric (header_rows) || header_rows < 0) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
105 error ("importdata: number of header rows needs to be an integer number >= 0"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
106 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
107 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
108 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
109 if (nargin > 3) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
110 error ("importdata: too many input arguments"); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
111 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
112 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
113 ########## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
114 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
115 ## Check file format |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
116 ## Get the extension from the file name. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
117 [d n fileExt v] = fileparts (fname); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
118 ## Make sure file extension is in lower case. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
119 fileExt = lower (fileExt); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
120 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
121 switch fileExt |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
122 case {".au", ".snd"} |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
123 error (sprintf ("importdata: not implemented for file format %s", |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
124 fileExt)); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
125 case ".avi" |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
126 error (sprintf ("importdata: not implemented for file format %s", |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
127 fileExt)); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
128 case {".bmp", ".cur", ".gif", ".hdf", ".ico", ".jpe", ".jpeg", ".jpg", \ |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
129 ".pbm", ".pcx", ".pgm", ".png", ".pnm", ".ppm", ".ras", \ |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
130 ".tif", ".tiff", ".xwd"} |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
131 delimiter = NaN; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
132 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
133 [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
|
134 case ".mat" |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
135 delimiter = NaN; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
136 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
137 output = load (fname); |
15551
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
138 case {".wk1", ".xls", ".xlsx", ".dbf", ".pxl"} |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
139 ## 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
|
140 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
|
141 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
|
142 ## 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
|
143 try |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
144 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
|
145 catch |
e21b21c2a20d
importdata.m: properly fall back to unimplemented.m & allow spreadheet I/O
Philip Nienhuis <prnienhuis@users.sf.net>
parents:
15549
diff
changeset
|
146 ## 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
|
147 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
|
148 end_try_catch |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
149 case {".wav", ".wave"} |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
150 delimiter = NaN; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
151 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
152 [output.data, output.fs] = wavread (fname); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
153 otherwise |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
154 ## Assume the file is in ascii format. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
155 [output, delimiter, header_rows] = \ |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
156 importdata_ascii (fname, delimiter, header_rows); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
157 endswitch |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
158 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
159 ## If there are any empty fields in the output structure, then remove them |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
160 if (isstruct (output) && length (output) == 1) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
161 fields = fieldnames (output); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
162 for i=1:length (fields) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
163 if (isempty (getfield (output, fields{i}))) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
164 output = rmfield (output, fields{i}); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
165 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
166 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
167 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
168 ## If only one field is left, replace the structure with the field, |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
169 ## i.e. output = output.onlyFieldLeft |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
170 |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
171 ## Update the list of fields |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
172 fields = fieldnames (output); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
173 if (length (fields) == 1) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
174 output = getfield (output, fields{1}); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
175 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
176 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
177 endfunction |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
178 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
179 |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
180 ######################################## |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
181 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
182 function [output, delimiter, header_rows] = \ |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
183 importdata_ascii (fname, delimiter, header_rows) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
184 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
185 ## Define the fields in the output structure so that the order will be |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
186 ## correct. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
187 |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
188 output.data = []; |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
189 output.textdata = []; |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
190 output.rowheaders = []; |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
191 output.colheaders = []; |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
192 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
193 ## Read file into string and count the number of header rows |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
194 file_content = fileread (fname); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
195 |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
196 ## The characters need to be in a row vector instead of a column |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
197 ## vector to be recognized as a proper string. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
198 file_content = file_content(:)'; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
199 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
200 ## Split the file into rows (using \r\n or \n as delimiters between rows). |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
201 file_content_rows = regexp (file_content, "\r?\n", "split"); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
202 |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
203 ## FIXME: guess delimiter, if it isn't defined |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
204 if (isempty (delimiter)) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
205 error ("importdata: Guessing delimiter is not implemented yet, you have to specify it."); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
206 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
207 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
208 ## FIXME: A more intelligent way to count number of header rows. This |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
209 ## is needed e.g. when delimiter=' ' and the header contains spaces... |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
210 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
211 ## If number of header rows is undefined, then count the number of |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
212 ## header rows by step through row by row and look for the delimiter. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
213 ## Assume that the header can't contain any delimiter. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
214 if (header_rows < 0) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
215 header_rows = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
216 for i=1:length (file_content_rows) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
217 if (isempty (regexp(file_content_rows{i}, delimiter, "once"))) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
218 header_rows++; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
219 else |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
220 ## Data part has begun and therefore no more header rows can be |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
221 ## found |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
222 break; |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
223 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
224 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
225 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
226 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
227 ## Put the header rows in output.textdata. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
228 if (header_rows > 0) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
229 output.textdata = file_content_rows (1:header_rows)'; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
230 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
231 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
232 ## If space is the delimiter, then remove spaces in the beginning of |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
233 ## each data row. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
234 if (strcmpi (delimiter, " ")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
235 for i=(header_rows+1):length (file_content_rows) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
236 ## strtrim does not only remove the leading spaces but also the |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
237 ## tailing spaces, but that doesn't really matter. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
238 file_content_rows{i} = strtrim (file_content_rows{i}); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
239 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
240 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
241 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
242 ## Remove empty data rows. Go through them backwards so that you wont |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
243 ## get out of bounds. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
244 for i=length (file_content_rows):-1:(header_rows + 1) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
245 if (length (file_content_rows{i}) < 1) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
246 file_content_rows = [file_content_rows(1:i-1), \ |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
247 file_content_rows(i+1:length(file_content_rows))]; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
248 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
249 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
250 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
251 ## Count the number of data columns. If there are different number of |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
252 ## columns, use the greatest value. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
253 data_columns = 0; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
254 delimiter_pattern = delimiter; |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
255 ## If space is the delimiter, then multiple spaces should count as ONE |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
256 ## delimiter. Also ignore leading spaces. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
257 if (strcmpi (delimiter, " ")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
258 delimiter_pattern = ' +'; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
259 endif |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
260 for i=(header_rows+1):length(file_content_rows) |
15555
17b04c4c268d
importdata.m: style fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15554
diff
changeset
|
261 data_columns = max (data_columns, |
17b04c4c268d
importdata.m: style fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15554
diff
changeset
|
262 length (regexp (file_content_rows{i}, |
17b04c4c268d
importdata.m: style fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15554
diff
changeset
|
263 delimiter_pattern, "split"))); |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
264 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
265 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
266 ## Go through the data and put it in either output.data or |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
267 ## output.textdata depending on if it is numeric or not. |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
268 output.data = NaN (length (file_content_rows) - header_rows, data_columns); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
269 for i=(header_rows+1):length(file_content_rows) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
270 ## Only use the row if it contains anything other than white-space |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
271 ## characters. |
15554
499467c51cd5
importdata: Speeded up the import by a factor 2.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15551
diff
changeset
|
272 if (any (file_content_rows{i} != " ")) |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
273 row_data = regexp (file_content_rows{i}, delimiter_pattern, "split"); |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
274 |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
275 for j=1:length(row_data) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
276 ## Try to convert the column to a number, if it works put it in |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
277 ## output.data, otherwise in output.textdata |
15555
17b04c4c268d
importdata.m: style fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15554
diff
changeset
|
278 data_numeric = str2num (row_data{j}); |
15554
499467c51cd5
importdata: Speeded up the import by a factor 2.
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
15551
diff
changeset
|
279 if (!isempty (data_numeric)) |
15555
17b04c4c268d
importdata.m: style fixes
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15554
diff
changeset
|
280 output.data(i-header_rows, j) = data_numeric; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
281 else |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
282 output.textdata{i,j} = row_data{j}; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
283 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
284 endfor |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
285 |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
286 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
287 endfor |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
288 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
289 ## Check wether rowheaders or colheaders should be used |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
290 if ((header_rows == data_columns) && (size (output.textdata, 2) == 1)) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
291 output.rowheaders = output.textdata; |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
292 elseif (size (output.textdata, 2) == data_columns) |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
293 output.colheaders = output.textdata(end,:); |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
294 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
295 |
15547
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
296 ## When delimiter = "\\t" convert it to a tab, as is done in the Matlab |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
297 ## version |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
298 if (strcmpi (delimiter, "\\t")) |
9a455cf96dbe
Incorporate importdata.m into Octave sources
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
15546
diff
changeset
|
299 delimiter = "\t"; |
15546
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
300 endif |
3bf1e0da76b0
importdata: new function
Erik Kjellson <erikiiofph7@users.sourceforge.net>
parents:
diff
changeset
|
301 endfunction |