реклама на сайте
подробности

 
 
> Два действительных БПФ за один комплексный..., ... или один действительный двойной длины.
Task Solver
сообщение Jan 17 2014, 19:07
Сообщение #1





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Есть функция делающая БПФ (FFT) для комплексного float входа (для длин степени двойки).

У меня есть два вопроса. Искал ответы в интернете, но не нашёл. Нашёл только те же упоминания возможности. Особенно интересует второй вопрос.

1) Как можно сделать за один её вызов два БПФ для действительного входа той же длины?
Знаю что один вход надо записать в действительную часть, а второй в мнимую. Но что делать после вызова? Как разделить результаты?
(Кое что было написано тут, но непонятно: http://electronix.ru/forum/index.php?showtopic=71731)

2) Как можно сделать за один её вызов один БПФ для действительного входа двойной длины?
Этот вопрос важнее, чем первый.

Если можно напишите формулы.

Собственно второй вопрос навеян найденными высказываниями в интернете о подобной возможности. И вопросом о том, что действительное БПФ длины N можно реализовать эффективней чем комплексное БПФ с нулевыми мнимыми частями так же длины N.


Сообщение отредактировал Task Solver - Jan 17 2014, 18:53
Go to the top of the page
 
+Quote Post
2 страниц V  < 1 2  
Start new topic
Ответов (15 - 24)
V_G
сообщение Jan 20 2014, 02:11
Сообщение #16


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(ViKo @ Jan 18 2014, 22:34) *
Странно, что люди изобрели БПФ, который делает вдвое больше работы, чем нужно.

Там важную часть занимают перестановки входного массива (адресация с обратным порядком битов), и важно иметь массив двойной длины (с учетом мнимой части, понятно).
Тем не менее, симметричность массива после БПФ является хорошим индикатором корректности работы программы. И этот индикатор пропадает при заполнении мнимой части входного массива вторым банком отсчетов.
Go to the top of the page
 
+Quote Post
Task Solver
сообщение Jan 20 2014, 09:06
Сообщение #17





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Цитата(utherVV @ Jan 20 2014, 05:49) *
Numerical Recipes in C
http://apps.nrbook.com/c/index.html

страница 511
"go to page: 511"

всё, что нужно

У меня оказывается эта книжка есть на винчестере. biggrin.gif

Цитата(V_G @ Jan 20 2014, 06:11) *
Тем не менее, симметричность массива после БПФ является хорошим индикатором корректности работы программы. И этот индикатор пропадает при заполнении мнимой части входного массива вторым банком отсчетов.

Во время отладки можно заполнять только одну часть, удостовериться, что всё верно. А во время работы программы использовать обе части! Ведь так быстрее в 2 раза. Или тест написать, который будет с некоторым эпсилон сравнивать результаты вычислений (я так и сделал).

Кстати, где то видел схему позволяющую не делать реверс в конце. Как то даные сразу во время вычислений берутся из нужных мест и пишутся в нужные места. Правда непонятно (не очевидно) будет ли это быстрее при реализации.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 20 2014, 10:34
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Task Solver @ Jan 20 2014, 12:06) *
У меня оказывается эта книжка есть на винчестере. biggrin.gif

А я в Интернете нашел.
http://www2.units.it/ipl/students_area/imm...cal_Recipes.pdf
Go to the top of the page
 
+Quote Post
V_G
сообщение Jan 20 2014, 11:05
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Цитата(Task Solver @ Jan 20 2014, 19:06) *
Кстати, где то видел схему позволяющую не делать реверс в конце. Как то даные сразу во время вычислений берутся из нужных мест и пишутся в нужные места.

Это стандартный режим работы многих ЦСП (бит-реверсная адресация данных). Ускоряет работу алгоритма БПФ, делая ненужной сортировку. Просто реверс в нужные моменты включается и выключается.
Go to the top of the page
 
+Quote Post
Task Solver
сообщение Jan 20 2014, 12:30
Сообщение #20





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Цитата(V_G @ Jan 20 2014, 15:05) *
Это стандартный режим работы многих ЦСП (бит-реверсная адресация данных).

Я имел в виду алгоритм программный.
Go to the top of the page
 
+Quote Post
Task Solver
сообщение Jan 20 2014, 21:26
Сообщение #21





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Цитата(thermit @ Jan 18 2014, 13:35) *

А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра.
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 21 2014, 13:01
Сообщение #22


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(Task Solver @ Jan 21 2014, 00:26) *
А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра.


Такого варианта в природе не существует. Вернее, существует, но с бОльшим объемом вычислений.
Go to the top of the page
 
+Quote Post
Task Solver
сообщение Apr 6 2014, 05:28
Сообщение #23





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Цитата(thermit @ Jan 18 2014, 13:35) *

Всё же почему в конце действительное число получается? Если X(k+N/2) является разностью вещественного и комплексного? Поясните пожалуйста.
Go to the top of the page
 
+Quote Post
thermit
сообщение Apr 6 2014, 06:55
Сообщение #24


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
Task Solver:
Всё же почему в конце действительное число получается? Если X(k+N/2) является разностью вещественного и комплексного? Поясните пожалуйста.


Не понял вопроса.
Go to the top of the page
 
+Quote Post
Task Solver
сообщение Apr 6 2014, 11:46
Сообщение #25





Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083



Цитата(thermit @ Apr 6 2014, 10:55) *
Не понял вопроса.

X1(k) и X2(k) - комплексные числа? А X(k) в конце - зеркальный спектр? Тоже комплексный?

Другой вопрос. Можно ли так же быстро за вызов обратного FFT половинной длины посчитать обратную функцию к действительному преобразованию? (Кажется что ДА)

Сообщение отредактировал Task Solver - Apr 6 2014, 13:29
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 21:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016