C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68644] 오류 질문입니다ㅜㅜ
어렵다 [] 1303 읽음    2012-11-21 11:51
밑에 소스에 위 쪽에 #include "struct.h" 라고 되있는데 이부분이 오류가 납니다ㅠㅠ
Cannot open include file: 'struct.h': No such file or directory
이렇게 뜨는 include 폴더에 struch.h파일이 없어서 그런건가요?
맨 위에 struch.h주석이 되있고 그 밑에 내용이 있는데 이 부분이 struct.h인가요???
그렇다면 헤더파일을 어떻게 만들어서 include폴더에 집어넣을 수 있을까요?????
주석으로 struch.h 되있는 밑에 부분으로 헤더파일을 만들려고 했는데 오류가 나서요 ㅠㅠㅠ
답변 부탁드립니다~!

/* File        :       struct.h
* Creator      :       BlackEngine
* Date         :       2006/03/28
* Version      :       0.0.1 ( created )
* Descript     :       Definition of Complex Number , and etc
*/

typedef struct _COMPLEX {
    double     real;
    double     imag;
} COMPLEX, *pCOMPLEX;

/* File            :       fft.h
* Creator      :       BlackEngine
* Date         :       2006/03/28
* Version      :       0.0.1 ( created )
* Descript     :       Perform the FFT Algorithm
*/
#ifndef _BLACKENGINE_FFT_H_
#define _BLACKENGINE_FFT_H_

#include "struct.h"
/* TODO : at 03/29 , decision the return values of FFT Function. */
int fft_2d(COMPLEX ** ,int ,int ,int );
int fft(int ,int ,double *,double *);
#endif /* ifndef _BLACKENGINE_FFT_H_ */

/* File            :       fft.c
* Creator      :       BlackEngine
* Date         :       2006/03/28
* Version      :       0.0.1 ( created )
* Descript     :       Perform the FFT Algorithm ( 2-D Image FFT )
*/
#include
#include
#include

#include "fft.h"

#define TRUE 1
#define FALSE 0
/*#define NULL 0*/

/* Powerof2 function : compare the integer with 2^m
* and find maximum m , that is 2^m <= nx
* twopm = 2^m
*/
int Powerof2(int nx, int* m, int* twopm) {
    int pwr;
    *m = 0;
    for ( pwr = 1 ; pwr < nx ; pwr = pwr*2) {
        *m = *m + 1;
    }
    *twopm = pwr;
    return(TRUE);
}

