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

 
 
8 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Быстрое преобразование Фурье не для степени 2, как довести число отсчетов до стпени двойки
GetSmart
сообщение Oct 5 2011, 19:25
Сообщение #61


.
******

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



Почитал все посты тредстартера. Не понял что надо найти. Во-первых, разумеется, при юзании БПФ/ДПФ сигнал должен быть хотя бы 1 период. То есть в 500 точках 40 мкс дискр. искать сигнал в 30 или 20 гц занятие бесполезное. Как и сигналы диапазона 0-51 гц. Разрешение каждого бина будет 50 гц. Хоть дополняй нулями, хоть не дополняй. То есть увидеть можно 50,100,150 гц сигналы, в реале это будут /грубо/ 25-75, 75-125, 125-175 и тд. Дополнение нулями (500->512) на младших гармониках (что нужно ТС) занятие бесполезное, даже вредное. Советчики этого метода пересказали что-то, о чём где-то прочитали не поняв сути и задания.

Вообще, если ТС нужны низкие частоты, то почему дискр. 40 мкс? Почему не 1 мс и с 500 сэмплами будет разрешение 2..500 гц. Тогда можно смело брать 512 отсчётов и не беспокоиться о точности периода, который всё равно точно не известен. У частотника наверняка будут и низкие частоты, ниже сетевой частоты, хотя конечно от нагрузки зависит.

Ну и, собственно, прежде чем что-то считать нужно чётко понимать что и где "искать". И есть ли там это что-то. А то можно в запале захотеть найти спектр одиночного импульса. При этом как говорится - флаг в руки.


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


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639



Цитата(Sergey Makarov @ Sep 14 2011, 16:45) *
Добрый день!
Стоит задача осуществить быстрое преобразовние Фурье для 500 отсчетов. Аппаратно DSP поддерживает быстрое преобразование по модулю 2. Вопрос, как довести кол-во точек до 512? Достаточно ли заполнить недостающие значения нулями? Сильно ли исказится результат преобразования после такого допущения?

Не сильно, но исказится. Дополнение нулями во временной области), как следует из свойств ПФ приведет к тому, что полученный спектр будет являться сверткой настоящего спектра (т.е. спектра 500-отсчетного исходного сигнала) и ПФ от прямоугольного окна (s_i = 1, i=0:499 и s_i = 0, i=500:511). Спектр этого окна вы отлично знаете - это функция sinc. Поскольку окно очень широкое, то ширина функции sinc будет чуть шире одного отсчета. Другими словами, спектр после дополнения нулями "слегка размажется".
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Oct 7 2011, 07:48
Сообщение #63


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

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



Не забывайте, что свёртка с sinc происходит при любом размере ПФ: как 500, так и 512.
Go to the top of the page
 
+Quote Post
andyp
сообщение Oct 8 2011, 11:49
Сообщение #64


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



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


Если ДПФ используется для оценки СПМ, то вместо добавления 0 экстраполируйте по 6 отсчетов с каждого края и будет Вам счастье. Это явно дешевле интерполяции. За теоретическим обоснованием - к Марплу гл. 7.4. В качестве экстраполирующего можно использовать полосовой фильтр, если примерно известна полоса процесса, который анализируете.

Сообщение отредактировал andyp - Oct 8 2011, 11:52
Go to the top of the page
 
+Quote Post
Sergey Makarov
сообщение Oct 10 2011, 13:54
Сообщение #65


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

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



Цитата(GetSmart @ Oct 5 2011, 23:25) *
Почитал все посты тредстартера. Не понял что надо найти. Во-первых, разумеется, при юзании БПФ/ДПФ сигнал должен быть хотя бы 1 период. То есть в 500 точках 40 мкс дискр. искать сигнал в 30 или 20 гц занятие бесполезное. Как и сигналы диапазона 0-51 гц. Разрешение каждого бина будет 50 гц. Хоть дополняй нулями, хоть не дополняй. То есть увидеть можно 50,100,150 гц сигналы, в реале это будут /грубо/ 25-75, 75-125, 125-175 и тд. Дополнение нулями (500->512) на младших гармониках (что нужно ТС) занятие бесполезное, даже вредное. Советчики этого метода пересказали что-то, о чём где-то прочитали не поняв сути и задания.

Вообще, если ТС нужны низкие частоты, то почему дискр. 40 мкс? Почему не 1 мс и с 500 сэмплами будет разрешение 2..500 гц. Тогда можно смело брать 512 отсчётов и не беспокоиться о точности периода, который всё равно точно не известен. У частотника наверняка будут и низкие частоты, ниже сетевой частоты, хотя конечно от нагрузки зависит.

Ну и, собственно, прежде чем что-то считать нужно чётко понимать что и где "искать". И есть ли там это что-то. А то можно в запале захотеть найти спектр одиночного импульса. При этом как говорится - флаг в руки.


С вами согласен полностью, искать 30Гц сигналы в 500 точках с дискретой 40 мкс дело бесполезное, и не благодарное, хоть сколько угодно не дополняй данный массив нулями. Я это уже понял. Моделирование в МАТЛАБ все (или почти все) расставило на свои места. Только вот не понял как это " 1 мс и с 500 сэмплами будет разрешение 2..500 гц."? может все таки 50Гц?


