Fourier hakkında yardım

 
"FFT FFT Fast Fourier Transform Function Library" ('FFT Fast Fourier Transform Function Library' ) kullanmaya çalıştım, nedense bu fonksiyonları nasıl kullanacağımı hemen çözemedim, nedense hepsinde aynı Açıklamalar. Bana yardım et lütfen! Örneğin, son 8 çubuğun Kapat değerlerine sahip olmak, spektrumlarını nasıl alır, ardından ilk 4 frekansı (alçak geçiren filtre gibi) bırakıp sinyali nasıl geri alır?
 
8 çubuktan genel olarak 4 frekans alabileceğinizden ve sadece bırakmadığınızdan şüpheliyim.
 
8 ayrık sinyal değerinin dönüşümü (FFT) 8 frekans verecek, 4 düşük frekans bırakacak, mevcut rota dalgalanmaları için düşük geçişli bir filtre elde ediyoruz.
 
Bana bir Fourier yaklaşımı gönderdiler, eğer ilgileniyorsanız, kullanışlı olabilir mi?

 #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 ) ; }
//****************************************************

Aynı zamanda, bana söyleyebilir misiniz - neden kitaplık yerine ilk kod doğrudan türkiye'ye giriliyorsa - Afrika'daki hava durumunu gösteriyor.




 
lsv писал (а):
8 ayrık sinyal değerinin dönüşümü (FFT) 8 frekans verecek, 4 düşük frekans bırakacak, mevcut rota dalgalanmaları için düşük geçişli bir filtre elde ediyoruz.

1 periyodu belirlemek için en az 2 bara ihtiyaç vardır. Bu frekans 4, 2 ve 1'i belirler.
 
Radyo fakültesinden bir tek benmişim gibi geliyor. 1 bar bir frekans, sabit değerdir, f(x)=k0. 2 çubuk - 2 frekans, f(x)=k0+k1*Sin(a1*x+b1). Vb.
 
Muhasebeci, Afrika'da hava durumu ft3 değişkeninden dolayı oluşuyor, tanımlı değil yani farklı değerler elde ediliyor.
 
lsv писал (а):
Muhasebeci, Afrika'da hava durumu ft3 değişkeninden dolayı oluşuyor, tanımlı değil yani farklı değerler elde ediliyor.

Senkyu... şimdi anlamaya çalışalım...
 

İşte Fourier'i çalıştığım bir örnek (gösterge) ...
Oradaki koda bakın - zor değil.
Varsayılan olarak, periyodik fonksiyonun spektrumu görüntülenir...
Herhangi bir gösterge gönderebilirsiniz. O zaman spektrumla ne yapacağınız hayal gücünüzdür.
Şimdi, alınan spektrogramlardan kalıplar toplamak ve tüm bunları tanıma için bir sinir ağına "itmek" istiyorum.

dosyayı yeniden yükledim

Dosyalar:
 
lsv :
Radyo fakültesinden bir tek benmişim gibi geliyor. 1 bar bir frekans, sabit değerdir, f(x)=k0. 2 çubuk - 2 frekans, f(x)=k0+k1*Sin(a1*x+b1). Vb.
Hatırladığım kadarıyla, FFT'deki 8 çubuktan 8 frekans elde ediliyor,
ama yarısı ikinci yarıya simetrik (görünüşe göre Pi ile kaydırılmış)
Yani aslında 4.

Başka bir şekilde olamaz.
Bir frekans (sinüs dalgası) 3 parametre içerir - G(t) = A*Sin(w*t+p)
Sabit frekanslarımız (w) var, 2 parametre kaldı - genlik (A) ve faz (p).

K bağımsız değerlerden herhangi bir dönüşüm için (bar değerleri)
en fazla K bağımsız parametre elde edilebilir.
Onlar. 8 çubuktan en fazla 4 frekans elde edebilirsiniz (her biri için 2 parametre)
 
klot, nedense dosyanız mevcut değil. Aslında trend çıkarımı için Fourier kullanmak istedim, yani. bir PF filtresi olarak, ancak Fourier'e göre analiz edilen bölümün tekrarlandığı varsayıldığını hatırladım. Onlar. fiyatları 10.11, 13, 12 olan çubuklar varsa, o zaman Fourier'e göre bunları 10.11, 13, 12, 10.11, 13, 12 çubuklarının izleyeceği varsayılır. Bu da tüm fikri bozar.