Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
05-18-2019, 06:42 AM
(Сообщение последний раз редактировалось: 10-06-2019, 05:23 AM s3t.)
В процессе деланья ФФТ-аналайзера возникают вопросы)
На данный момент:
Захватываю окно N из звуковушки, из него делаю ффт:
- на входе ряд N комплексных чисел с real=n, imag=0;
- на выходе ряд N, состоящий из n[0] = DC, n[N/2] = Fs; n[N]=0Hz, т.е. зеркальный спектрум с центром N/2, положительные частоты в начале, отрицательные в конце. Беру только положительные, т.к. imag=0 на входных данных = данные одинаковы с обоих сторон.
Ура, работает.
Теперь рисовать.
На экране 1000 точек и он логарифмичен, в ффт - N/2., и линейный. В случае, когда на точку экрана приходится несколько бинов, с этим нужно что-то делать :)
Обычно(?) рисуют либо все бины на пиксель, получается вертикальная линия от bin_min до bin_max; Получается толстый шершавый график.
Либо рисуют только максимальный бин на пиксель. График = линия толщиной в пиксель.
Но это все как-бы не правильно))) Правильно - как-то их аггрегировать.
Например суммировать их квадраты, pixel = sqrt(n1^2+n2^2+n3^2). что правильно с т.з. отображаемой мощности.
или RMS, pixel = sqrt((n1^2+n2^2+n3^2) / 3)
можно ваще pow(n1*n2*n3,-3) геометрического среднего))
аналогичная ситуация и с просчетом искажений. например имеем несущую на частоте 1к с максимумом -60дБ.
но она не совсем стабильна по частоте, поэтому имеет размазанный вид (попадает сразу на несколько бинов, горбиком) = ее пик -60дБ не настоящий, и нужно аггрегировать соседние бины для того, чтобы получить настоящий уровень пика.
----------
Коммерческая страничка проги - https://xdxd.io/spectrum-analyzer/
Сообщений: 406
Тем: 7
Спасибо получено: 92 in 55 posts
Сказал спасибо: 54
Зарегистрирован: Apr 2014
05-18-2019, 10:15 AM
(Сообщение последний раз редактировалось: 05-18-2019, 10:17 AM Nick.)
Для THD надо flat top окна использовать и отображать максимумы. Может просто имеет смысл сделать разные опции для отображения?
Сообщений: 901
Тем: 6
Спасибо получено: 91 in 80 posts
Сказал спасибо: 188
Зарегистрирован: Sep 2016
Сообщений: 5,030
Тем: 200
Спасибо получено: 1,085 in 704 posts
Сказал спасибо: 385
Зарегистрирован: Mar 2014
05-18-2019, 11:07 AM
(Сообщение последний раз редактировалось: 05-18-2019, 11:08 AM begemot.)
s3t Написал:но она не совсем стабильна по частоте Для искажений-в ФФТ софте для АЦП который даёт ТИ можно указать сколько бинов считать за 1 при анализе искажений.
Nick Написал:flat top окна использовать Это не всегда работает лучшим образом. Флат-топ окна имеют не лучшую избирательность. А она иногда нужна.
Окон надо штук 5-6 разных.
Кстати, при измерении шума надо делать разные поправки в зависимости от окна.
https://www.ap.com/technical-library/fft...for-noise/
Кроме того, полезная фича - синхронное препроцессинг накопление. Хотя она нужна в первую очередь если нет возможности увеличить длинну.
Хотя и в других случаях может быть полезно. Но надо следить за качеством синхронизации. АП-шник, например, не даёт воспользоваться
этой опцией если считает что качество синхронизации недостаточно.
Можешь поставить себе их софт для 2722, он работает в демо моде без железа, и посмотреть какие там опции в ФФТ анализаторе.
Там много чего сделано разумного и адекватного.
Но вообще, чтоб адекватно померить, надо понимать что ты делаешь, зачем и как. Т.е. нажал кнопочку и показало как надо-не получится.
Т.е. абизяне это не поможет, как бы ты хорошо не сделал.
Nobody Is Perfect
Сообщений: 4,106
Тем: 52
Спасибо получено: 1,360 in 731 posts
Сказал спасибо: 468
Зарегистрирован: Apr 2014
05-18-2019, 12:11 PM
(Сообщение последний раз редактировалось: 05-18-2019, 12:13 PM nazar.)
Правильно иметь возможность выбора позитив пик, негатив пик, позитив+негатив, и еще б хорошо позитив+негатив+ оверлей "усредненного" значения(просто пройтись медиан фильтром, длину фильтра иметь возможность задавать, естественно добивать массив спереди и сзади на длину фильтра а потом транкейтить лишнее). Также иметь автоматическую поправку на вклад окна
"The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." John Stapp
Сообщений: 406
Тем: 7
Спасибо получено: 92 in 55 posts
Сказал спасибо: 54
Зарегистрирован: Apr 2014
begemot Написал:Это не всегда работает лучшим образом. Флат-топ окна имеют не лучшую избирательность. А она иногда нужна. Для THD не нужно хорошей изберательности, для THD более важна правильная амплитуда, так что flat top хорошо подходит.
Для остальных измерений конечно нужны разные окна и разные отображения. Поэтому и написал про то чтобы это все сделать настраиваимо.
Сообщений: 1,091
Тем: 14
Спасибо получено: 215 in 160 posts
Сказал спасибо: 418
Зарегистрирован: Mar 2017
05-18-2019, 03:37 PM
(Сообщение последний раз редактировалось: 05-18-2019, 03:39 PM Black_Jack.)
А если замахнуться на когерент сэмплинг?
Надо, конечно иметь общий опорный ген. собсно для ЦАП и АЦП.
Тогда можно будет без окон обойтись вообще. Для THD как минимум, кмк. Нет?
Сообщений: 4,106
Тем: 52
Спасибо получено: 1,360 in 731 posts
Сказал спасибо: 468
Зарегистрирован: Apr 2014
ага.
и еще хорошоб режим измерения шумов, с маркером, результатами приведенными до 1гц, интегрированием в заданной полосе, и учитывая внешний гейн. График рисовать после Нного количества векторного усреднения и после этого один проход фильтром
"The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." John Stapp
Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
Ой йопт)
Вы когда пишете, давайте заодно ссылки)))
Длинный ффт - насколько длинный? 8М сэмплов считаются гдето за 2-4 сек, т.е. реального времени не будет. Но это уже щупает 3-6 гиг памяти.
Плюс подумалось что стоит отображать буфер с возможностью по нем полазить и пропустить через ффт - бывает что за несколько секунд накопления что-то дергается и все, приехали. И заодно поиск этих случайностей, иногда девайс работает но раз в минуту пердит - такое по обычному не вылавливается)
Сообщений: 223
Тем: 3
Спасибо получено: 31 in 20 posts
Сказал спасибо: 1
Зарегистрирован: Oct 2017
типов окна надо много, как обычно, флэ-топ даст небольшое уточнение в THD, если частоты гармоник известны, их можно мерить конволюшном https://en.wikipedia.org/wiki/Convolution что во сто раз быстрее чем ффт и точно. Мы так мерили АЧХ саба для румкорекшн(iWoofer), довольно точно и очень быстро, но, как оказалось в реальном холле квадратов 50, это неприменимо по естественным причинам - акустические отражения от всего прилетают с большим дилеем и, в зависимости от демпфирования зала, могут очень изменить результат. В итоге всё равно пришлось усреднять измерения чуть не на 1с на 1 частоту "свипа". Это кстати хорошая иллюстрация "эффективности" хваленого "дирака", который делает коррекцию комнаты во всей аудио-полосе 1-2с свипом ))
Сообщений: 1,600
Тем: 13
Спасибо получено: 201 in 147 posts
Сказал спасибо: 55
Зарегистрирован: Apr 2014
s3t Написал:Длинный ффт - насколько длинный? 8М сэмплов считаются гдето за 2-4 сек, т.е. реального времени не будет.
Можно сделать почти как в Спектраплюсе - отдельно реалтайм, отдельно пост-процессинг, и в первом ограничивать длины и прочее на уровне работы реалтайма с кокнретным форматом (семплрейт/разрядность) на конкретном компе.
Сообщений: 1,091
Тем: 14
Спасибо получено: 215 in 160 posts
Сказал спасибо: 418
Зарегистрирован: Mar 2017
05-19-2019, 04:37 AM
(Сообщение последний раз редактировалось: 05-19-2019, 05:03 AM Black_Jack.)
s3t Написал:Ой йопт)
Вы когда пишете, давайте заодно ссылки)))
Популярно о "coherent sampling"
https://www.youtube.com/watch?v=LOJbztS-wFY
https://www.maximintegrated.com/en/app-n...vp/id/1040
Вот тут по окнам как справочник с кратким описанием.
Например,
"The 7-term Blackman-Harris window has the highest dynamic range of the available windowing types and is ideal for signal-to-noise ratio applications."
http://zone.ni.com/reference/en-XX/help/...orrection/
The following 1 user says Thank You to Black_Jack for this post:
• s3t (05-19-2019)
Сообщений: 5,030
Тем: 200
Спасибо получено: 1,085 in 704 posts
Сказал спасибо: 385
Зарегистрирован: Mar 2014
05-19-2019, 09:46 AM
(Сообщение последний раз редактировалось: 05-19-2019, 09:48 AM begemot.)
Black_Jack Написал:Blackman-Harris window has the highest dynamic range of the available windowing Это только из тех окон которые они приводят.
Полезно иметь ещё и Кайзера, которым можно аппроксимировать окна с разными свойствами, от "быстрых" с большой утечкой до "медленных" с избирательностью сравнимой или лучшей чем у Блэкман-Харриса.
Просто меняя параметр "альфа".
https://en.wikipedia.org/wiki/Kaiser_window
s3t Написал:т.е. реального времени не будет Altor Audio Написал:почти как в Спектраплюсе - отдельно реалтайм, отдельно пост-процессинг О каком реальном времени идёт речь?
Его нет ни в каком Спектраплюсе.
ФФТ по определению усредняющее измерение. На длине окна. Я надеюсь никто не собирается делать ФФТ для каждого последовательного сэмпла?
Это же не цифровой фильтр реального времени.
.................................................................................
Взял сэмплы на окно что сейчас есть, посчитал, выплюнул на дисплей.
.................................................................................
Взял сэмплы на окно что сейчас есть, посчитал, выплюнул на дисплей.
.................................................................................
Если говорить о втором режиме, т.е, о постпроцессинге-то можно делать примерно как в Аудишине.
Выделяется область в записи, точнее начало и длина ФФТ. И отображается спектр этого участка.
Если это конечно надо. Для начала я этим бы не заморачивался.
А вот отображение спектра слегка плавающего сигнала-это конечно та ещё задача.
Т.е. используешь большую длинну чтоб убрать шумы. Получаешь узкий бин, даже для основной частоы. И она плавно гуляет межу бинами.
Для гармоник ещё хуже.
Т.е. надо использовать несколько соседних бинов для анализа амплитуды, а шум между гармониками-одиночный бин.
ТИ использует несколько бинов, количество которых можно менять. Отдельно для основной, отдельно для гармоник
http://www.audio-perfection.com/forum/at....php?aid=3
Есть ещё один способ. Синхронное накопление.
Используется не очень длинное ФФТ. Т.е.бин не очень узкий. Но сигнал синхронно накапливается и усредняется перед ФФТ.
Тогда, если конечно удастся хорошо синхронизироваться, некореллированыые с сигналом шумы подавятся, а сигнал и гармошки-останутся.
А поскольку бин "широкий", амплитуды отображаются правильно. Ну конечно надо решить что отображается когда попадает посерёдке.
Но надо адекватно синхронизировать, что может быть проблемой при наличии большого шумочка.
Хотя достоинство-значительно более короткое время окна, т.е. сигнал воде как не успевает сильно уплыть. А уплывание будет усредняться
до ФФТ.
В общем, каждый способ будет давать слегка разные результаты.
Чаще всего, когда софт позволяет некоторую гибкость в применении разных методов, например как в АП2722, и когда измеряешь что-то
на пределе разрешения, тупо смотришь на результат и думаешь-а что за хрень он показывает, почему он же измеряет другим методом по другому, и можно ли этому верить.
Nobody Is Perfect
Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
05-19-2019, 01:31 PM
(Сообщение последний раз редактировалось: 05-19-2019, 01:34 PM s3t.)
я не сбежал, я оптимайзил ФФТ и рисовалку)
на рисунке изображены
- синус 1к + белый джиттер :)
- белый шум
- гармошки 2-6 одинакового уровня и фазы, примененные к сумме вышеобозначенных
сделал какое-то подобие VBW - всеравно-ж собираю на каждый пиксель по "сколько получится" бинов - так можно собирать на каждые 5, 10, 100 пикселей - т.е. уменьшать горизонтальное разрешение, чтоб не мешало восприятию.
желтый = SQRT( N[0]^2 + N[1]^2 + N[2]^2 + ... + N[n] )
зеленый яркий = максимум на ячейку
вертикальные тускло-зеленые линии = от макс до минимума
голубенький = RMS = SQRT( ( N[0]^2 + N[1]^2 + N[2]^2 + ... + N[n] ) / n )
ы, ффт 16М делается за 1.3с! до чего прогресс дошел )
Сообщений: 4,106
Тем: 52
Спасибо получено: 1,360 in 731 posts
Сказал спасибо: 468
Зарегистрирован: Apr 2014
05-19-2019, 02:12 PM
(Сообщение последний раз редактировалось: 05-19-2019, 02:20 PM nazar.)
о тмакс до минимума надо соединять векторами между ними https://youtu.be/OT8pfr4a2K8?t=27, с усреднением еще поработать(тоесть читай соответствующий хп джоурнал). https://youtu.be/OT8pfr4a2K8?t=138
"The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." John Stapp
Сообщений: 4,106
Тем: 52
Спасибо получено: 1,360 in 731 posts
Сказал спасибо: 468
Зарегистрирован: Apr 2014
https://www.hpl.hp.com/hpjournal/pdfs/Is...978-06.pdf
13стр итд, также там можно найти фото зигфрида линквица)
"The universal aptitude for ineptitude makes any human accomplishment an incredible miracle." John Stapp
Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
Почти допилил аверейджинг по времени (полноценный). Шустренький)
Интересно, нужно буит опробовать перформанс на чем-то быстрей звуковушки)
Сообщений: 5,030
Тем: 200
Спасибо получено: 1,085 in 704 posts
Сказал спасибо: 385
Зарегистрирован: Mar 2014
s3t Написал:полноценный Это как?
Nobody Is Perfect
Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
это когда там точная информация, а не приблезительная)
обычно хранят плавающее окно (которое накапливает в себе данные ФФТшек суммированием-делением), по достижении заполнения - начинают вычитать из него старые данные ФФТшек. т.е. простое решение, эффективное для процессора.
но при этом нет возможности просчитать минимум-максимум (их невозможно вычесть, т.к. операция не линейна). Поэтому мин-макс обзывают пик-холдом и "problem solved". То, что этот пик-холд показывает что-то совсем ниочем (например если пик образовался 10 сек назад, 1 сек назад был пик с уровнем чуточку ниже, окно пик-детектора 10сек = получим сброс пика до 0 и пофик на пик который был 1с назад).
поэтому я с каждым поступлением новой ФФТшки просчитываю аверейдж заново, т.е. пройтись по всем ФФТшкам, суммировать все накопления, найти все максимумы максимумов)
я тут пытаюсь эмулировать старый добрый аналоговый ХП с примесями цифрового, и вдруг...
https://youtu.be/0XHkfiU53gI
Сообщений: 1,100
Тем: 16
Спасибо получено: 215 in 136 posts
Сказал спасибо: 125
Зарегистрирован: Jul 2014
нельзя меня на ютюб пускать
The following 3 users say Thank You to s3t for this post:
• nazar (05-20-2019), Black_Jack (05-21-2019), Nick (05-23-2019)
|