Цитата(andyp @ Oct 8 2011, 15:49) *
Если ДПФ используется для оценки СПМ, то вместо добавления 0 экстраполируйте по 6 отсчетов с каждого края и будет Вам счастье. Это явно дешевле интерполяции. За теоретическим обоснованием - к Марплу гл. 7.4. В качестве экстраполирующего можно использовать полосовой фильтр, если примерно известна полоса процесса, который анализируете.


вобщем путем моделирования стало ясно, что добавление нулей к отсчетам функции с 500 до 512, приводит к смещению спектра. например для синусоидального 50Гц сигнала добавленного нулями частота максимальной гармоники стала равной 48,8Гц. Экспериментировал много, с сигналами разной частоты, всегда получал смещение. Да, после увеличения кол-ва отсчетов до большего значения добавлением нулей , максимумы спектра выделяются явнее, но частота этих максимумов уже не соответствует действительности.

Go to the top of the page
 
+Quote Post
SPACUM
сообщение Oct 10 2011, 14:46
Сообщение #66


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

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



Цитата(Sergey Makarov @ Oct 10 2011, 17:54) *
Только вот не понял как это " 1 мс и с 500 сэмплами будет разрешение 2..500 гц."? может все таки 50Гц?

Тк. автор не ответил, отвечу за него. Время выборки = 500 * 1мс = .5с. Самая медленная синусоида которая туда влезает F = 1/.5c = 2Гц. Это первая гармоника Фурье. А Ваши 50Гц будут 25й гармоникой.
Самое первое упоминание об БПФ на 500 точек было в этой книге, я тогда оттуда программу и взял. И все работало.
(http://www.knigonosha.net/tehnika/other_tehn/31-primenenie-teorii-chisel-v-cifrovoj-obrabotke.html)

Сообщение отредактировал SPACUM - Oct 10 2011, 15:00


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


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата
вобщем путем моделирования стало ясно, что добавление нулей к отсчетам функции с 500 до 512, приводит к смещению спектра. например для синусоидального 50Гц сигнала добавленного нулями частота максимальной гармоники стала равной 48,8Гц. Экспериментировал много, с сигналами разной частоты, всегда получал смещение. Да, после увеличения кол-ва отсчетов до большего значения добавлением нулей , максимумы спектра выделяются явнее, но частота этих максимумов уже не соответствует действительности.


при добавлении отсчетов по краям смещения спектра не происходит, немного повышается разрешение (ну те ширина колодца DFT была Fs/500, а стала Fs/512) и Ваша фиксированная частота как-бы "смещается", попадая в другие колодцы.

Сообщение отредактировал andyp - Oct 10 2011, 17:53
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 11 2011, 07:56
Сообщение #68


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Sergey Makarov @ Oct 10 2011, 16:54) *
Только вот не понял как это " 1 мс и с 500 сэмплами будет разрешение 2..500 гц."?

Это называется не "разрешение", а диапазон. А разрешение будет 2 Hz. То есть, вычислится спектр для частот 2, 4, 6... 500 Hz.
Go to the top of the page
 
+Quote Post
Sergey Makarov
сообщение Oct 11 2011, 11:44
Сообщение #69


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

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



