TiGeR |
Отправлено: 03.02.2005, 16:05 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 22
|
Где достать алгоритм обратного ряда Фурье .............. и как он работает
или можете мне порекомендовать соответствующие ресурсы .......
|
|
Dimon.Ru |
Отправлено: 04.02.2005, 08:53 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
есть алгоритм прямого преобразования.....
если он тебе поможет, могу прислать (с-файл)
и есть формула БПФ — быстрого преобразования Фурье...
мыло скажи — перешлю
Отредактировано Dimon.Ru — 04/02/2005, 09:57 |
|
Тиграша |
Отправлено: 04.02.2005, 11:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 24
|
А я тоже хочу FFT...
Tigrussia@mail.ru
Будь человеком, мыльни |
|
Тиграша |
Отправлено: 08.02.2005, 07:50 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 24
|
Отвечает со страшной силой...
А кстати — есть у тебя двумерное FFT? |
|
illid@n |
Отправлено: 09.05.2005, 12:41 |
|
Не зарегистрирован
|
Скинь и мне плз! Очень нуно!!!
linktokhamzet@mail.ru |
|
exp |
Отправлено: 09.05.2005, 15:09 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Вот две функции: Прямое и обратное преобразование Фурье в комплексном виде — наиболее общий вариант (Надеюсь, это никого не смутит, ведь действительное число это комплексное с нулевой мнимой частью). Работает медленнее, но зато со всеми одномерными сигналами.
CODE |
// Прямое
Complex* FourierTransformation(Complex *F, int N)
{
Complex *pAmp = new Complex[k];
Complex I(0,1);
double Normalizer = double(1)/N;
double w=2*Pi/N;
for(int i=0; i<N;i++)
for(int j=0;j<N;j++) pAmp[i]+=Normalizer*F[j]*exp(-I*i*w*j);
return pAmp;
}
|
CODE |
// Обратное
Complex* InverseFourierTransformation(Complex *Ak, int N)
{
Complex *pF = new Complex[N];
Complex I(0,1);
double w=2*Pi/N;
for(int i=0; i<N;i++)
for(int j=0;j<N;j++) pF[i]+=Ak[j]*exp(I*i*w*j);
return pF;
}
|
На входе — массив комплексных чисел.
Для работы понадобится хедер Complex.h (приаттачен)
Пример использования:
CODE |
const N = 512;
Complex Signal[N];
// Действия по заполнению массива
Complex *Fourier = FourierTransformation(Signal,N); // Теперь указатель Fourier указывает на рад комплексных чисел из N элементов.
// Узнаем амплитуду 10 гармоники
double A10 = abs(Fourier[9]);
// Узнаем фазу 20 гармоники
double A10 = atan(Fourier[19].y/Fourier[19].x);
// Произведем обратное преобразование
Complex *RestoredSignal = InverseFourierTransformation(Fourier,N);
// Чтоб выковырять из RestoredSignal действительные значения надо взять RestoredSignal[i].x
|
Вроде все. Спасибо за внимание.
|
|