int fft_2d(COMPLEX **c, int nx, int ny, int dir) {
    int i,j;
    int m,twopm;
    double *real,*imag;

    /* Transform the rows */
    real = (double *)malloc(nx * sizeof(double));
    imag = (double *)malloc(nx * sizeof(double));
    if (real == NULL || imag == NULL)
        return(FALSE);
    if (!Powerof2(nx,&m,&twopm) || twopm != nx)
        return(FALSE);
    for (j=0;j<<= m;

        /* N의 절반값을 half에 저장한다. */
        half = N >> 1;

    /* Bit Reverse를 하는 과정 */
    for ( i = 0 , j = 0 ; i < N - 1 ; i++ ) {
        if ( i < j )
        {
            swap_x = x[i];
            swap_y = y[i];
            x[i] = x[j];
            y[i] = y[j];
            x[j] = swap_x;
            y[j] = swap_y;
        }
        step = half;

        while ( step <= j )
        {
            j = j - k;
            k >>= 1;
        }
        j = j + step;
    }

    /* 초기의 값을 입력하는 부분,
    * factor의 역할은 각 단계(Stage)에서 omega의 값을 변경하기 위한
    * 기본 값이다. 즉 omega N= 4일 경우에는 각도가 pi/2 만큼씩 변하므로
    * exp(-j pi/2) 의 값을 가지고 있는 것이 factor이다
    * factor는 각 stage가 올라갈 때 마다 변경되어야 한다.
    * 그 각도가 절반으로 줄어야 하므로
    * cos(t) + j sin(t) 가 cos(t/2) + jsin(t/2) 로 되어야 한다.
    * cos(t) = 2cos^2(t/2) -1 이므로 cos(t/2) = sqrt((1+cos(t))/2)이고
    * sin(t/2) = sqrt(1-cos^2(t/2))이므로 sqrt((1-cos(t))/2) 이다.
    */
    factor_x = -1.0;
    factor_y = 0;
    butterfly = 1;

    for ( stage = 0 ; stage < m ; stage++ )
    {
        /* step 은 butterfly가 두개의 샘플을 가지고 작업하므로
        * 현재 위치에서 몇번째 샘플을 가지고 해야 하는 가를
        * 가리키는 변수이다.
        * butterfly는 같은 omega 값에의해 반복되는 butterfly가
        * 존재하므로 그 위치를 가리키기 위한 값이다.
        */
        step = butterfly;
        butterfly <<= 1;
        /* 각 단계에서 omega는 항상 1+j0으로 시작한다. */
        omega_x = 1.0;
        omega_y = 0;
        for ( numofbutter = 0 ; numofbutter < step ; numofbutter++)
        {
            for( i = numofbutter; i < N; i = i + butterfly)
            {
                /* omega_N(k) 일때 omega_N(k+N/2) = -omega_N(k)
                * 의 성질을 이용한다. 그래서 두번째 샘플에 미리
                * omega_N(k)를 곱한 후 결과의 처음 샘플에는
                * 그냥 더하고 두번째 샘플에는 빼준다(-이므로)
                */
                swap_x = x[i+step]* omega_x - y[i+step]*omega_y;
                swap_y = y[i+step]*omega_x + x[i+step]*omega_y;

                x[i+step] = x[i] - swap_x;
                y[i+step] = y[i] - swap_y;

                x[i] = x[i] + swap_x;
                y[i] = y[i] + swap_y;

            }
            /* 공통된 omega를 사용하는 샘플을 다 곱한 후
            * omega를 factor의 각도만큼 증가시켜야 한다.
            * omega(k+1) 의 값은 omega와 factor의 곱을 통해
            * 구할 수 있다.
            */
            swap_x = omega_x * factor_x - omega_y * factor_y;
            swap_y = omega_y * factor_x + omega_x * factor_y;
            omega_x = swap_x;
            omega_y = swap_y;

        }
        /* 한 단계가 끝났으므로 factor를 기존 값에서 각도가
        * 절반인 값으로 구해야 한다.
        */
        factor_y = sqrt((1.0+factor_x)/2.0);
        if( dir == 1)
            factor_y = -factor_y;
        factor_x = sqrt((1.0-factor_x)/2.0);
    }
    /* Inverse FFT 의 경우에는 sampling을 해줘야 한다.
    * 다른 소스에서는 FFT의 값이 크게 나오므로 fft시에 sampling을
    * 하고 inverse에서 안하는 경우도 있다 ( 상관없음 )
    */
    if( dir == -1 )
    {
        for ( i = 0 ; i < N ; i++)
        {
            x[i] /= N;
            y[i] /= N;
        }
    }

    return TRUE;
}
<
<


+ -

관련 글 리스트
68644 오류 질문입니다ㅜㅜ 어렵다 1303 2012/11/21
68647     Re:오류 질문입니다ㅜㅜ 時代遺憾 1340 2012/11/21
68650         Re:Re:오류 질문입니다ㅜㅜ 어렵다 1274 2012/11/21
68653             Re:Re:Re:오류 질문입니다ㅜㅜ 時代遺憾 1291 2012/11/21
68654                 Re:Re:Re:Re:오류 질문입니다ㅜㅜ 어렵다 1566 2012/11/21
68652             Re:Re:Re:오류 질문입니다ㅜㅜ 윈텍 1600 2012/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.