Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Алгоритм быстрого преобразования Фурье
форум Renault Megane (Рено Меган) Россия > Общение > Свободная зона > Хобби > C компьютером на ТЫ
Nickel89
Всем доброго времени суток. Нужен алгоритм быстрого (именно конкретно БПФ) преобразования Фурье для MATLAB. Просто на сколько я знаю FFT(x) - это просто преобразование Фурье, а уж быстрое оно или обычное решает система.
Короче говоря вот что требуется: "Провести вычисления 8-точечного ДПФ с помощью алгоритма БПФ с прореживанием по времени".

P.S. Все это добро нужно сделать в м-файле с выводом всех графиков и всякой лабуды для иллюстрации. Сюда просто текст программы. Выручайте бедного студента. Заранее спасибо!
Vik-2304
Цитата(Nickel89 @ 27.4.2010, 22:37) *
Всем доброго времени суток. Нужен алгоритм быстрого (именно конкретно БПФ) преобразования Фурье для MATLAB. Просто на сколько я знаю FFT(x) - это просто преобразование Фурье, а уж быстрое оно или обычное решает система.
Короче говоря вот что требуется: "Провести вычисления 8-точечного ДПФ с помощью алгоритма БПФ с прореживанием по времени".

P.S. Все это добро нужно сделать в м-файле с выводом всех графиков и всякой лабуды для иллюстрации. Сюда просто текст программы. Выручайте бедного студента. Заранее спасибо!

rofl.gif rofl.gif rofl.gif good.gif да уж, действительно бедный студент. это кто ж тебя так о задачил???
Nickel89
Цитата(Vik-2304 @ 27.4.2010, 23:19) *
rofl.gif rofl.gif rofl.gif good.gif да уж, действительно бедный студент. это кто ж тебя так о задачил???


Лабы... Последнюю в этом семестре сдать осталось. Как-то в мае не особо-то и хотелось чем-то заниматься - вот и скидываю все пораньше.
Vik-2304
а че хоть за предмет, я учился такого че та не помню...не теория относительности ли ???
Explosion
t=0:0.0005:1;
x=sin(2*pi*200*t)+0.4*sin(2*pi*150*t)+0.4*sin(2*pi*250*t);
y=x+2*randn(size(t));
plot(y(1:100),'b')
Y=fft(y,1024);
Pyy=Y.*conj(Y)/1024;
f=2000*(0:150)/1024;
plot(f,Pyy(1:151)),grid

Цитата(Vik-2304 @ 28.4.2010, 0:40) *
а че хоть за предмет, я учился такого че та не помню...не теория относительности ли ???

Преобразования Фурье smile.gif
КМС23region
wacko.gif wacko.gif mega_shok.gif
По доброму завидую людям, кто петрит в таких вещах.
Arik
во блин космос!
Max51
Цитата(Nickel89 @ 27.4.2010, 21:37) *
Всем доброго времени суток. Нужен алгоритм быстрого (именно конкретно БПФ) преобразования Фурье для MATLAB. Просто на сколько я знаю FFT(x) - это просто преобразование Фурье, а уж быстрое оно или обычное решает система.
Короче говоря вот что требуется: "Провести вычисления 8-точечного ДПФ с помощью алгоритма БПФ с прореживанием по времени".

P.S. Все это добро нужно сделать в м-файле с выводом всех графиков и всякой лабуды для иллюстрации. Сюда просто текст программы. Выручайте бедного студента. Заранее спасибо!

Такое ощущение, что меня сейчас крайне культурно послали...
Vik-2304
Цитата(Explosion @ 28.4.2010, 0:44) *
t=0:0.0005:1;
x=sin(2*pi*200*t)+0.4*sin(2*pi*150*t)+0.4*sin(2*pi*250*t);
y=x+2*randn(size(t));
plot(y(1:100),'b')
Y=fft(y,1024);
Pyy=Y.*conj(Y)/1024;
f=2000*(0:150)/1024;
plot(f,Pyy(1:151)),grid

