FFT и прочее - как правильно?

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

Аминь.
Ответ

Такое описание больше похоже на бред, чем на измерение

Nobody Is Perfect
Ответ

Уж ивзините, там еще много разных греческих буковок в которых я не вдавался, но общая картинка как-бы намекает))
Не, ну цель у них достигнута - без окна сделать красиво и похоже на правду)
Они как-бы не сразу вычисляют гармошки, сначала убирают несущую - затем находят и убирают гармошки, и лишь потом фотошопят все вместе чтоб было "красиво".
Может оказаться, что сий подход всеравно имеет место быть в жизни благодаря равноценности ффт и тайм домейн)
   

Аминь.
Ответ

Пытаюсь сделать следующим образом:

"отпечаток - fingerprint", содержащий в себе отрывок сигнала, скользящий по буферу.
Допустим буфер - размером с ффт, отпечаток - 1/4 ффт.
Нахожу минимальную дистанцию между отпечатком и буффером на X оффсете буффера. Этот оффсет и есть позиция триггера.
Беру из буфера начиная с этого оффсета по длинну ФФТ, складываю в сторонку.
Повторяю процедуру для последующих данных.

Использование отпечатка = значит нет зависимости от самого сигнала, не интересно какой он формы и насколько длительна его неповторяющаяся последовательность, и как он вкладывается в окно ффт. Главное - его точка корреляции с триггером всегда стоит в позиции 0 для ФФТ.

Сам отпечаток можно подправлять из усредненных данных)

По хорошему следует ресемплить и то и другое для ловли межсемпловых соответствий, но это как-бы усложняет.
Опять, по хорошему следует жить в аналоговом виде а не цифровом, т.к. если наш синус никогда не будет засэмплен точно в тех-же точках что и "отпечаток", то синхронизация не случится.

Аминь.
Ответ

Ок, делает вид что работает, пока для точного синуса 1кГц: (количество усреднений неизвестно)
Снято сразу после запуска + 5-6 секунд спустя. длинна ффт - 65к.
   

Аминь.
Ответ

А че в легенде и на спектре разные значения дБ для одной и той-же палки?

P.S.
... с розовыми кнопками пора завязывать кмк :)

P.P.S.
Вопрос по дБ снят...
... но с розовыми кнопками пора завязывать кмк :)
Ответ

Розовые кнопки будут в любительской версии, а зелененькие - в профессиональной! :)

С плавающим сигналом ожидаемо плохо - верхние гармошки страдают сильнее нижних, т.е. получается лоу-пасс фильтр для сигнала (шум равномерно лежит, т.к. рандомален). Нужно пытаться делать более шустрые аверейджи внутри окна а не между окнами, но пока чот перформанс страдает даже для 65к окна(

Щас передвину триггер на середину ффт а не ее начало, автоматически будет меньше замыливания концов т.к. частота будет плавать в разные стороны а не от начала в хвост, и повысится точность т.к. оконная функция берет сигнал из середины.
И пора бы придумать как не держать все 100 кусков буфера в памяти для того, чтобы сделать аверейджинг((

Аминь.
Ответ

Сделал синхру по центру ФФТ и центру триггера, гораздо гораздей.

На картинках изображен сигнал 1кГц 0дб фс, -100дб гармошек 2-5, шум немного выше самих гармошек.

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

   
   


И последняя картинка, попытка спровоцировать синхру сойти с ума, 10+11к имд, с и без шума, гены везде стабильны.
   

и заключительное, попытка посмотреть ниже шума, неудачная Sad
Не идет ниже 20дБ относительно 65к "референса". Может быть шум недостаточно стохастичный, или просчеты уже улетели за пределы, хотя не должны, там максимум 300-1000 над уровнем сигнала, и я старался делать более-менее точно)
   


еще есть multitaper алгоритм,
https://en.wikipedia.org/wiki/Multitaper
http://www.spectraworks.com/Help/mtmtheory.html
https://pdfs.semanticscholar.org/752d/1a...ef4c4e.pdf

насколько я понял, оно берет один и тот-же кусок сэмплов на входе, пропускает через разнообразные оконные функции (между собой не пересекающиеся), затем для каждого - ФФТ, и комбинирование вместе.
Хотя чот мне подсказывает, что если поскользить ФФТшкой по сигналу и потом сделать аверейдж между ФФТшками, то результат получится примерно тот-же. Преимущество метода - работа на маленьких кусочках данных.

Аминь.
The following 2 users say Thank You to s3t for this post:
  • begemot (06-10-2019), nazar (06-10-2019)
Ответ

s3t Написал:"отпечаток - fingerprint", содержащий в себе отрывок сигнала, скользящий по буферу
Это ВЫ батенька очень правильно придумали. Автокорреляция-великая сила. И наверно самое простое из того что должно не плохо работать.
Можно сказать класика из учебника по "теории передачи сигналов". Кстати, во всех этих кривоаналайзрах никто такого не использует.
Видимо плохо учились в школе.
Кстати, по коэффициенту корреляции можно принимать решение о том использовать следующий кусочек или пропустить.
s3t Написал:спасает только синхронный аверейджинг
О чём и было говорено не глупыми людьми Rofl

Nobody Is Perfect
The following 1 user says Thank You to begemot for this post:
  • s3t (06-11-2019)
Ответ

А еще из забавного - т.к. сигнал на выходе ФФТ оказывается синхронным, то... То аверейджинг можно делать векторно после ФФТ! :) Хотя результат почти одинаковый... Но зато после ФФТ можно делать разные пакости :)

