![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Доьрого времени суток.
Подскажите кто нибудь делал реализацию БПФ из комплексного в реальное на GPU? Не могу разобраться.....у меня на входе есть массив Complex.....а что делать дальше? Подскажите пожалуйста кто знает. С уважением, hawk3500. P.S. SDK смотрел и пример от туда тоже...но по прежнему не совсем ясно. --------------------
воин dzen'a |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Что значит "реализация БПФ из комплексного в реальное"?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
на входе есть массив состоящий из структур:
struct complex_z { double Re; double Im; } собственно над ним надо совершить БПФ. --------------------
воин dzen'a |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Есть прямое и обратное преобразование Фурье. Частотный спектр всегда определен на комплексной плоскости. Вам, судя по тому, что числа комплексные, надо сделать обратное преобразование? Точность у вас двойная.
Используйте библиотеку CUFFT. Она отлично документирована и идёт с примерами. В чём проблема? -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Результат БПФ - всегда комплексный. Если тебе нужно получить спектр мощности, то просто берёшь амплитуду каждого числа
брать корень, в принципе, необязательно.
Почему так категорично ? Отсчёты сигнала тоже могут быть комплексными. Я, например, в большинстве случаев работаю именно с комплексным сигналом (он получается из вещественного путём конвертации и фильтрации спец. микросхемой. AD6634, например) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 20 Всего: 121 |
Потому что автор сказал, что надо complex -> real, а вы говорите про complex -> complex fft В общем, я просто предположил. Почему? Вы записали вычисление абсолютного значения комплексного числа (расстояние от начала координат на комплексной плоскости), корень там обязателен. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
borisbn , да , я работаю именно с комплексным сигналом.
И хочу получить по средствам БПФ на CUDA получить огибающую, т.е. именно можность сигнала , по этому из комплексного в реальное. Я примерчики смотрел на SDK nvidia , но вот что то не доконца понятно....хотелось бы увидеть просто пример альтернативной реализации либо же просто менее нагруженный и более понятный. --------------------
воин dzen'a |
|||
|
||||
| borisbn |
|
||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Если речь идёт о спектре сигнала, то обычно в дальнейшем спектр мощности преобразовывают к децибелам. Формула для логарифмического спектра выглядит так
Это для случая, когда в массиве spectrAmplitude лежит амплитуда спектра, т.е. корень. Если же известно, что там лежит мощность спектра (корень не брали), т.е. так
то эту двойку можно вынести и получим
стоп! ты хочешь получить огибающую или мощность сигнала или спектра сигнала ? Если первое, то просто делаешь
Если второе, то после БПФ ты получаешь массив с комплексными числами. Чтобы получить спектр мощности делаешь как я написал в своём первом сообщении. Добавлено через 3 минуты и 15 секунд P.S. Для получения мощности сигнала БПФ вообще не нужен (разве что нужно посчитать мощность в какой-то определённой полосе, а не во всей входной полосе сигнала) -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||||||
|
|||||||||||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Нужно получить именно спектр мощности в данном частотном диапозоне.
Т.е. получить спектр сигнала и построить график мощности по частоте. --------------------
воин dzen'a |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
после cufftExecZ2Z на выходе получается массив cufftDoubleComplex. Это - комплексный спектр. Чтобы получить спектр мощности делаешь:
Добавлено через 32 секунды я надеюсь, этот документ - http://developer.download.nvidia.com/compu...FFT_Library.pdf - у тебя есть ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| hawk3500 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 246 Регистрация: 6.2.2009 Репутация: нет Всего: 2 |
Всем спасибо.
Вопрос решил. Но вот осталась одна не ясность. Кодна я получаю своего рода хэндл при вызове функции cudaMalloc в одном потоке и затем пытаюсь его использовать в другом потоке ,то ничего не выходит.Т.е. мне приходится в потоке где происходит обработка выделять каждый раз память в GPU. Подскажит епожалуйста кто нибудь с таким встречался? --------------------
воин dzen'a |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |