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

 
 
> Анализатор спектра ультразвукового диапазона, Анализатор спектра до 100кГц
Nukers
сообщение Mar 7 2010, 11:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 8-12-09
Из: Новочебоксарск
Пользователь №: 54 124



На сайте http://www.zetms.ru/catalog/analyzers/a19.php есть описание анализатора спектра.

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

1) Частота входного сигнала до 100кГц.
2) Частота дискретизации до 250кГц.
3) Количество разрядов АЦП 16.
4) Для отображения сигнала в частотную область использую БПФ (на ADSP 21375).
5) Динамический диапазон то же - 85дБ.


Возникли вопросы по алгоритму:

1) Если сигнал случайный (музыка, речь и.т.д), то как определить частоту гармоники с наибольшей амплитудой в спектре?
2) Как наиболее достоверно (погрешность от 2 до 5%) отобразить спектр?
3) Какую фильтрацию использовать?
4) Можно ли обойтись без октавных фильтров, а использовать скажем оконную фильтрацию (при условии, что накапливаю несколько периодов сигнала основной частоты)?


Сообщение отредактировал Nukers - Mar 7 2010, 11:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Nukers
сообщение Mar 7 2010, 21:00
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 8-12-09
Из: Новочебоксарск
Пользователь №: 54 124




Прикрепленное изображение

Тут я постарался графически отобразить мое понятие временного наложения кольцевого буфера (Оно конечно абстрактно)

Себе я выстроил такой алгоритм (поправьте, если заблуждаюсь):
1) Принимаем порцию из 1024 отсчетов.
2) Накладываем окно (т.е. копируем эту порцию 4 раза).
3) Делаем 4096 точечное БПФ.
4) Удаляем порцию из 1024 отсчетов №4.
5) Принимаем новую порцию из 1024 отсчетов.
6) Идем на шаг 3.
(Выходит пока буфер "протолкнет" последний отсчет, принятый в самом начале пройдет 4 цикла БПФ - усвоил).
и так пока солнце не сгорит.... Верно?


В MatLab можно с помощью утилиты Filter Design & Analysis Tool можно рассчитать функцию окна. Там же можно узнать АЧХ этой функции и кучу разных параметров, вообщем вы знаете. Если эту оконную функцию экспортировать в Simulink, то будет построен стандартный прямой КИХ фильтр (вот почему я упоминал слово фильтр).

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

Не пытаюсь спорить с вами, просто хотелось бы знать: Реализованный КИХ фильтр на основе весовой функции в MatLab и весовая функция на основе кольцевых буферов дадут одинаковые результаты?

Да, использовать буду RealFFT.

P.S. Спасибо за переживания. Никто меня не эксплуатирует. Тема интересная, потому и взял. Времени мало, так что, скорее всего, прийдется ограничиться микропроцессорной системой, кусками кода и алгоритмом. Все же знают, что у студентов на бумаге все работает. biggrin.gif Так что после университета будем развивать тему дальше rolleyes.gif

Сообщение отредактировал Nukers - Mar 7 2010, 21:03
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Mar 8 2010, 07:11
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Nukers @ Mar 8 2010, 00:00) *

Прикрепленное изображение

Тут я постарался графически отобразить мое понятие временного наложения кольцевого буфера (Оно конечно абстрактно)

Себе я выстроил такой алгоритм (поправьте, если заблуждаюсь):
1) Принимаем порцию из 1024 отсчетов.
2) Накладываем окно (т.е. копируем эту порцию 4 раза).
3) Делаем 4096 точечное БПФ.
4) Удаляем порцию из 1024 отсчетов №4.
5) Принимаем новую порцию из 1024 отсчетов.
6) Идем на шаг 3.
(Выходит пока буфер "протолкнет" последний отсчет, принятый в самом начале пройдет 4 цикла БПФ - усвоил).
и так пока солнце не сгорит.... Верно?


В MatLab можно с помощью утилиты Filter Design & Analysis Tool можно рассчитать функцию окна. Там же можно узнать АЧХ этой функции и кучу разных параметров, вообщем вы знаете. Если эту оконную функцию экспортировать в Simulink, то будет построен стандартный прямой КИХ фильтр (вот почему я упоминал слово фильтр).

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


Не могу не поучаствовать.
При наложении окна на выборку окно ничего не копирует 4 раза. Просто окно как бы сглаживает выборку покраям, уменьшая разрывы функции при FFT.
В матлаб для реализации оконной функции есть Window Design & Analysis Tool. И сглаживание, о котором я тебе говорил, не имеет отношение к КИХ-фильтрации. Просто окно может применяться для построения КИХ-фильтров.

А алгоритм с перекрытием или скользящее окно - просто чтобы быстродействие системы увеличить, и получать результат FFT через меньшие промежутки времени. Тогда просто часть выборок предыдущей итерации (расчёт FFT) используется для следующей итерации.

