Размышления на тему(+)


[an error occurred while processing this directive]
     Отправлено OVP 11 октября 2000 г. 12:00:46
     В ответ на: Подскажите алгоритм для вычисления S/N и THD (+) отправлено Vadim 10 октября 2000 г. 13:31:08
Если бы знать, какого вида этот аналоговый сигнал, какого рода шум в полосе 20Гц-20кГц, с какой скоростью необходимо получать решения и для чего (т.е. понимать с какой точностью и т.п.), то отвечать было бы проще.
Согласен с Владимиром, если время позволяет, то можно использовать быстрое преобразование Фурье. Но при этом надо учитывать, что частота дискретизации должна быть порядка 80 кГц (не знаю, что у вас за кодек, думаю не такой). Потом, количество точек может быть довольно большим (оно определяется точностью и видом вашего сигнала). Те кодеки, с которыми я работал очень неудобны для непрерывного вычисления FFT в реальном времени, поскольку они придуманы для рекурсивных алгоритмов обработки сигнала, а когда надо сделать выборку, и только потом ее обрабатывать (одновременно принимая следующую) - это геморой. Процедуры обработки прерываний раздуваются и т.п. В общем, подумайте хорошенько.
Можно поступить иначе, хотя опять же неизвестно какие там у вас шумы.
Первым делом надо поставить путьний полосовой фильтр (20Гц-20кГц), понятно зачем.
Потом реализовать коррелятор:
Z1=сумма[y(t)*s(t)]
Z2=сумма[y(t)*s1(t)]
Сумма берется по периоду вашего сигнала. y(t) - суммарный сигнал в тракте;
s(t) и s1(t) - квадратурные составляющие опорной копии s(t) вашего сигнала, обладающего единичной энергией, т.е. сигнал равен A*s(t), где А - амплитуда, а для s(t) выполняется условие {сумма[s(t)*s(t)]=1}
Оценка амплитуды сигнала: А=sqrt(Z1*Z1+Z2*Z2)
Оценка фазы: ф=arctg(Z1/Z2)+pi*(sign(Z1)-1)/2
sign(x)=1, если х>=0, иначе =0.
Так вот, если вы посчитаете дисперсию оценки фазы на некотором интервале времени, то она будет равна 1/(q*q), где q - это S/N.
В принципе можно посчитать дисперсию оценки амплитуды, она будет равна энергии шума. Если полученное значение поделить на истинное значение квадрата амплитуды сигнала, то опять получите 1/(q*q).
Проблема в том, что истинного значения амплитуды вы не знаете, а можете вычислить только среднее на некотором интервале значение. Если предположить, что, на таком интервале, шум в тракте имеет матожидание=0, то можно заменить истинное значение на среднее и не мучаться с арктангенсами.
Насчет THD ничего сказать не могу, т.к. толком не помню, чем они определяются. Из формулы Владимира нечего не понял, гармонические искажения я себе как-то иначе представлял, в общем не знаю.

Составить ответ ||| Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

Ответы


Отправка ответа

Имя:(обязательно)
E-Mail:

Тема:(обязательно)

Сообщение:(обязательно)

Ссылка на URL:
Имя ссылки:
URL изображения:


Перейти к списку ответов ||| Конференция «Цифровые сигнальные процессоры (DSP) и их применение»