kill(all)$

Maxima : relation between fft & inverse_fft (1D,2D),version 1.0a
peter.vlasschaert@gmail.com, 06/01/202

load packages ,option
-----------------------------

→ general

load(lrats)$ ratprint:false $

→ special : packages

load(fft);

1D : structure =  Maxima → array or List (=p1)
====================================

→ Data structure.

p1:[1,2,3,4,5,6,7,0];

p1[2];

→ inverse_fft : Data

p2:inverse_fft(p1);

→ fft              :

p3:fft(p2);

select : complex values 

p3a:imagpart(p3);
p3b:realpart(p3);

2D : structure =  Maxima → Matrix (= q1,r1)
====================================

use : 1D fft & 1D inverse_fft  and with the use 'map' command in maxima.
-------------------------------------------------------------------------------------------------
needed : image processing ,pde 2D

→ row : model
===========

1e) step : create matrix  'q1'
--------------------------------------
allowed : matrix :4 by 4 : multiple of 2 , not allowed: matrix: 3 by 3

→ Menu : Algebra : Enter Matrix 
Matrix : rows        → 3 
             columns   → 4
             Type        → general 
             Name      → q1

q1: matrix(
 [4,0,0,2], 
 [0,5,0,1], 
 [0,0,7,0]
);

q1a:q1[2,2];/*q[i,j]*/

2e) step : row operation ,fft
------------------------------------

q2:map(fft,q1);

info :matrix : columms :even 'number' ,  rows : even & odd 'number'

q2a:realpart(q2);
q2b:imagpart(q2);

3e) step : row operation,inverse_fft
------------------------------------------------

q3:map(inverse_fft,q2);

check : q1 & q3 , good : input : integer output : float

is(q1=q3);/*approximation of the input*/

→ column : model
==============

1e) step : create matrix  'r1'
--------------------------------------

→ Menu : Algebra : Enter Matrix 
Matrix : rows        → 4 
             columns   → 3
             Type        → general 
             Name      → r1

r1: matrix(
 [5.0,0.0,1.0], 
 [0.0,2.0,0.0], 
 [0.0,0.0,7.0], 
 [3.0,0.0,0.0]
);

2e) step : columns operation ,fft
--------------------------------------

r2:map(fft,transpose(r1));

info :matrix :rows :even 'number' , columns : even & odd 'number'

3e) step : columns operation,inverse_fft
------------------------------------------------

r3:map(inverse_fft,r2);

r3a:transpose(r3);

check : r1 & r3a , good : input : float output : float
rem :same shape

is(r1=r3a);

--------------------------------------------------------------------------------------------------------------------

easy way : row operation otherwise needed transpose for columm operation. (2D)