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

 
 
 
Reply to this topicStart new topic
> БПФ. Дублирование данных при вычислении спектра, Уменьшение периода расчета БПФ путем дублирования данных.
MSP430F
сообщение Feb 27 2014, 11:21
Сообщение #1


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

Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911



Уважаемые коллеги!

Прошу вашего совета вот в таком вопросе.

Как известно, для вычисления спектра с шириной линии 1 Гц обработке подвергается массив оцифрованных данных длительностью 1 с.
Например, частота дискретизации равна 4096 Гц. В течении 1 секунды формируем массив из 4096 значений, оцифрованных АЦП, затем
применяем БПФ и находим спектр с шириной линии (разрешением) 1 Гц. Спектр вычисляется достаточно быстро, получается, что период выдачи спектра, в основном, определяется необходимостью накопления данных в течение 1 с.
Поставлена задача - уменьшить период выдачи спектра. Предлагается для этого оцифровывать сигнал 1/4 секунды. При частоте 4096 Гц это означает массив из 1024 выборок. Затем формируем массив из 4096 элементов путем записи в него 4 раза подряд массива из 1024 выборок. При этом получается массив из необходимых 4096 элементов, состоящий из 4-х идентичных отрезков. Применяем БПФ к этому массиву (из 4096 элементов) и получаем спектр с шириной линии 1 Гц.

Насколько такой подход правомерен при условии, что:
1. Сигнал стационарен и, по идее, выборка длительностью 1/4 секунды вполне репрезентативна.
2. Интерес представляют собой линии спектра с частотой 80-100 Гц, то есть гораздо выше 4 Гц, ниже которой, понятно, ничего толкового мы не получим.

(К сожалению, параллельный сбор и обработка на имеющемся "железе" невозможны, поэтому варианты с расчетом спектра 4 раза в секунду на актуальном массиве из 4096 выборок, постоянно обновляемом, просьба не предлагать.)
Go to the top of the page
 
+Quote Post
andyp
сообщение Feb 27 2014, 19:14
Сообщение #2


Местный
***

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



повторение буфера ничего не даст. получите по три 0 между отсчетами спектра на выходе - все ваши данные окажутся периодической функцией с периодом 4. Усредняйте спектры по 1024 и интерполируйте между спектральными отсчетами в интервале для того, чтобыувеличить разрешение.

Или добейте буффер 0-ми и посчитайте FFT 4096. Тогда отсчеты спектра интерполируются функцией sync.
Go to the top of the page
 
+Quote Post
tmtlib
сообщение Feb 28 2014, 04:31
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 200
Регистрация: 30-10-10
Пользователь №: 60 531



Вариант N1 - почитай вот это:
http://stackoverflow.com/questions/4633203...-between-frames
по двум БПФ вытаскивается более точная частота на основании знания того, что
фаза между двумя БПФ меняется как i * 2.0 * PI * FFT_STEP / FFT_N, где
i - отсчёт спектра
FFT_STEP - сдвиг в сэмплах между двумя БПФ
FFT_N - порядок БПФ.

Вариант N2 - погугли Zoom FFT
если участок с исследуемым сигналом не размазан по всем частотам, то можно
1. перенести исследуемый участок в область около 0
2. сделать децимацию так, что исследуемый участок растянется по всему спектру.

Для быстрого отклика системы:
скользящие окна (sliding FFFT)
или скользящее ДПФ (sliding DFT)




Go to the top of the page
 
+Quote Post
MSP430F
сообщение Feb 28 2014, 10:59
Сообщение #4


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

Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911



Всем спасибо за ответы!
Раз такое дело, решили все-таки организовать непрерывный сбор данных и расчет БПФ каждые полсекунды на буфере, организованном в виде кольца.

Сообщение отредактировал MSP430F - Feb 28 2014, 11:03
Go to the top of the page
 
+Quote Post
Corner
сообщение Feb 28 2014, 16:28
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



ХМ, набрали 4096 за секунду - посчитали. Сдвинули на 1/4 секунды, взяли еще 1024 новых, 1024 самых старых выкинули - посчитали. Перекрытие в 1/4 выборки самое то.
Go to the top of the page
 
+Quote Post
MSP430F
сообщение Feb 28 2014, 18:08
Сообщение #6


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

Группа: Участник
Сообщений: 85
Регистрация: 20-05-13
Пользователь №: 76 911



Цитата(Corner @ Feb 28 2014, 20:28) *
ХМ, набрали 4096 за секунду - посчитали. Сдвинули на 1/4 секунды, взяли еще 1024 новых, 1024 самых старых выкинули - посчитали. Перекрытие в 1/4 выборки самое то.


Не слишком часто ? Вроде, в классике обычно советуют перекрытие в 1/2 ?
Go to the top of the page
 
+Quote Post
Corner
сообщение Mar 5 2014, 17:40
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Цитата(MSP430F @ Feb 28 2014, 22:08) *
Не слишком часто ? Вроде, в классике обычно советуют перекрытие в 1/2 ?


Все зависит от того какая равномерность АЧХ требуется.
Go to the top of the page
 
+Quote Post
asoharev
сообщение Mar 17 2014, 17:24
Сообщение #8





Группа: Участник
Сообщений: 10
Регистрация: 5-12-12
Пользователь №: 74 720



MSP430F, обычно, когда данных не хватает, добивают нулями до нужной длины. Спектр от этого не портится, да и бпф такой последовательности будет дешевле (с точки зрения вычислений).
Go to the top of the page
 
+Quote Post

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

 


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


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