P.S. Не путай окно как функцию спадающую покраям (Хэмминг, Ханн, Блэкмэн...) и временное окно (время за которое берётся определённое количество выборок).
Стучи в ICQ!)

----------------------------------------------------------------------------------------------------------------------------------------------

То, насколько я знаю проблему, позволяет мне сформулировать вопрос.
Сигнал поступающий на осциллограф может иметь полосу до 100кГц.
Остаётся открытым вопрос о длине выборки. Так как сигнал заведомо неизвестен.
Допустим сигнал содержит составляющие 100Гц, 105Гц и 302 Гц.
если N = 4096 то частотное разрешение в спектре составит 200000/4096 = 48,82 Гц.
И мы просто не увидим с пектре гармоники 105, 302 Гц. Они просто переползут на ближайшие бины БПФ. и сильно могут искозить то, что должно приходиться на эти бины.
Можно сделать вывод, что нужно сначала задаться наименьшим возможным шагом гармоник в сигнале?
Как это решается в современных анализаторах спектра?

Могу предположить, что в выборки сигнала можно вставить нули....

Сообщение отредактировал TigerSHARC - Mar 8 2010, 07:29
Go to the top of the page
 
+Quote Post
Nukers
сообщение Mar 13 2010, 17:15
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 39
Регистрация: 8-12-09
Из: Новочебоксарск
Пользователь №: 54 124



Кто-нибудь может дать ссылку, где можно найти информацию по времени выполнения реального БПФ для ADSP-21375 при количестве точек 256, 512, 1024, 2048 и 4096?

Заранее огромное спасибо
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Mar 13 2010, 17:51
Сообщение #5


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(TigerSHARC @ Mar 8 2010, 09:11) *
Допустим сигнал содержит составляющие 100Гц, 105Гц и 302 Гц.
если N = 4096 то частотное разрешение в спектре составит 200000/4096 = 48,82 Гц.
И мы просто не увидим с пектре гармоники 105, 302 Гц. Они просто переползут на ближайшие бины БПФ. и сильно могут искозить то, что должно приходиться на эти бины.

Надуманная проблема. А вот если изменения звукового давления - не нарушая Найквиста-Котельникова - будут приходиться не на целые дискреты времени от начала выборки(уже смешно biggrin.gif ) а на дробные? Перезапустить прибор? И так пока не угадаем?

То что Вы описываете на самом деле не проблема. Временной сэмпл или частотный бин - однозначно-обратимо-разделимо размазывается по соседним выборкам.
Но для отдельных случаев, например извечная тема - измерение Кг 50(60) Hz-овой синусоиды, это не очень удобно. Потому там и мухлюют с этим периодом измерений и числом точек FFT. Для любых "чуть более стохастических" сигналов с этим уже не заморачиваются...
Единственное что - иногда при частоте дискретизации не кратной степени двойки (например кратной 44100) хотят получить кратный десяткам(удобно для восприятия человеком) шаг частотных бинов. Тогда нужно писать специфическое FFT - не для степеней 2-ки...

Цитата(TigerSHARC @ Mar 8 2010, 09:11) *
Можно сделать вывод, что нужно сначала задаться наименьшим возможным шагом гармоник в сигнале?
Как это решается в современных анализаторах спектра?

Никак... Такой проблемы нет.

Цитата(TigerSHARC @ Mar 8 2010, 09:11) *
Могу предположить, что в выборки сигнала можно вставить нули....

Куда? Интересно бы мне было узнать... smile.gif

Цитата(Nukers @ Mar 13 2010, 19:15) *
Кто-нибудь может дать ссылку, где можно найти информацию по времени выполнения реального БПФ для ADSP-21375 при количестве точек 256, 512, 1024, 2048 и 4096?

Заранее огромное спасибо

В листинге самих исходников приведены такты... wink.gif ...Кстати "реального" FFT, насколько помню там нет(а оно таки есть)... Но для 1024 точек RealFFT - заведомо быстрее ComplexFFT для 1024 точек. Прикиньте - не ошибетесь...

Возьмите RealFFT из этой библиотеки. Далее есть 2-а пути - так и оставить - сомневаюсь что ассемблерный результат будет колоссально выше. Второй путь - убрать внутреннее комплексное БПФ (а оно там есть по-любому) и вставить ассемблерное с сайта AD...


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Mar 14 2010, 06:50
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(DRUID3 @ Mar 13 2010, 20:51) *
Надуманная проблема. А вот если изменения звукового давления - не нарушая Найквиста-Котельникова - будут приходиться не на целые дискреты времени от начала выборки(уже смешно biggrin.gif ) а на дробные? Перезапустить прибор? И так пока не угадаем?

То что Вы описываете на самом деле не проблема. Временной сэмпл или частотный бин - однозначно-обратимо-разделимо размазывается по соседним выборкам.
Но для отдельных случаев, например извечная тема - измерение Кг 50(60) Hz-овой синусоиды, это не очень удобно. Потому там и мухлюют с этим периодом измерений и числом точек FFT. Для любых "чуть более стохастических" сигналов с этим уже не заморачиваются...
Единственное что - иногда при частоте дискретизации не кратной степени двойки (например кратной 44100) хотят получить кратный десяткам(удобно для восприятия человеком) шаг частотных бинов. Тогда нужно писать специфическое FFT - не для степеней 2-ки...


Никак... Такой проблемы нет.


Куда? Интересно бы мне было узнать... smile.gif


В листинге самих исходников приведены такты... wink.gif ...Кстати "реального" FFT, насколько помню там нет(а оно таки есть)... Но для 1024 точек RealFFT - заведомо быстрее ComplexFFT для 1024 точек. Прикиньте - не ошибетесь...

Возьмите RealFFT из этой библиотеки. Далее есть 2-а пути - так и оставить - сомневаюсь что ассемблерный результат будет колоссально выше. Второй путь - убрать внутреннее комплексное БПФ (а оно там есть по-любому) и вставить ассемблерное с сайта AD...


Ну думаю теперь всё решено.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nukers   Анализатор спектра ультразвукового диапазона   Mar 7 2010, 11:13
- - DRUID3   Цитата(Nukers @ Mar 7 2010, 13:13) 1) Есл...   Mar 7 2010, 11:28
- - Nukers   Цитата..мало того, можно его отобразить с достовер...   Mar 7 2010, 12:16
|- - DRUID3   Цитата(Nukers @ Mar 7 2010, 14:05) Знаю, ...   Mar 7 2010, 12:39
- - Nukers   ЦитатаЦитата Думаю, понятно что он делает. Да, он...   Mar 7 2010, 15:09
|- - DRUID3   Цитата(Nukers @ Mar 7 2010, 17:09) Фильтр...   Mar 7 2010, 19:04
|- - DRUID3   Цитата(Nukers @ Mar 7 2010, 23:00) Тут я ...   Mar 7 2010, 22:18
|- - Nukers   Спаасибо огромное. Но я нашел лишь для 21364. А дл...   Mar 13 2010, 18:25
||- - DRUID3   Цитата(Nukers @ Mar 13 2010, 20:25) Спаас...   Mar 13 2010, 18:45
- - Nukers   Уважаемый DRUID3. Есть к вам вопрос. Уолт Кестер в...   Mar 15 2010, 13:09
- - Nukers   Господа форумчане подскажите! Собираюсь испол...   Mar 22 2010, 18:16
|- - анатолий   Цитата(Nukers @ Mar 22 2010, 21:16) Собир...   Mar 24 2010, 13:02
- - TigerSHARC   а кокой смысл делать БПФ до фильтрации... как я по...   Mar 22 2010, 18:25
- - DRUID3   Nukers я часа в 3-4 ночи просыпаюсь, тогда вам и о...   Mar 22 2010, 18:50
- - TigerSHARC   всё таки применение FIR в данном случае оправдано ...   Mar 22 2010, 19:34
- - Nukers   Я о том же, что и говорит анатолий. Мне непременно...   Mar 24 2010, 16:06
|- - DRUID3   Цитата(анатолий @ Mar 24 2010, 15:02) КИХ...   Mar 24 2010, 17:19
- - TigerSHARC   Корректировать - это просто внести поправку. напри...   Mar 24 2010, 17:07
- - Nukers   ЦитатаПросто умножаешь выборку на весовую функцию ...   Mar 24 2010, 17:17
- - Nukers   ЦитатаУ Анатолия уже в теплице видимо новый урожай...   Mar 24 2010, 17:35
- - TigerSHARC   Сань, ну нахрена спектр умножать на окно? для ...   Mar 24 2010, 17:47
|- - DRUID3   Цитата(TigerSHARC @ Mar 24 2010, 19:47) С...   Mar 24 2010, 18:05
- - Nukers   Согласен, ошибся. Поторопился. Теперь все вроде но...   Mar 24 2010, 17:56
- - TigerSHARC   теперь DRUID3 точно больше ничего не напишет))))   Mar 24 2010, 18:01
- - TigerSHARC   Да, кстати про зеркальный канал. В реальных девайс...   Mar 24 2010, 18:12
|- - DRUID3   Цитата(TigerSHARC @ Mar 24 2010, 20:12) Д...   Mar 24 2010, 18:30
- - Nukers   ЦитатаНу начнем с того, что смысл этих расчетов по...   Mar 25 2010, 06:40
|- - DRUID3   Цитата(Nukers @ Mar 25 2010, 08:40) 1024*...   Mar 25 2010, 07:33
- - Nukers   ЦитатаУмножение на функцию окна гораздо легковесне...   Mar 25 2010, 07:55


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

 


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


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