Отсюда вопрос, что такое комплексный бин и как его готовить?
Сейчас усредняю отдельно re, im, выдаю их магнитуду sqrt(re*re + im*im).
Можно ли их складывать с соседними бинами, по отдельности re1+re2, im1+im2? Для векторного рмс и точной фазы гармошек)

Аминь.
Ответ

s3t Написал:А еще из забавного
Ты кстати в курсе почему при синхронном усреднении ИМД верхняя частота теряет свою амплитуду?

Nobody Is Perfect
Ответ

Она не сразу теряет, а после ~50-80 усреднений, на 20 усреднениях почти не двигается.
Плавает вверх-вниз, т.к. ее фаза относительно накопленных данных проворачивается по кругу)
Независимо от типа и разрешения триггера, происходит как в тайм так и ффт домейне (я и там и там сделал синхронное усреднение), не переползает между бинами.
На картинке использовал 111Гц и 11кГц при Фс=44.1к. При коррекции частот до 441/4 и 44100/4 все стабилизируется :)

Видимо совокупность 111+11к имеет слишком длинную неповторяющуюся последовательность, длиннее окна ФФТ - а у меня алгоритм простой, ползать по буферу длинной в ФФТ и непременно найти соответствие :)

Ы, это не ловится коэффициентом корреляции, на всем протяжении он очень ровненький и красивый.

Аминь.
Ответ

Прошелся по UI, повернул маркеры, симпатишно :)

Помните я в начале отказывался что-либо усреднять? Уже 4-5 способов усреднения есть, и это не учитывая мин-макс-рмс и фосфор :)

   

   

Усреднения:
- Display - суммирует мощность между ФФТшками (не знаю как назвать внятно, power average?)
- Sync Wave - аверейдж в тайм-домейне (waveform averaging)
- Sync Spectra - аверейдж в спектре (vector averaging)
- Bin Grouping - B5 = RMS(B0,B1,B2...B10), делает RMS для N соседних бинов и складывает в текущий. Решает проблемы плавающей частоты и попадания сигнала между бинами при MAX графике, но при этом не портя его свойства залазить под шумовую полку.

Аминь.
The following 3 users say Thank You to s3t for this post:
  • nazar (06-13-2019), Black_Jack (06-13-2019), begemot (06-13-2019)
Ответ

s3t Написал:Уже 4-5 способов усреднения есть, и это не учитывая мин-макс-рмс и фосфор :)

Главное - чтобы весь этот "фосфор" был отключаемым.
В WaveSpectra когда он включен, иногда реально бесит.
Ответ

Там да, приходится почти постоянно отключать.
А тут красиво!
Ответ

Ага... чуть-чуть белый фонт "засерить" и будет бегульмэ, пмсм
Ответ

Altor Audio Написал:
s3t Написал:Уже 4-5 способов усреднения есть, и это не учитывая мин-макс-рмс и фосфор :)

Главное - чтобы весь этот "фосфор" был отключаемым.
В WaveSpectra когда он включен, иногда реально бесит.
Какой такой фосфор в WS? Или у тебя просто экран CRT? :) (интересно, а бывает пленка фосфорная для наклеивания на LCD? :) )

