Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пpеобpазование Фypье

RU.ALGORITHMS
Суб 22 Май 99 21:35

Hормальные люди используют Быстрое Преобразование Фурье (БПФ или FFT Fast Furje Transform)

Используется если число точек степень двойки Скорость N*log2(N) sin cos - вычисляются редко. Сразу выдает весь спектр и фазу.

  • Вход комплексный массив (X,Y) если действительные числа то Y[i]=0.
  • Выход X[i]- коэфф при cos(i*...) Y[i]- при sin.

sqrt(X[i]*X[i]+Y[i]*Y[i]) - энергия частоты. Используютя только частоты от 0 до N/2.

TREAL - для duoble,long double,float ...

template<class TREAL>
void FFT(int n,TREAL *x,TREAL *y)
{
int n2=n>>1,kd,i1,i;
TREAL Tx,Ty,T;

for(int j=i=0;i<n-1;i++)
  {
  if(i<j){swap(x[i],x[j]);swap(y[i],y[j]);}
  for(kd=n2;j>=kd;kd=(kd+1)>>1)j-=kd;
  j+=kd;
  }
TREAL Wx,Wy;
for(kd=1;kd<=n2;kd<<=1)
  for(j=0;j<kd;j++)
    {
    Wx=cosl(M_PI/kd*j);
    Wy=sinl(M_PI/kd*j);
    for(i=j;i<n;i+=kd<<1)
      {
      i1=i+kd;
      Tx=x[i1]*Wx-y[i1]*Wy;
      Ty=x[i1]*Wy+y[i1]*Wx;
      x[i1]=x[i]-Tx;
      y[i1]=y[i]-Ty;
      x[i]+=Tx;
      y[i]+=Ty;
      }
    }
for(i=0;i<n;i++)
  {
  x[i]/=n2;
  y[i]/=n2;
  }
}

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
1.9K
09 декабря 2007 года
George22
91 / / 09.12.2007
Мне нравитсяМне не нравится
22 декабря 2008, 11:04:08
Оставили бы свой код,
а ругаться мы все умеем.
2.
991
14 января 2005 года
Zenhipster
157 / / 14.01.2005
Мне нравитсяМне не нравится
26 января 2007, 13:41:14
То, что надо! А необходимую оптимизацию я и сам проведу =)
3.
Аноним
Мне нравитсяМне не нравится
6 мая 2006, 23:49:06
Нормальные люди код пишут по-нормальному, используют осмысленные имена переменных и соблюдают табуляцию не где попало и как попало, а единым стилем по всему коду. И что делает функция swap? Какие параметры на входе у FFT, а какие - на выходе?
4.
Аноним
Мне нравитсяМне не нравится
28 декабря 2005, 14:25:47
Нормальные люди не Вычисляют Синусы И Косинусы по сто раз, а делают процедуру инициализации FFT, где они считаются однократно. А затем из массива готовых синусов-косинусов по ходу дела выдергивается нужное значение.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог