From bug-request at octave dot org Mon Nov 29 15:50:59 2004 Subject: Bug in moment From: Balint Reczey To: bug at octave dot org Date: Mon, 29 Nov 2004 15:44:19 -0600 --0-280413816-1101764671=:35322 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Id: Content-Disposition: inline Hi! The moment fuction does not parse it's parameters correctly in version 2.1.60 and 2.1.63 (I haven't tried others, but was correct in 2.1.57). It's fixed in the attached file Balint ___________________________________________________________ Moving house? Beach bar in Thailand? New Wardrobe? Win 10k with Yahoo! Mail to make your dream a reality. Get Yahoo! Mail www.yahoo.co.uk/10k --0-280413816-1101764671=:35322 Content-Type: text/x-objcsrc; name="moment.m" Content-Description: moment.m Content-Disposition: inline; filename="moment.m" ## Copyright (C) 1995, 1996, 1997 Kurt Hornik ## ## This file is part of Octave. ## ## Octave 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 2, or (at your option) ## any later version. ## ## Octave 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 Octave; see the file COPYING. If not, write to the Free ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. ## -*- texinfo -*- ## at deftypefn {Function File} {} moment (@var{x}, @var{p}, @var{opt}, @var{dim}) ## If at var{x} is a vector, compute the @var{p}-th moment of @var{x}. ## ## If at var{x} is a matrix, return the row vector containing the ## at var{p}-th moment of each column. ## ## With the optional string opt, the kind of moment to be computed can ## be specified. If opt contains at code{"c"} or @code{"a"}, central ## and/or absolute moments are returned. For example, ## ## at example ## moment (x, 3, "ac") ## at end example ## ## at noindent ## computes the third central absolute moment of at var{x} dot ## ## If the optional argument at var{dim} is supplied, work along dimension ## at var{dim} dot ## at end deftypefn ## Can easily be made to work for continuous distributions (using quad) ## as well, but how does the general case work? ## Author: KH ## Description: Compute moments function m = moment (x, p, opt1, opt2) if ((nargin < 2) || (nargin > 4)) usage ("moment (x, p, type, dim)"); endif need_dim = 0; if (nargin == 2) opt = ""; need_dim = 1; elseif (nargin == 3) if (isstr (opt1)) opt = opt1; need_dim = 1; else dim = opt1; opt = ""; endif elseif (nargin == 4) if (isstr (opt1)) opt = opt1; dim = opt2; elseif (isstr (opt2)) opt = opt2; dim = opt1; else usage ("moment: expecting opt to be a string"); endif else usage ("moment (x, p, dim, opt) or moment (x, p, dim, opt)"); endif if (need_dim) t = find (size (x) != 1); if (isempty (t)) dim = 1; else dim = t(1); endif endif sz = size (x); n = sz (dim); if (numel (x) < 1) error ("moment: x must not be empty"); endif tmp = warn_str_to_num; unwind_protect warn_str_to_num = 0; if any (opt == "c") rng = ones(1, length (sz)); rng (dim) = sz (dim); x = x - repmat (sum (x, dim), rng) / n; endif if any (opt == "a") x = abs (x); endif unwind_protect_cleanup warn_str_to_num = tmp; end_unwind_protect m = sum(x .^ p, dim) / n; endfunction --0-280413816-1101764671=:35322-- ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web: http://www.octave.org How to fund new projects: http://www.octave.org/funding.html Subscription information: http://www.octave.org/archive.html -------------------------------------------------------------