|
|
 |
Ответов
|
Jul 30 2011, 16:17
|
Частый гость
 
Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531

|
Цитата(stepit @ Jul 30 2011, 02:12)  меня беспокоит точность определения амплитуды гармоники 1.Посмотрите как предоставляются соответствующие данные для реальных АЦП например для ADS1258. На графиках видно, что сигнал синхронен с оцифровкой и окон не используется, просто БПФ на 32к точек, где каждая гармоника представлена одной линией. 2.Для хороших АЦП шум и уровень гармонических искажений можно различить только после БПФ с таким большим числом точек. Интегральный уровень гармоник THD обычно меньше интегрального уровня шума. Регламентируется только THD+N. 3.В Вашем случае невозможно точно синхронизировать частоту сигнала и частоту оцифровки, поэтому возможна только грубая оценка и если измерять THD+N не обязательно БПФ на много точек. 4.Для грубой оценки получите логарифмический спектр, на нем виднее -> найдите выброс соответствующий поданной частоте и определите сумму квадратов амплитуд в него попавших -> разделите на нее сумму квадратов остальных амплитуд -> далее десятичный логарифм и умножить на 10. Это THD+N. Можно и окна использовать, но все-равно грубо получится. 5.Для точной оценки нужна точная синхронизация, а если еще и много точек, то можно THD и N отдельно получить.
--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
|
|
|
|
|
Aug 7 2011, 04:10
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(SPACUM @ Jul 30 2011, 20:17)  3.В Вашем случае невозможно точно синхронизировать частоту сигнала и частоту оцифровки, поэтому возможна только грубая оценка и если измерять THD+N не обязательно БПФ на много точек. Почему грубая? При достаточно большом размере БПФ гармоники в спектре чётко видны, и их амплитуды можно вычислить вполне точно (используя либо суммирование энергии вокруг каждой гармоники, либо flat-top окно). У хороших ЦАП и АЦП гармоники находятся на уровне -100...-110 дБ относительно уровня полезного сигнала, а спектр шума — на пару десятков дБ ниже (при размере БПФ порядка 500 мс). Цитата(stepit @ Aug 1 2011, 13:57)  Часто, в обзорах, встречаются графики зависимости THD от частоты. Вот и мне стало интересно как их расчитывают ? Делают несколько измерений на разных частотах, а потом интерполируют ? Или может посредством специальних сигналов (chirp, mls, multisin, etc.) ? Можно и интерполяцией, а можно и chirp-сигналом. Алгоритм тот же, что и для одной частоты. Учитываем только расширение спектра каждой гармоники из-за изменения частоты во времени. Цитата(stepit @ Aug 6 2011, 22:00)  Тестировал алгоритм с помощью звуковой карты. Результаты сравнимые с Rightmark Audio Analyzer: THD = 0.0034%, THD+N = 0.0071%. И еще, интересно, может кто знает opensource проекты где можно посмотреть как реализированы алгоритмы обработки сигналов: THD, THD+N, SNR, Clipping detection, etc. Упомянутый вами RMAA — как раз и есть open source. Там открыты исходники измерительной части (правда, к старой версии).
|
|
|
|
|
Aug 15 2011, 13:37
|
Группа: Новичок
Сообщений: 7
Регистрация: 29-07-11
Пользователь №: 66 487

|
Цитата(Alexey Lukin @ Aug 7 2011, 07:10)  Упомянутый вами RMAA — как раз и есть open source. Там открыты исходники измерительной части (правда, к старой версии). 1) Frequency response calculation. Как видно из кода, выходной сигнал у Вас состоит из набора синусоид разной амплитуды и частоты. А FR = db(InAmp) - db(OutAmp). - За каким принципом, Вы, выбираете частоты и амплитуды для выходного сигнала (функ. FRGenerateOutput) ? - Почему, Вы, не используете chirp сигнал для расчета FR ? Ведь он должен дать лучшее разрешение по частоте и фазе. 2) THD calculation. - Какую weighting curve Вы используете при измерении THD+N (FFT::ACurve - не похоже что A-weighting curve) ?
|
|
|
|
|
Aug 15 2011, 16:37
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(stepit @ Aug 15 2011, 17:37)  1) Frequency response calculation. Как видно из кода, выходной сигнал у Вас состоит из набора синусоид разной амплитуды и частоты. А FR = db(InAmp) - db(OutAmp). - За каким принципом, Вы, выбираете частоты и амплитуды для выходного сигнала (функ. FRGenerateOutput) ? Частоты — исходя из желаемой плотности точек графика и разделимости синусоид с помощью FFT фиксированного размера. Амплитуды — согласно "среднестатистическому" спектру звуковых сигналов. Цитата(stepit @ Aug 15 2011, 17:37)  - Почему, Вы, не используете chirp сигнал для расчета FR ? Ведь он должен дать лучшее разрешение по частоте и фазе. Для chirp-сигнала чуть сложнее получить аккуратные оценки амплитуды, особенно в низкочастотном спектре: требуется более длительный тестовый сигнал. В более поздних версиях RMAA есть и chirp тоже. Цитата(stepit @ Aug 15 2011, 17:37)  2) THD calculation. - Какую weighting curve Вы используете при измерении THD+N (FFT::ACurve - не похоже что A-weighting curve) ? Для THD+N (A) используется именно A-взвешивание, согласно графику в вашей ссылке.
Сообщение отредактировал Alexey Lukin - Aug 15 2011, 16:39
|
|
|
|
Сообщений в этой теме
stepit Алгоритм расчета THD Jul 29 2011, 22:12 V_G Ну, может, не окно Ханнинга, а flat-top window. Дл... Jul 30 2011, 00:41 ivan219 Здесь про окна http://dsplib.ru/
здесь про алгорит... Jul 30 2011, 10:09  SPACUM Цитата(Alexey Lukin @ Aug 7 2011, 08:10) ... Aug 7 2011, 15:44 stepit Спасибо за коментарии. Часто, в обзорах, встречают... Aug 1 2011, 09:57 SPACUM Цитата(stepit @ Aug 1 2011, 13:57) Спасиб... Aug 1 2011, 13:07 V_G Про зависимость THD от частоты в общем не слышал (... Aug 1 2011, 14:04 stepit Цитата(SPACUM @ Aug 1 2011, 16:07) 1.Разд... Aug 6 2011, 18:00
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|