Sergey Makarov 0 Posted September 14, 2011 · Report post Добрый день! Стоит задача осуществить быстрое преобразовние Фурье для 500 отсчетов. Аппаратно DSP поддерживает быстрое преобразование по модулю 2. Вопрос, как довести кол-во точек до 512? Достаточно ли заполнить недостающие значения нулями? Сильно ли исказится результат преобразования после такого допущения? Если можно ссылкой на математическое обоснование поделитесь плз. Или все таки придется до 512 точек дополнять интерполировав существующие значения? Кто чем может помогите плз. Quote Ответить с цитированием Share this post Link to post Share on other sites
fontp 0 Posted September 14, 2011 · Report post Нулей добавить - нормально. Фактически это означает результат преобразования интерполировать. Разрешение, конечно, при этом не увеличивается, но результат получается адекватный. Quote Ответить с цитированием Share this post Link to post Share on other sites
SPACUM 0 Posted September 14, 2011 (edited) · Report post Стоит задача осуществить быстрое преобразование Фурье для 500 отсчетов. А мне нули не нравятся, спектр совсем другой. Существует множество алгоритмов для 500 отсчетов, например Винограда(раза в полтора медленнее чем FFT на 512 точек), или FFTW (http://www.fftw.org)авторы называют его самым быстрым для любого числа точек и текст программы приведен. Edited September 14, 2011 by SPACUM Quote Ответить с цитированием Share this post Link to post Share on other sites
getch 0 Posted September 14, 2011 · Report post Листинг программы на C++ (N - любое) Quote Ответить с цитированием Share this post Link to post Share on other sites
Alexey Lukin 0 Posted September 14, 2011 · Report post Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот. Quote Ответить с цитированием Share this post Link to post Share on other sites
GetSmart 0 Posted September 14, 2011 · Report post Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот. А как же палка о двух концах? Quote Ответить с цитированием Share this post Link to post Share on other sites
thermit 0 Posted September 14, 2011 · Report post Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот. Ну конечно же нет. Более того, это вообще не спектр, а дпф. А степень близости дпф к спектру определяется не количеством дополнительных нулей, а числом отсчетов исследуемого сигнала. Обсуждалось это 100500 раз в том числе и на страницах данного форума. Quote Ответить с цитированием Share this post Link to post Share on other sites
Alexey Lukin 0 Posted September 14, 2011 (edited) · Report post thermit, вы что-то не в кассу... Результат ДПФ — это и есть спектр. GetSmart, какая палка? fontp правильно написал. Sergey Makarov, всё зависит от задачи. В абсолютном большинстве задач выгоднее дополнить сигнал нулями, чем считать FFT "неправильного" размера. Edited September 14, 2011 by Alexey Lukin Quote Ответить с цитированием Share this post Link to post Share on other sites
GetSmart 0 Posted September 14, 2011 · Report post GetSmart, какая палка? fontp правильно написал. Везде надо искать подвох И вы с fontp обманщики, мягко говоря, те ещё. Спектр, в виде частотного разрешения, может и не меняется, но амплитуда искажается. Quote Ответить с цитированием Share this post Link to post Share on other sites
Alexey Lukin 0 Posted September 14, 2011 · Report post Ничего не искажается! Наоборот, становится видно больше правильных деталей. А спектры некоторых сигналов (например, ядер фильтров) без дополнения их нулями перед ДПФ вообще некорректно рассматривать. Quote Ответить с цитированием Share this post Link to post Share on other sites
Sergey Makarov 0 Posted September 15, 2011 · Report post Спасибо большое за ответы! Кое что уже началось проясняться;) Не могли бы еще ответить на один небольшой вопрос. Есть массив из 500 точек, грубо говоря это отсчеты для 50тигерцового сигнала с отсчетом 40 мкс за один период. А мне надо допустим разложить сигнал с основной частотой 30Гц, тогда массив получается 833 точки на один период. Для сигнала с еще меньшей частотой, массив будет еще больше. Отсюда вопрос, надо ли знать для преобразования Фурье частоту раскладываемого сигнала? или в результате разложения частота основной гармоники и так станет известной? Вроде как судя по формулам частота раскладываемого сигнала нигде не фигурирует, а делается предположение что массив данных отсчетов значений функций это есть значения за одни период, и дальше этот сигнал будет повторяться. ТО есть я могу для 30герцового сигнала взять теже 500 отсчетов? или минимум должен взять кол-во отсчетов снятое за период сигнала? Извините за дилетантские вопросы, с обработкой цифровых сигналов пока столкнулся впервые. Листинг программы на C++ (N - любое) спасибо за приведенную ссылку;) но вопрос заключался немного в другом, есть аппаратная реализация в ДСП по алгоритму двойки, и мне надо довести 500 отсчетов до 512 каким то образом, чтоб не тратиь вычеслительные ресурсы контроллера, используя аппаратный модуль. всё зависит от задачи. В абсолютном большинстве задач выгоднее дополнить сигнал нулями, чем считать FFT "неправильного" размера. согласен с вами. А например я могу весь диапазон измеряемых сигналов дискретировать 512 отсчетами? буть то 10Гц сигнал, либо 60Гц. Сильно это будет влять на точность результата? Quote Ответить с цитированием Share this post Link to post Share on other sites
SPACUM 0 Posted September 15, 2011 · Report post Сильно это будет влять на точность результата? Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной. Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью. А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули. Quote Ответить с цитированием Share this post Link to post Share on other sites
Sergey Makarov 0 Posted September 15, 2011 · Report post Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной. Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью. А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули. первоначально хотел бы добавить что анализируемый сигнал является результатом оцифровки синусоидальных токов и напряжений во время частотного регулирования электроприводом, а преобразование фурье необходимо для анализа основных гармоник (например пяти) составляющих этот сигнал с исключением оставшихся, для последующей развертки и анализа сигнала Quote Ответить с цитированием Share this post Link to post Share on other sites
thermit 0 Posted September 15, 2011 · Report post Alexey Lukin: Результат ДПФ — это и есть спектр. Как скажете... Quote Ответить с цитированием Share this post Link to post Share on other sites
bookevg 0 Posted September 15, 2011 · Report post В книге Гольденберга 1985г на стр.220, если не выполняется условие 2^N дополняют массив нулями при спектральном анализе, но вот нет математического обоснования данного требования. Как я понимаю автор темы просит дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами. Quote Ответить с цитированием Share this post Link to post Share on other sites