Перейти к содержанию
    

Два действительных БПФ за один комплексный...

Странно, что люди изобрели БПФ, который делает вдвое больше работы, чем нужно.

Там важную часть занимают перестановки входного массива (адресация с обратным порядком битов), и важно иметь массив двойной длины (с учетом мнимой части, понятно).

Тем не менее, симметричность массива после БПФ является хорошим индикатором корректности работы программы. И этот индикатор пропадает при заполнении мнимой части входного массива вторым банком отсчетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Numerical Recipes in C

http://apps.nrbook.com/c/index.html

 

страница 511

"go to page: 511"

 

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

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

 

Тем не менее, симметричность массива после БПФ является хорошим индикатором корректности работы программы. И этот индикатор пропадает при заполнении мнимой части входного массива вторым банком отсчетов.

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

 

Кстати, где то видел схему позволяющую не делать реверс в конце. Как то даные сразу во время вычислений берутся из нужных мест и пишутся в нужные места. Правда непонятно (не очевидно) будет ли это быстрее при реализации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А я в Интернете нашел.

http://www2.units.it/ipl/students_area/imm...cal_Recipes.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, где то видел схему позволяющую не делать реверс в конце. Как то даные сразу во время вычислений берутся из нужных мест и пишутся в нужные места.

Это стандартный режим работы многих ЦСП (бит-реверсная адресация данных). Ускоряет работу алгоритма БПФ, делая ненужной сортировку. Просто реверс в нужные моменты включается и выключается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это стандартный режим работы многих ЦСП (бит-реверсная адресация данных).

Я имел в виду алгоритм программный.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) = X1(k)-X2(k) \cdot exp({-j \cdot  \frac {2 \cdot \pi}{N} \cdot k})

А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А есть вариант, когда вначале несколько иначе? Например где значения не чередуются, массив делится на две части, в качестве действительной части берётся первая половина массива, в качестве мнимой вторая. Подозреваю, что есть, только после комплексного БПФ надо как то перевернуть массив спектра.

 

Такого варианта в природе не существует. Вернее, существует, но с бОльшим объемом вычислений.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2) = X1(k)-X2(k) \cdot exp({-j \cdot  \frac {2 \cdot \pi}{N} \cdot k})

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Task Solver:

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

 

Не понял вопроса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял вопроса.

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

 

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

Изменено пользователем Task Solver

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...