|
Два действительных БПФ за один комплексный..., ... или один действительный двойной длины. |
|
|
|
Jan 17 2014, 19:07
|
Группа: Участник
Сообщений: 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
|
|
|
|
2 страниц
< 1 2
|
 |
Ответов
(15 - 24)
|
Jan 20 2014, 09:06
|
Группа: Участник
Сообщений: 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" всё, что нужно У меня оказывается эта книжка есть на винчестере. Цитата(V_G @ Jan 20 2014, 06:11)  Тем не менее, симметричность массива после БПФ является хорошим индикатором корректности работы программы. И этот индикатор пропадает при заполнении мнимой части входного массива вторым банком отсчетов. Во время отладки можно заполнять только одну часть, удостовериться, что всё верно. А во время работы программы использовать обе части! Ведь так быстрее в 2 раза. Или тест написать, который будет с некоторым эпсилон сравнивать результаты вычислений (я так и сделал). Кстати, где то видел схему позволяющую не делать реверс в конце. Как то даные сразу во время вычислений берутся из нужных мест и пишутся в нужные места. Правда непонятно (не очевидно) будет ли это быстрее при реализации.
|
|
|
|
|
Jan 20 2014, 12:30
|
Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083

|
Цитата(V_G @ Jan 20 2014, 15:05)  Это стандартный режим работы многих ЦСП (бит-реверсная адресация данных). Я имел в виду алгоритм программный.
|
|
|
|
|
Jan 20 2014, 21:26
|
Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083

|
Цитата(thermit @ Jan 18 2014, 13:35)  А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра.
|
|
|
|
|
Jan 21 2014, 13:01
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата(Task Solver @ Jan 21 2014, 00:26)  А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра. Такого варианта в природе не существует. Вернее, существует, но с бОльшим объемом вычислений.
|
|
|
|
|
Apr 6 2014, 05:28
|
Группа: Участник
Сообщений: 14
Регистрация: 17-01-14
Пользователь №: 80 083

|
Цитата(thermit @ Jan 18 2014, 13:35)  Всё же почему в конце действительное число получается? Если X(k+N/2) является разностью вещественного и комплексного? Поясните пожалуйста.
|
|
|
|
|
Apr 6 2014, 06:55
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Task Solver: Всё же почему в конце действительное число получается? Если X(k+N/2) является разностью вещественного и комплексного? Поясните пожалуйста. Не понял вопроса.
|
|
|
|
|
Apr 6 2014, 11:46
|
Группа: Участник
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|