Ы) меня мучает мультитон с когерентностью. Это прикольно, каждая частота попадает ровно в бин. и гармошки тоже.
Это значит, что например если запустить два синуса с разными частотами (не кратными одна другой), то гармошки будут лежать в отдельных бинах для каждого случая.
Хоть 100 синусов. и 1000.
Минусы - ограничение по абсолютному уровню каждого синуса
Плюсы - за один раз получаем замеры гармошек аж на 100, и 1000 частотах.
Неизвестность:
- интермоды (попадает ли в них часть мощности, предназначавшейся для гармошек искажения?) Т.е. если я насчитаю только гармошек для синусов, будет ли циферка правильной.
- полезность измерения гармошек синусов, имеющих заниженный уровень, входящих в состав мешка других синусов вместе в сигнале...

Кто-нибудь встречал какие-то алгоритмы и прочее, чтоб не изобретать велосипед с подискиванием комбинированно-кратно-праймовых частот-коэффициентов так, чтоб все продукты жизнедеятельности всех синусов нигде не пересекались?
Или хотя-бы как частоты интермод высчитываются)) Например куда девается продукт, улетающий ниже 0Гц, например в случае 100Гц+1кГц, продукты _-900_, 1100?

Или все-таки не мучать моск? :)
Если оно будет иметь разрешение, сопоставимое с обычным синусом, то это же круть - получать полную картинку по имд, тхд, ачх, шуму и даже кроссток (если взять разные частоты в разных каналах) 60 раз в секунду!)


интересная бумажка на тему измерений риспонсов и синтеза сигналов для ффт.
Подсказала, что вместо игр с функцией sin() - можно нарисовать спектр от руки и сделать ему инверс ффт = получится сигнал))
Например синус - это всего-лишь палочка на ффт. А свип - это горизонтальная линия на ффт + нарисованный по формуле group delay (который потом в фазу превращается)., и затем - иффт дает свип) Притом не простой, а в котором всегда присутствуют все частоты, и уровень всегда в линию, для последующего ффт)
и самое забавное - псевдошум генерируется при помощи все того-же спектра в линию, но с рандомизацией фаз.

интересно, на сколько точно себя ведет метод с выделением гармошек через отрицательное время при свертке свипа в импульсный отклик)
^^^ я сам написал это предложение, и я даже подозреваю как это сделать) *прогресс*
не не не, не хочу я делать измеряшку акустики... хотя до нее рукой подать. ыыы

Аминь.
Ответ

Нампад в действии!
Наверное даже для мышки вполне вариант, хоть и предназначен для тачьскрина)
Слайдер - подобие железных емкостных слайдеров, некоторое время бывших популярными в мп3 плеерах)
.gif demo-input.gif Размер: 263.03 KB  Загрузок: 45

Аминь.
The following 4 users say Thank You to s3t for this post:
  • nazar (06-15-2019), begemot (06-15-2019), Black_Jack (06-15-2019), wired (06-18-2019)
Ответ

А еще мне удалось синтезировать синус через инверс-ффт, правда что-то немножко подглючивает...
Но это открывает довольно много прикольных наворотов) Псевдошум, содержащий в себе все частоты, свипы, "дырявый сигнал" (значения бинов идут через один, с пропусками - при последующей ФФТ замеряется соотношение сигнала между пропусками и обычными бинами = получаем степень зашумливания полки из-за сигнала, т.е. совокупность абсолютно всех искажений).
Ах, и все сигналы, полученные через инверс-ффт всегда когерентны)

Аминь.
Ответ

FFFFF.
На большом экране (QHD) получается 35% CPU i7 4790k.
10% это рисование картинки на экран (просто пустой картинки).
Еще 10, еще одна картинка.
И 5% это рисование текста со сводкой данных по маркерам и прочему.
Пипец майкрософт умеют оптимайзить свой код.
И я еще использую самый быстрый из существующих метод.
Корочи взбесило меня это (я два дня только фосфор оптимайзил), и прикрутил directx 11, правда пока с небольшим memory leak, примерно гигабайт в секунду (хром аж обзавидовался). Не смотря на это, оно теперь кушает 8% CPU.
Майкрософт - двигатель прогресса)))

Аминь.
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 8 Гость(ей)