//
//fourie command. 
//
//This command is used for fourie transform.
//

//Syntax 
fourie data/
(options)
;

//Options
method=/fourie/fft         //fourie:fourie(defalut) fft:fast fourie transform.
kind=/trans/period/rev     //trans:fourie coefficent period(default):frequency spectrum rev:reverse fourie
predict=xx   //xx is predicting period using fourie transform(default 0).
//Example 1 fourie transform and reverse fourie transform which transform a wave to the spectrum and same wave. 
get stockdata.csv@;

fourie data1/ method=fft kind=trans ; anaput freqData; get freqData; fourie freqData/ kind=rev ; anaput wave; get wave; plot line data1;

//Example 2 get stockdata.csv@; plot line data1;

if(# > 229) delrec //This wave has 250 steps,and 229 steps are trainning step. put train; //use tmtrend command for fitting 229 step and predicting 21 step using 4 degree spline. get train; tmtrend data1/ dim=4 period=21 ; anaput traintrend; get traintrend; plot line data1 data1_T dataTC; //data1 is original wave; //data1_T is the spline curve fitting orignal wave; //data1TC is different value meaning data1 - data_T.

//using fourie transform for steady long period fitting with cuting higher frequency. fourie data1TC/ method=fft kind=trans predict=21 ; anaput freqData; plot line data1TC/ color=blue ;

//Cuting 30 higher frequency to get long period curve get freqdata; if(# >= 30) data1TC=0; put cutData; //Reverse fourie transform to get long preiod curve. get cutData; fourie data1TC/ kind=rev ; anaput cutWave; get cutWave; //rename logn frequency curve. attr name rename/ data1TC data1FR ; plot line data1FR;

//ploting long period curve to difference value of data1 and trend. merge trainTrend by #; plot line data1 data1_T data1TC data1FR; put data1FRQ; //In the Figuer data1FR curve is long period curve for fitting difference value.