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

Быстрое преобразование Фурье не для степени 2

Добрый день!

Стоит задача осуществить быстрое преобразовние Фурье для 500 отсчетов. Аппаратно DSP поддерживает быстрое преобразование по модулю 2. Вопрос, как довести кол-во точек до 512? Достаточно ли заполнить недостающие значения нулями? Сильно ли исказится результат преобразования после такого допущения? Если можно ссылкой на математическое обоснование поделитесь плз. Или все таки придется до 512 точек дополнять интерполировав существующие значения? Кто чем может помогите плз.

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


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

Нулей добавить - нормально. Фактически это означает результат преобразования интерполировать.

Разрешение, конечно, при этом не увеличивается, но результат получается адекватный.

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


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

Стоит задача осуществить быстрое преобразование Фурье для 500 отсчетов.

А мне нули не нравятся, спектр совсем другой. Существует множество алгоритмов для 500 отсчетов, например Винограда(раза в полтора медленнее чем FFT на 512 точек), или FFTW (http://www.fftw.org)авторы называют его самым быстрым для любого числа точек и текст программы приведен.

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

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


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

Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.

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


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

Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.

А как же палка о двух концах?

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


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

Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.

 

Ну конечно же нет. Более того, это вообще не спектр, а дпф. А степень близости дпф к спектру определяется не количеством дополнительных нулей, а числом отсчетов исследуемого сигнала. Обсуждалось это 100500 раз в том числе и на страницах данного форума.

 

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


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

thermit, вы что-то не в кассу... Результат ДПФ — это и есть спектр.

 

GetSmart, какая палка?

 

fontp правильно написал.

 

Sergey Makarov, всё зависит от задачи. В абсолютном большинстве задач выгоднее дополнить сигнал нулями, чем считать FFT "неправильного" размера.

Изменено пользователем Alexey Lukin

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


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

GetSmart, какая палка?

 

fontp правильно написал.

Везде надо искать подвох :biggrin:

 

И вы с fontp обманщики, мягко говоря, те ещё. Спектр, в виде частотного разрешения, может и не меняется, но амплитуда искажается.

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


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

Ничего не искажается! Наоборот, становится видно больше правильных деталей. А спектры некоторых сигналов (например, ядер фильтров) без дополнения их нулями перед ДПФ вообще некорректно рассматривать.

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


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

Спасибо большое за ответы! Кое что уже началось проясняться;) Не могли бы еще ответить на один небольшой вопрос. Есть массив из 500 точек, грубо говоря это отсчеты для 50тигерцового сигнала с отсчетом 40 мкс за один период. А мне надо допустим разложить сигнал с основной частотой 30Гц, тогда массив получается 833 точки на один период. Для сигнала с еще меньшей частотой, массив будет еще больше. Отсюда вопрос, надо ли знать для преобразования Фурье частоту раскладываемого сигнала? или в результате разложения частота основной гармоники и так станет известной? Вроде как судя по формулам частота раскладываемого сигнала нигде не фигурирует, а делается предположение что массив данных отсчетов значений функций это есть значения за одни период, и дальше этот сигнал будет повторяться. ТО есть я могу для 30герцового сигнала взять теже 500 отсчетов? или минимум должен взять кол-во отсчетов снятое за период сигнала? Извините за дилетантские вопросы, с обработкой цифровых сигналов пока столкнулся впервые.

 

спасибо за приведенную ссылку;) но вопрос заключался немного в другом, есть аппаратная реализация в ДСП по алгоритму двойки, и мне надо довести 500 отсчетов до 512 каким то образом, чтоб не тратиь вычеслительные ресурсы контроллера, используя аппаратный модуль.

 

всё зависит от задачи. В абсолютном большинстве задач выгоднее дополнить сигнал нулями, чем считать FFT "неправильного" размера.

согласен с вами. А например я могу весь диапазон измеряемых сигналов дискретировать 512 отсчетами? буть то 10Гц сигнал, либо 60Гц. Сильно это будет влять на точность результата?

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


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

Сильно это будет влять на точность результата?

Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной.

Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью.

А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули.

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


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

Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной.

Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью.

А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули.

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

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


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

В книге Гольденберга 1985г на стр.220, если не выполняется условие 2^N дополняют массив нулями при спектральном анализе, но вот нет математического обоснования данного требования. Как я понимаю автор темы просит дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами.

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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