fft on a matrix



On 6/15/10 11:31 AM, Robert Dodier wrote:
> On 6/12/10, Raymond Toy <toy.raymond at gmail.com> wrote:
>
>   
>> If yes, then maxima cannot do that.  (It probably should.  And also
>> support bfloats.)
>>     
> I have a modified version of fft-core.lisp to do bigfloat arithmetic.
> I just replaced all the (coerce foo 'flonum) with ($bfloat foo)
> and (+ foo bar) with (m+ foo bar), etc. Is there a neater way
> to get bigfloat arithmetic?
>   

The simplest way is to put the fft-core in the bigfloat package.  Then +
is the generic + which handles CL floats and bigfloat reals and
complexes.  Use bigfloat:to and maxima:to to convert to/from bigfloat
objects.  I'll look into this soon.

>   
>> But a 2D FFT can be done using 1D FFts.  You take the 1D FFT of each
>> row.  From this matrix, take the FFT of each column.  So something like
>> the following:
>>
>> r: map(fft, m);
>> r : map(fft, transpose(r));
>> transpose(r);
>>     
> Hmm, I hadn't realized it was so simple. We could easily
> get the fft function to apply that to a matrix argument.
>   
Yes.  I have to check my references to make sure that that is correct,
however. :-)

Ray