Цитата(SPACUM @ Oct 10 2011, 18:46) *
Тк. автор не ответил, отвечу за него. Время выборки = 500 * 1мс = .5с. Самая медленная синусоида которая туда влезает F = 1/.5c = 2Гц. Это первая гармоника Фурье. А Ваши 50Гц будут 25й гармоникой.
Самое первое упоминание об БПФ на 500 точек было в этой книге, я тогда оттуда программу и взял. И все работало.
(http://www.knigonosha.net/tehnika/other_tehn/31-primenenie-teorii-chisel-v-cifrovoj-obrabotke.html)

Спасибо за ссылкуsm.gif а на счет диапазона я понял. Времени выборки 1 мс соотвествует частота 1кГц, диапазон частот представленных в спектре сигнала 1000/500*k, где k = 1...250, так как спектр симметричен относительно N/2, в данном случае 250, поэтому и получается 1000/500*250=500 Гц, последняя частота для 500 точек отсчетов.

Цитата(andyp @ Oct 10 2011, 21:50) *
при добавлении отсчетов по краям смещения спектра не происходит, немного повышается разрешение (ну те ширина колодца DFT была Fs/500, а стала Fs/512) и Ваша фиксированная частота как-бы "смещается", попадая в другие колодцы.


я могу быть и не прав, но моделирование в матлабе мне показало что результат ДПФ одинаков для сигнала добавленного нулями либо только в конец массива, либо симметрично с каждой стороны.

Цитата(ViKo @ Oct 11 2011, 11:56) *
Это называется не "разрешение", а диапазон. А разрешение будет 2 Hz. То есть, вычислится спектр для частот 2, 4, 6... 500 Hz.

да спасибо, разобрался. я почему то подумал что мне пытаются сказать что 1мс и 500 отсчетов достаточно для диапазона входных сигналов 2..500 Гц. Видимо уже мозг заклинилоsm.gif
Go to the top of the page
 
+Quote Post
andyp
сообщение Oct 11 2011, 12:06
Сообщение #70


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(Sergey Makarov @ Oct 11 2011, 15:44) *
я могу быть и не прав, но моделирование в матлабе мне показало что результат ДПФ одинаков для сигнала добавленного нулями либо только в конец массива, либо симметрично с каждой стороны.


амплитуда ДФТ будет одинаковой. фаза - изменится. Задержка во временной области соответствует умножению ДФТ на комплексную экспоненту

в догонку к предыдущему - сдвиг фазы будет зависеть от частоты и величины задержки (те фактически изменится наклон фазовой характеристики)
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 18 2011, 08:22
Сообщение #71


.
******

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



Господа/Товарищи!
А дробный ДПФ/БПФ никто не видел? Мне вот понадобилось (особено для малых N [16..256]). В частности хотелось бы определять промежуточные дробные частоты с веществ. значениями 0.5, 0.25, 0.75 и др. от 1/T.
Знаю точно, что дробный ДПФ работает не хуже целого по части нахождения пиков гармоник. Испытывал на медленном алгоритме. Но вдруг есть побыстрее.

Сообщение отредактировал GetSmart - Oct 18 2011, 08:25


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


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

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



А что такое дробный ДПФ?
Если надо определять коэффициенты с "дробными частотами" (между бинами), то дополняйте сигнал нулями и берите обычное ДПФ. Обычное ДПФ при желании можно слегка ускорить, выкинув из вычислений дополняемые нули, но не сильно. Это называется pruned FFT.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 18 2011, 10:48
Сообщение #73


.
******

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



Цитата(Alexey Lukin @ Oct 18 2011, 15:00) *
Обычное ДПФ при желании можно слегка ускорить, выкинув из вычислений дополняемые нули, но не сильно. Это называется pruned FFT.

Что-то про ДПФ не понял. Зачем его замедлять, а потом ускорять? Для БПФ это понятно.

Дробный ДПФ/БПФ - это вычисление спектра частот 1.5, 2.5, 3.5 и т.д., в том числе и с любыми вещественными долями. Вообще, вся "ортогональщина" гармоник Фурье это только в идеале. И даже на бесконечности никаких улучшений. В реале чаще всего гармоники не кратные и не совсем ортогональные друг другу.

У меня стоит задача. Взять 16 или 32 сэмпла с одним синусом внутри, но на фоне большого шума. По сути, если в спектре есть самый высокий пик, то это предположительно мой синус. И нужно узнать из этих 16 сэмплов поточнее частоту синуса (до 1/8 бина для начала хватит). Но штука в том, что если частота синуса некратна бину (изначально я её не знаю и не могу предугадать), то в обычном БПФ/ДПФ пик на спектре может отклоняться от реального значительно (возможно до 0.7 или до 0.5 от реала). Однако, дробный ДПФ (возможно и дополненный нулями БПФ и перенормированный) может показывать пики спектра ближе к реальным.

Сообщение отредактировал GetSmart - Oct 18 2011, 10:49


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Oct 18 2011, 10:49
Сообщение #74


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

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



Цитата(GetSmart @ Oct 18 2011, 12:22) *
Знаю точно, что дробный ДПФ работает не хуже целого по части нахождения пиков гармоник. Испытывал на медленном алгоритме. Но вдруг есть побыстрее.

Согласен.
Похоже выше 7й гармоники дополнение нулями работает удовлетворительно. А ниже нужны особые методы.
У меня еще и шумы, так что менее 2000 точек мне неинтересно, а больше долго.
А для 30 точек без шума может метод барона Прони подойдет?
Ничего другого по вопросу в литературе не встречал.
Еще мне кажется для частот в начале спектра Фурье и в конце спектра Фурье предел Крамера-Рао недостижим с запасом.
И для Вашего случая особенно. А у Вас получилось близко?


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Oct 18 2011, 10:58
Сообщение #75


.
******

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



Цитата(SPACUM @ Oct 18 2011, 15:49) *
А для 30 точек без шума может метод барона Прони подойдет?

Цитата
Барон де Прони(Гаспар Рише) был другом Наполеона и одним из основоположников метрической системы мер.
Имя барона Гаспара де Прони входит в список 72 имён на Эйфелевой башне. Он действительно разработал
свой метод спектрального анализа при котором вычислялись истинные амплитуды и частоты и не было
никакой спектральной утечки. Соответствующая программа на ФОРТРАНе приведена в книге
С.Л. Марпл-мл. "Цифровой спектральный анализ и его приложения" (гл. 11). Сигнал приближался
затухающими синусоидами. Этот метод применяется не везде из-за большого объема расчетов.
Однако результат восхитительный.

Никогда о нём не слышал. Будем почитать.

Цитата(SPACUM @ Oct 18 2011, 15:49) *
И для Вашего случая особенно. А у Вас получилось близко?

Скорее нет. Хотя в 32 точках всего 16 гармоник и я затрудняюсь правильно ответить.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

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

 


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


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