good.gif со студента пиво... drinks.gif
Nafanja
Цитата(Explosion @ 28.4.2010, 0:44) *
t=0:0.0005:1;
...

Да, блин, это тебе покруче нанотехнологий biggrin.gif
Олень
Цитата(КМС23region @ 27.4.2010, 22:58) *
wacko.gif wacko.gif mega_shok.gif
По доброму завидую людям, кто петрит в таких вещах.


rofl.gif rofl.gif rofl.gif
Вектрафил
БПФ в спектральном анализе - вещь незаменимая. Но, к сожалению, это не для средних умов: надо обязательно обладать математическим складом ума. А так - просто передрать, - написать и забыть...
Помню, когда поступил на первый курс, пошёл в книжный магазин и купил себе две книжки: "Манифест коммунистической партии" и "Людвиг Фейербах и конец немецкой классической философии". Они мне показались важными в начале жизненного пути и я решил, что обе достойны стать моими настольными книгами biggrin.gif .
Более того, отправившись к тётке в Самарканд на поезде, я взял их с собой, чтобы на досуге почитать smile.gif . Понятное дело, что я даже не притронулся к ним, но положил их на столик в купе. Утром я проснулся от громких голосов и смеха: какой-то мужик, как он представился "с Севера", подсевший к нам ночью и ехавший до Самары, увидев эти мои книжки, был страшно поражён. "Покажите мне хозяина!"- орал он на всё купе. Увидев, что это я - отрок 17 годов, он вытаращил глаза, пожал мне руку и сказал, что гордится мною и спокоен за нашу страну! biggrin.gif
Nickel89
Цитата(Explosion @ 28.4.2010, 0:44) *
t=0:0.0005:1;
x=sin(2*pi*200*t)+0.4*sin(2*pi*150*t)+0.4*sin(2*pi*250*t);
y=x+2*randn(size(t));
plot(y(1:100),'b')
Y=fft(y,1024);
Pyy=Y.*conj(Y)/1024;
f=2000*(0:150)/1024;
plot(f,Pyy(1:151)),grid


Спасибо, но это не совсем то, что нужно. Тут подразумевается БПФ еще на програмном уровне (функция fft(x)), но в моей задаче нужно именно проиллюстрировать алгоритм БПФ. Ответ fft преподавателя не устроил. Т.е. нужно делить матрицу на четные и нечетные коэффициенты и т.д. Умную книжку я тоже вчера вечером прочитал - там только теория относительно этого.
Nickel89
Посидев до 2-х часов ночи практически сам ответил на свой вопрос. Вот листинг, может кому еще пригодится:

x=[6 2 3 9 5 2 7 8];
x1=[x(1,1) x(1,3) x(1,5) x(1,7)];
x2=[x(1,2) x(1,4) x(1,6) x(1,8)];
y1=fft(x1);
y2=fft(x2);
XV(1,1)=y1(1,1)+y2(1,1);
XV(1,5)=y1(1,1)-y2(1,1);

XV(1,2)=y1(1,2)+y2(1,2)*exp(-(2*pi/8)*i*1);
XV(1,6)=y1(1,2)-y2(1,2)*exp(-(2*pi/8)*i*1);

XV(1,3)=y1(1,3)+y2(1,3)*exp(-(2*pi/8)*i*2);
XV(1,7)=y1(1,3)-y2(1,3)*exp(-(2*pi/8)*i*2);

XV(1,4)=y1(1,4)+y2(1,4)*exp(-(2*pi/8)*i*3);
XV(1,8)=y1(1,4)-y2(1,4)*exp(-(2*pi/8)*i*3);

В принципе работает и достаточно точно, по сравнению с обычным fft(x), где х - матрица, приведенная в проге, погрешность составляет где-то 1-5 милллионных. Это конечно не совсем БПФ с прореживанием по времени, однако тут я добился прореживания до 2-х 4-точечных преобразования, т.е. проредив не 8 раз, а 2. Завтра понесу показывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2010 IPS, Inc.