реклама на сайте
подробности

 
 
8 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Быстрое преобразование Фурье не для степени 2, как довести число отсчетов до стпени двойки
Sergey Makarov
сообщение Sep 14 2011, 12:45
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 19-10-05
Из: Россия, г.Чебоксары
Пользователь №: 9 845



Добрый день!
Стоит задача осуществить быстрое преобразовние Фурье для 500 отсчетов. Аппаратно DSP поддерживает быстрое преобразование по модулю 2. Вопрос, как довести кол-во точек до 512? Достаточно ли заполнить недостающие значения нулями? Сильно ли исказится результат преобразования после такого допущения? Если можно ссылкой на математическое обоснование поделитесь плз. Или все таки придется до 512 точек дополнять интерполировав существующие значения? Кто чем может помогите плз.
Go to the top of the page
 
+Quote Post
fontp
сообщение Sep 14 2011, 13:58
Сообщение #2


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Нулей добавить - нормально. Фактически это означает результат преобразования интерполировать.
Разрешение, конечно, при этом не увеличивается, но результат получается адекватный.
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Sep 14 2011, 14:32
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Sergey Makarov @ Sep 14 2011, 16:45) *
Стоит задача осуществить быстрое преобразование Фурье для 500 отсчетов.

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

Сообщение отредактировал SPACUM - Sep 14 2011, 14:38


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
getch
сообщение Sep 14 2011, 17:51
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 117
Регистрация: 6-09-10
Пользователь №: 59 335



Листинг программы на C++ (N - любое)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 14 2011, 19:34
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 14 2011, 19:39
Сообщение #6


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Alexey Lukin @ Sep 15 2011, 00:34) *
Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.

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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 14 2011, 20:29
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(Alexey Lukin @ Sep 14 2011, 22:34) *
Чем больше добавляется нулей, тем точнее получается спектр сигнала. Конечно, это тот же самый спектр, но на более плотной сетке частот.


Ну конечно же нет. Более того, это вообще не спектр, а дпф. А степень близости дпф к спектру определяется не количеством дополнительных нулей, а числом отсчетов исследуемого сигнала. Обсуждалось это 100500 раз в том числе и на страницах данного форума.
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 14 2011, 21:26
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



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

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

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

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

Сообщение отредактировал Alexey Lukin - Sep 14 2011, 21:28
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Sep 14 2011, 21:57
Сообщение #9


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(Alexey Lukin @ Sep 15 2011, 02:26) *
GetSmart, какая палка?

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

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

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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Sep 14 2011, 22:55
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000



Ничего не искажается! Наоборот, становится видно больше правильных деталей. А спектры некоторых сигналов (например, ядер фильтров) без дополнения их нулями перед ДПФ вообще некорректно рассматривать.
Go to the top of the page
 
+Quote Post
Sergey Makarov
сообщение Sep 15 2011, 05:54
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 19-10-05
Из: Россия, г.Чебоксары
Пользователь №: 9 845



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

Цитата(getch @ Sep 14 2011, 21:51) *

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

Цитата(Alexey Lukin @ Sep 15 2011, 01:26) *
всё зависит от задачи. В абсолютном большинстве задач выгоднее дополнить сигнал нулями, чем считать FFT "неправильного" размера.

согласен с вами. А например я могу весь диапазон измеряемых сигналов дискретировать 512 отсчетами? буть то 10Гц сигнал, либо 60Гц. Сильно это будет влять на точность результата?
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Sep 15 2011, 06:22
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Sergey Makarov @ Sep 15 2011, 09:54) *
Сильно это будет влять на точность результата?

Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной.
Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью.
А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
Sergey Makarov
сообщение Sep 15 2011, 06:43
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 19-10-05
Из: Россия, г.Чебоксары
Пользователь №: 9 845



Цитата(SPACUM @ Sep 15 2011, 10:22) *
Это зависит от того, что Вы называете точностью. И какую точность считаете достаточной.
Если Вы уточните Ваши требования, то ответ будет более правильный. Может БПФ совсем не обладает требуемой точностью.
А Alexey Lukin привел пример конечного сигнала (ядро фильтра) тут и дополнять нечего слева и справа от ядра только нули.

первоначально хотел бы добавить что анализируемый сигнал является результатом оцифровки синусоидальных токов и напряжений во время частотного регулирования электроприводом, а преобразование фурье необходимо для анализа основных гармоник (например пяти) составляющих этот сигнал с исключением оставшихся, для последующей развертки и анализа сигнала
Go to the top of the page
 
+Quote Post
thermit
сообщение Sep 15 2011, 06:45
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
Alexey Lukin:
Результат ДПФ — это и есть спектр.


Как скажете...
Go to the top of the page
 
+Quote Post
bookevg
сообщение Sep 15 2011, 07:02
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 320
Регистрация: 13-09-06
Пользователь №: 20 348



В книге Гольденберга 1985г на стр.220, если не выполняется условие 2^N дополняют массив нулями при спектральном анализе, но вот нет математического обоснования данного требования. Как я понимаю автор темы просит дать математич.обоснование разрешения дополнения массива до нужного размера какими то величинами.
Go to the top of the page
 
+Quote Post

8 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 01:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01495 секунд с 7
ELECTRONIX ©2004-2016