푸리에 도움말

 
"FFT FFT Fast Fourier Transform Function Library"( 'FFT Fast Fourier Transform Function Library' )를 사용하려고 시도했는데, 어떤 이유에서인지 이러한 기능을 즉시 사용하는 방법을 알 수 없었습니다. 설명. 도와주세요, 제발! 예를 들어, 마지막 8개 막대의 닫기 값이 있는 경우 스펙트럼을 얻은 다음 처음 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개의 더 낮은 주파수를 남기고 현재 코스 변동에 대한 저역 통과 필터를 얻습니다.

1피리어드를 결정하기 위해서는 최소한 2마디가 필요하다. 이것은 4, 2, 1의 주파수를 결정합니다.
 
라디오 학과 출신은 저뿐인 것 같아요. 1bar는 하나의 주파수, 상수 값, f(x)=k0입니다. 2개의 막대 - 2개의 주파수, f(x)=k0+k1*Sin(a1*x+b1). 등.
 
북키퍼, 아프리카의 날씨는 ft3 변수로 인해 형성되는데, 정의되어 있지 않아 다른 값을 얻습니다.
 
lsv писал (а):
북키퍼, 아프리카의 날씨는 ft3 변수로 인해 형성되는데, 정의되어 있지 않아 다른 값을 얻습니다.

센큐... 이제 이해를 해보자...
 

다음은 푸리에를 연구한 예(지표)입니다.
거기에 있는 코드를 보세요. 어렵지 않습니다.
기본적으로 주기 함수의 스펙트럼이 표시됩니다...
모든 지표를 보낼 수 있습니다. 스펙트럼으로 무엇을 할 것인가 - 당신의 상상력.
이제 수신된 스펙트로그램에서 패턴을 수집하고 이 모든 것을 인식을 위해 신경망 에 "밀어넣고" 싶습니다.

파일을 재업로드했습니다

파일:
 
lsv :
라디오부 소속은 나뿐인 것 같다. 1bar는 하나의 주파수, 상수 값, f(x)=k0입니다. 2개의 막대 - 2개의 주파수, f(x)=k0+k1*Sin(a1*x+b1). 등.
내가 기억하는 한 FFT의 8개 막대 중 8개의 주파수가 얻어지며,
그러나 그 중 절반은 후반부와 대칭입니다(Pi에 의해 이동된 것 같습니다).
그래서 실제로는 4입니다.

다른 방법으로는 불가능합니다.
하나의 주파수(정현파)에는 3개의 매개변수가 포함됩니다. - G(t) = A*Sin(w*t+p)
고정 주파수(w)가 있고 진폭(A)과 위상(p)의 2가지 매개변수가 남아 있습니다.

K 독립 값에서 모든 변환(막대 값)
최대 K개의 독립 매개변수를 얻을 수 있습니다.
저것들. 8개 막대 중 4개 이하의 주파수를 얻을 수 있습니다(각각에 대해 2개의 매개변수).
 
klot, 어떤 이유로 파일을 사용할 수 없습니다. 나는 원래 추세 추출을 위해 푸리에를 사용하고 싶었습니다. PF 필터로 사용되지만 푸리에에 따르면 분석된 섹션이 반복되는 것으로 가정됩니다. 저것들. 가격이 10.11, 13, 12인 막대가 있는 경우 푸리에에 따르면 막대 뒤에 10.11, 13, 12, 10.11, 13, 12 막대가 있다고 가정합니다. 그리고 이것은 전체 아이디어를 망칩니다.