|
Как посчитать FFT используя Cooley-Tukey алгоритм ? |
|
|
|
 |
Ответов
|
Aug 9 2009, 15:12
|
Группа: Участник
Сообщений: 4
Регистрация: 9-08-09
Пользователь №: 51 803

|
Цитата(tocha @ Aug 3 2009, 23:58)  Хочу посчитать FFT используя Cooley-Tukey алгоритм.
Представляю отсчёты в виде квадратной матрицы, считаю дпф столбцов, умножаю на коэффициенты, потом дпф строк - получаю спектр. Хочу поменять порядок расчёта (сначала дпф строк, потом столбцов) - не могу получить спектр. Кто-то реализовывал расчёт иммено в таком порядке (сначала дпф строк, потом столбцов)? В таком порядке БПФ не работает. В Рабинере-Голде в этом месте ошибка.
|
|
|
|
|
Aug 10 2009, 06:00
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(_ea_ @ Aug 9 2009, 18:12)  В таком порядке БПФ не работает Это почему еще? X*W1*W2=(X*W1)*W2=(X*W2)*W1 - знаете такое?
|
|
|
|
|
Aug 10 2009, 13:43
|
Группа: Участник
Сообщений: 4
Регистрация: 9-08-09
Пользователь №: 51 803

|
Цитата(fontp @ Aug 10 2009, 14:51)  Там, видимо, не двумерное преобразование, а вывод одномерного через двумерную факторизацию. Типа того http://fpga.parallel.ru/fft/Приколист говорит, что типа Рабинер дал маху и БПФ с прорежением по времени больше не работает Отменяется. Только по частоте. Это будет посильней "неверной" теоремы Котельникова  Прореживание по времени работает, что оно не работает никто не писал. Не работает формула, по которой БПФ вычисляется как умножение на поворачивающие множители - ДПФ столбцов - ДПФ строк. И она никакого отношения к прореживанию по времени не имеет. А Рабинер действительно дал маху, сначала напутав с индексами при выводе формулы, а затем назвав это прореживанием по времени. Прореживания по времени и по частоте отличаются тем, что вы разбиваете массив на 2 строки и n/2 столбцов в одном случае, и n/2 строк и 2 столбца в другом (см., например, книгу Блейхута).
|
|
|
|
|
Aug 10 2009, 14:00
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(_ea_ @ Aug 10 2009, 17:43)  Прореживание по времени работает, что оно не работает никто не писал. Не работает формула, по которой БПФ вычисляется как умножение на поворачивающие множители - ДПФ столбцов - ДПФ строк. И она никакого отношения к прореживанию по времени не имеет. А Рабинер действительно дал маху, сначала напутав с индексами при выводе формулы, а затем назвав это прореживанием по времени.
Прореживания по времени и по частоте отличаются тем, что вы разбиваете массив на 2 строки и n/2 столбцов в одном случае, и n/2 строк и 2 столбца в другом (см., например, книгу Блейхута). И что просчитав ДПФ по строкам, умножив на некую прорежённую матрицу и сделав ДПФ по столбцам нельзя получить результат? По типу алгоритма Гуда-Томаса (для взаимно простых множителей декомпозиции, где вообще нет вращений и вычисления производятся в любом порядке), но с вращениями для Кули -Тьюки. Не верю, хоть и не проверял )) Мне кажется этих алгоритмов факторизации было придумано на любой вкус миллион. Что в формулах возможны ошибки - это не вопрос. Они во всех книгах есть
|
|
|
|
|
Aug 11 2009, 11:49
|
Частый гость
 
Группа: Свой
Сообщений: 92
Регистрация: 16-05-05
Из: Kiev
Пользователь №: 5 080

|
Вроде разобрались... Цитата(fontp @ Aug 10 2009, 17:00)  И что просчитав ДПФ по строкам, умножив на некую прорежённую матрицу и сделав ДПФ по столбцам нельзя получить результат? Нельзя. Если данные расположены в виде: x_0 x1 ... x_n-1 x_n x_n+1 ... x_2n-1 то вначале нужно делать ДПФ-столбцов, потом умножение на матрицу, потом ДПФ-строк. Если в обратном порядке (ДПФ-строк, потом умножение на матрицу, потом ДПФ-столбцов), то надо делать не одно умножение на матрицу (для вычисления каждого элемента вертикального ДПФ матрица разная), то есть два. Шо и выходит из формулы в Рабинере и Голде. А формула, как это ни удивительно, правильная. Только объём вычислений возрастает, а они это не учитывают и ничего не говорят об этом. Так шо немного, но обманули. И к типам прореживания это не имеет отношения, и по-времени и по-частоте вначале считают ДПФ-столбцов, просто разбиение, как выше сказали, разное (2xN или Nx2) Цитата По типу алгоритма Гуда-Томаса (для взаимно простых множителей декомпозиции, где вообще нет вращений и вычисления производятся в любом порядке), но с вращениями для Кули -Тьюки. Тут переставляют данные в хитром порядке. Можна как хочешь расставить, и построкам начинать, и по столбцам. Смысл был в том, чтоб без переставления начать с ДПФ-последовательного блока данных(x0,x1,...,xN-1) как написано в книге, а нельзя. Вот так.
|
|
|
|
|
Aug 11 2009, 12:47
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Исходники вашей телеги к БПФ в студию. Т.к. написали Вы уже много, но с увеличением количества букв смысл все дальше и дальше. Лично я сначала алгоритмы проверяю в Matlabe, а затем уже пихаю в MC. Так вот, не считая погрешности вычисления, то ДПФ=БПФ(строки-столбцы)=БПФ(столбцы-строки).  Значит, дело явно не в бобине. Или я не понимаю, о чем Вы говорите.
|
|
|
|
Сообщений в этой теме
tocha Как посчитать FFT используя Cooley-Tukey алгоритм ? Aug 3 2009, 16:58 Самурай Цитата(tocha @ Aug 3 2009, 20:58) Предста... Aug 5 2009, 17:06 tocha Цитата(Самурай @ Aug 5 2009, 20:06) Что з... Aug 6 2009, 08:51  fontp Цитата(tocha @ Aug 6 2009, 12:51) Не могу... Aug 6 2009, 10:07       tocha Цитата(shasik @ Aug 11 2009, 15:47) Исход... Aug 11 2009, 13:21        shasik Цитата(tocha @ Aug 11 2009, 16:21) Я гово... Aug 19 2009, 06:56      fontp Цитата(tocha @ Aug 11 2009, 15:49) Только... Aug 11 2009, 13:00 bahurin Цитата(tocha @ Aug 3 2009, 20:58) Хочу по... Aug 15 2009, 11:39
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|