#include "stdafx.h"
#include "fftw3.h"
#include <stdlib.h>
#define SIZE 4
#pragma comment(lib,"fftw3-3.lib")
int main( int argc, char** argv )
{
double input[SIZE] = { 1.0, 1.0, 1.0, 1.0 };
fftw_complex *data, *fft_result, *ifft_result;
fftw_plan plan_forward, plan_backward;
int i;
data = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );
fft_result = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );
ifft_result = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );
plan_forward = fftw_plan_dft_1d( SIZE, data, fft_result, FFTW_FORWARD, FFTW_ESTIMATE );
plan_backward = fftw_plan_dft_1d( SIZE, fft_result, ifft_result, FFTW_BACKWARD, FFTW_ESTIMATE );
* populate input data */
for( i = 0 ; i < SIZE ; i++ ) {
data[0] = input;
data[1] = 0.0;
}
* print initial data */
for( i = 0 ; i < SIZE ; i++ ) {
fprintf( stdout, "data[%d] = { %2.2f, %2.2f }\n",
i, data[0], data[1] );
}
fftw_execute( plan_forward );
* print fft result */
for( i = 0 ; i < SIZE ; i++ ) {
fprintf( stdout, "fft_result[%d] = { %2.2f, %2.2f }\n",
i, fft_result[0], fft_result[1] );
}
fftw_execute( plan_backward );
* print ifft result */
for( i = 0 ; i < SIZE ; i++ ) {
fprintf( stdout, "ifft_result[%d] = { %2.2f, %2.2f }\n",
i, ifft_result[0] / SIZE, ifft_result[1] / SIZE );
}
* free memory */
fftw_destroy_plan( plan_forward );
fftw_destroy_plan( plan_backward );
fftw_free( data );
fftw_free( fft_result );
fftw_free( ifft_result );
return 0;
}
fftw в vs 2008
Недавно столкнулся с необходимостью запрограммировать алгоритм Быстрого Преобразования Фурье (Fast Fourier Transform - FFT).
В результате поиска в инете нашел интересный сайт http://fftw.org
разработчики на этом сайте предлагают dll FFTW (Fastest Fourier Transform in the West)
Алгоритм интересный и действительно быстро работает.
И в Borland C++ получилось подключить.
Начал создавать в студии 2008 и наткнулся на проблему линковки.
Вот скачал архив с сайта с DLL и h-файлом. Создал по инструкции lib.
Далее написал консольное приложение с простым примером на основе инструкций
Код:
но получаю ошибку линковки 2019
Подскажите, пожалуйста, как быть.
file - new - project - visual C++ - general - Empty project
соответственно, #include "stdafx.h" уберите
Цитата: sstorm
Попробуйте по-другому создать проект.
file - new - project - visual C++ - general - Empty project
соответственно, #include "stdafx.h" уберите
file - new - project - visual C++ - general - Empty project
соответственно, #include "stdafx.h" уберите
2 sstorm
Спасибо, после этого все заработало.