Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Вот она высшая математика для чегоооо!!! Добавлено: 06.04.04 18:15  

Автор вопроса:  EvgenyBoom2004

На днях задумал светомузыку забацать!!! Ну все уже умею и к порту LPT обратиться и светодиодик любой зажечь, и поток данных с саундкарты снять, но когда дело дошло до разложения потока в спектр (!!!), вперся! :-(( Оказывается для этого нужно вспоминать курс высшей математики! :-(( А учился я неважно. Вот сижу теперь перепахиваю формулы и вспоминаю "Что же такое преобразование Фурье?".

Если вдруг кто сталкивался с написанием кода быстрого преобразования Фурь(FFT) плиз, ну прямо ПЛИЗЗЗ(!!!), не поленитесь, вышлите мне его на мыло!?!

Заранее ОГРОМНОЕ спасибо! EvgenyBoom@HiTV.ru

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #1
Добавлено: 06.04.04 19:26

Есть на С (вроде бы) и еще не пойму на чём, похоже на листинг для BAT файла. Выкладываю на С, не знаю подойдет или нет...

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

Используется если число точек степень двойки Скорость 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;  }}
если не сложно, пришли листинг своей проги

Ответить

Номер ответа: 2
Автор ответа:
 ISpy



Разработчик Offline Client

Вопросов: 47
Ответов: 621
 Web-сайт: intermult.boom.ru
 Профиль | | #2
Добавлено: 06.04.04 19:35

Нашел еще один листинг на С++, но он по больше будет и по сложнее, комментарии на английском, так что выкладывать не буду.

Если хочешь могу выслать.

Ответить

Номер ответа: 3
Автор ответа:
 EvgenyBoom2004



Вопросов: 4
Ответов: 6
 Профиль | | #3 Добавлено: 10.04.04 12:15

Спасибо ИСпаю за помощь, но неужели никто на VB не раскладывал сигналы в частотный спектр???

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам