傅立叶的帮助

 
我试着使用'Library of FFT Fast Fourier Transform Functions'('FFT快速傅里叶变换函数库'),但我搞不清楚如何使用这些函数,不知道为什么它们都有相同的描述。请帮助我!例如,如何让最后8条的Close值得到它们的频谱,然后留下前4个频率(像低通滤波器)并得到信号?
 
我怀疑甚至有可能从8个小节中得到4个频率,而不是说这是全部。
 
对8个离散的信号值进行转换(FFT),将得到8个频率,留下4个较低的频率,我们得到当前课程波动的低频滤波器。
 
他们给我寄来了一个傅里叶近似值,如果你有兴趣,可能会派上用场。

#property library
//--------------------------------------------------------------------------------
double b = 0.7;
double c1,c2,c3,c4,b2,b3;
double e1,e2,e3,e4,e5,e6,n,w1,w2,t3f; 
int ft3;
b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2);
//==============================================
double af_T3( int i,int pt3, double ct3) {
//---------------------------
if (ft3==0) {n=pt3; if (n<1) n=1; n=1+0.5*(n-1); w1=2/(n+1); w2=1-w1; ft3=1;}
//------------------------
e1=w1*ct3+w2*e1; 
e2=w1*e1+w2*e2; 
e3=w1*e2+w2*e3; 
e4=w1*e3+w2*e4; 
e5=w1*e4+w2*e5; 
e6=w1*e5+w2*e6;
t3f=c1*e6+c2*e5+c3*e4+c4*e3;
return(t3f); }


#property  copyright "ANG3110@latchess.com"
//----------------------------------------
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
//-------------------------------
#import "af_T3.ex4"
int   af_T3( int i,int pt3, double ct3);
//-------------------------------
extern int hrf = 2;
extern int hrT3 = 6;
extern int days = 1;
//-----------------------------------------
double ak[],bk[],fx[],w,ak0,ss,sc,sk,dfx[];
double pi=3.1415926535897932384626433832795;
int T,sm,k;
double t3[],ct3,dc[];
int pt3;
//==========================================
int init() {
    IndicatorBuffers(5);
    SetIndexStyle(0,DRAW_LINE); 
    SetIndexBuffer(0,fx);
    SetIndexBuffer(1,t3);
    SetIndexBuffer(2,ak);
    SetIndexBuffer(3,bk);
    SetIndexBuffer(4,dc);
//--------------------------
pt3=hrT3*60/Period();
T=days*1440/Period(); 
w=2*pi/T;     
k=T/(hrf*60/Period());
return(0); }
//***************************************************
int start() {
//-----------------
int n,i,cbi;
//------------------
cbi=Bars-IndicatorCounted()-2;
for(i=cbi; i>=0; i--) {
//---------------------
ct3=Close[i];
t3[i]=af_T3(i,pt3,ct3);
dc[i]=Close[i]-t3[i];
}
//-------------------------- 
ak0=0.0;
for (n=0; n<=k; n++) { sc=0.0; ss=0.0;  
for (i=0; i<=T-1; i++) {
if (n==0) ak0+=dc[i]; 
if (n!=0) {sc=sc+dc[i]*MathCos(n*i*w); ss=ss+dc[i]*MathSin(n*i*w);} }
ak[n]=sc*2/T; bk[n]=ss*2/T; }
ak0=ak0/T; 
//--------------------------
for (i=0; i<=T-1; i++) { sk=0.0;
for (n=1; n<=k; n++) {
sk=sk+ak[n]*MathCos(n*i*w)+bk[n]*MathSin(n*i*w);}
fx[i]=ak0+sk+t3[i];  
} 
//---------------------------
 return(0); }
//****************************************************

也许你还可以告诉我,如果不使用库,而是直接将第一段代码插入一个指标中,为什么会显示非洲的天气。




 
lsv писал (а):
对8个离散的信号值进行转换(FFT)将得到8个频率,留下4个较低的频率,我们得到一个当前课程振荡的LF滤波器。

确定1个周期至少需要2个小节。 这样就确定了频率4、2和1。
 
感觉好像只有我一个人来自无线电部门。1巴是一个频率,是一个恒定值,f(x)=k0。2条是2个频率,f(x)=k0+k1*Sin(a1*x+b1),等等。
 
书记,非洲的天气是由于变量ft3形成的,它没有被定义,所以你会得到不同的值。
 
lsv писал (а):
书记,非洲的天气是由于变量ft3形成的,它没有被定义,所以你会得到不同的值。

谢谢...让我们看看我们是否能弄清楚...
 

这里有一个例子(指标),我在上面研究了傅里叶...
看看那里的代码 - 这并不难。
默认情况下,一个周期性函数的频谱被输出...
你可以发送任何你想要的指标。之后如何处理光谱是你的想象力。
我现在想从获得的频谱图中收集模式,并将其全部 "塞 "入一个神经网络 进行识别。

上传了文件

附加的文件:
 
lsv:
感觉好像只有我一个人来自无线电部门。1巴是一个频率,是一个恒定值,f(x)=k0。2条是2个频率,f(x)=k0+k1*Sin(a1*x+b1),等等。
在我的印象中,FFT中的8个小节产生8个频率。
但其中一半与另一半是对称的(似乎被π移位了)。
因此,真正剩下4个。

这不可能是其他方式。
一个频率(正弦波)包含3个参数 - G(t) = A*Sin(w*t+p)
频率(w)是固定的,剩下2个参数 - 振幅(A)和相位(p)。

在任何从K自变量(条形值)的转换中
我们最多可以得到K个独立参数。
即从8个小节中最多可以得到4个频率(每小节2个参数)。
 
klot,你的文件由于某种原因无法使用。我最初想用傅立叶来提取趋势,即作为FFT滤波器,但我记得傅立叶假定分析的部分会重复。 即如果有价格为10,11,13,12的条形图,那么傅立叶假定它们后面会有10,11,13,12,10,11,13,12条形图。而这就破坏了整个想法。