X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Fstatistics-1.1.3%2Ftblwrite.m;fp=octave_packages%2Fstatistics-1.1.3%2Ftblwrite.m;h=058cdf0935381568adaefd80ee7c488c4e69718f;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/statistics-1.1.3/tblwrite.m b/octave_packages/statistics-1.1.3/tblwrite.m new file mode 100644 index 0000000..058cdf0 --- /dev/null +++ b/octave_packages/statistics-1.1.3/tblwrite.m @@ -0,0 +1,126 @@ +## Copyright (C) 2008 Bill Denney +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see . + +## -*- texinfo -*- +## @deftypefn {Function File} {} tblwrite (@var{data}, @var{varnames}, @var{casenames}, @var{filename}) +## @deftypefnx {Function File} {} tblwrite (@var{data}, @var{varnames}, @var{casenames}, @var{filename}, @var{delimeter}) +## Write tabular data to an ascii file. +## +## @var{data} is written to an ascii data file named @var{filename} with +## an optional @var{delimeter}. The delimeter may be any single +## character or +## @itemize +## @item "space" " " (default) +## @item "tab" "\t" +## @item "comma" "," +## @item "semi" ";" +## @item "bar" "|" +## @end itemize +## +## The @var{data} is written starting at cell (2,2) where the +## @var{varnames} are a char matrix or cell vector written to the first +## row (starting at (1,2)), and the @var{casenames} are a char matrix +## (or cell vector) written to the first column (starting at (2,1)). +## @seealso{tblread, csv2cell, cell2csv} +## @end deftypefn + +function tblwrite (data, varnames, casenames, f="", d=" ") + + ## Check arguments + if nargin < 4 || nargin > 5 + print_usage (); + endif + varnames = __makecell__ (varnames, "varnames"); + casenames = __makecell__ (casenames, "varnames"); + if numel (varnames) != columns (data) + error ("tblwrite: the number of rows (or cells) in varnames must equal the number of columns in data") + endif + if numel (varnames) != rows (data) + error ("tblwrite: the number of rows (or cells) in casenames must equal the number of rows in data") + endif + + if isempty (f) + ## FIXME: open a file dialog box in this case when a file dialog box + ## becomes available + error ("tblread: filename must be given") + endif + [d err] = tbl_delim (d); + if ! isempty (err) + error ("tblwrite: %s", err) + endif + + dat = cell (size (data) + 1); + dat(1,2:end) = varnames; + dat(2:end,1) = casenames; + dat(2:end,2:end) = mat2cell (data, + ones (rows (data), 1), + ones (columns (data), 1));; + cell2csv (f, dat, d); + +endfunction + +function x = __makecell__ (x, name) + ## force x into a cell matrix + if ! iscell (x) + if ischar (x) + ## convert varnames into a cell + x = mat2cell (x, ones (rows (x), 1)); + else + error ("tblwrite: %s must be either a char or a cell", name) + endif + endif +endfunction + +## Tests +%!shared d, v, c +%! d = [1 2;3 4]; +%! v = ["a ";"bc"]; +%! c = ["de";"f "]; +%!test +%! tblwrite (d, v, c, "tblwrite-space.dat"); +%! [dt vt ct] = tblread ("tblwrite-space.dat", " "); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c); +%!test +%! tblwrite (d, v, c, "tblwrite-space.dat", " "); +%! [dt vt ct] = tblread ("tblwrite-space.dat", " "); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c); +%!test +%! tblwrite (d, v, c, "tblwrite-space.dat", "space"); +%! [dt vt ct] = tblread ("tblwrite-space.dat"); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c); +%!test +%! tblwrite (d, v, c, "tblwrite-tab.dat", "tab"); +%! [dt vt ct] = tblread ("tblwrite-tab.dat", "tab"); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c); +%!test +%! tblwrite (d, v, c, "tblwrite-tab.dat", "\t"); +%! [dt vt ct] = tblread ("tblwrite-tab.dat", "\t"); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c); +%!test +%! tblwrite (d, v, c, "tblwrite-tab.dat", '\t'); +%! [dt vt ct] = tblread ("tblwrite-tab.dat", '\t'); +%! assert (dt, d); +%! assert (vt, v); +%! assert (ct, c);