On Mon, 2013-04-01 at 14:53 -0700, John Denker wrote:
> Hi Folks --
> 
> I implemented an improved Fourier transform routine, called imfourier(...)
> It is sorta like the pre-existing fourier(...) routine, except:
>  ++ On the input, it can accept complex numbers represented as strings,
>   in a single column.
>  ++ It can also accept complex numbers represented by separate real and
>   imaginary parts, in two columns.
>  ++ The inverse transform is normalized to be the actual /inverse/
>   of the forward transform.
>  ++ Input slots are never skipped.
>  ++ As a related point, anything that can be coerced will be coerced 
>   to a number.  
>  ++ There is also a   zeropad(...)   function, which makes it easy
>   for folks to pad their data so that the number of rows is a
>   power of 2.  This lays a foundation for the future.  We should
>   not be training users to expect that our FFT will always require 
>   powers of 2.
> 
> To say the same thing the other way:  
>  -- The pre-existing fourier(...) does not accept complex inputs
>   under any conditions.
>  -- Not coincidentally, it is not invertible.
>  -- Not coincidentally, this makes it unusable for a wide range
>   of important applications.
>  -- In many situations, the failure manifests itself as a non-
>   obvious numerically-incorrect answer, rather than a warning
>   or error message.
>  -- The limitations were undocumented.
> 
> Compatibility:  With one exception, anybody using the old fourier(...)
> routine can get the same /or better/ results using imfourier(...).  The
> one thing the latter does not do is _skipping invalid data_.  I don't
> even know what that's supposed to mean when there are separated real
> and imaginary parts, and one part is valid when the other part is not.
> Also, the whole idea of skipping points in time-series data seems kinda
> sketchy.  If anybody can describe a relevant use-case it would help us
> figure out what (if anything) to do about this issue.
> 
> 
> The patch can be found at
>   http://www.av8n.com/computer/imfourier.patch
> There is also a spreadsheet at
>   http://www.av8n.com/computer/imfourier.gnumeric
> containing examples of the upgraded transforms in action ... including
> transform/inverse_transform pairs.
> 
> This is "alpha" code.  Constructive suggestions are welcome. The patch 
> applies to the current 1.12.1 tarball.
> 
> In case anybody is wondering about the importance of this:  It's true
> that not very many people using the Gnumeric Fourier transform feature
> at the moment ... but please imagine how many more people would use it 
> if it were actually usable!  Spreadsheets are great for rapid prototyping,
> for figuring stuff out.  I know a lot of people who will benefit from
> this, as soon as an upgraded version is released.
> 
> Comments, anyone?  Questions?  Suggestions?

An obvious use case for skipping invalid data is to allow whole columns
to be specified even if the first cell in each column contains a label
and the cells at the end of the column may be empty.

In other situations with paired data, an invalid entry in any position
removes the whole record. This seems to be a reasonable method of
removing invalid data.

AJG   

-- 
Andreas Guelzow <aguel...@pyrshep.ca>

_______________________________________________
gnumeric-list mailing list
gnumeric-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gnumeric-list

Reply via email to