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

 
 
> Алгоритм расчета THD
stepit
сообщение Jul 29 2011, 22:12
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 29-07-11
Пользователь №: 66 487



Здравствуйте, реализовал следующий алгоритм расчета THD:

1. Снимаем сигнал y со звуковой карты;
2. Накладываем окно Хенинга на сигнал: yw = hanning(y);
3. Делаем FFT и ищем частоту основной гармоники: S = fft(yw), f = max(abs(S));
4. Берем значения спектра в гармониках: h1 = S(f), h2=S(2*f).. hn = S(n*f);
5. Рассчитываем THD = 100 * norm([h2 .. hn]) / norm(h1).

В этом алгоритме меня беспокоит точность определения амплитуды гармоники, и вобще низнаю как оценить точность работы алгоритма. Может кто знает другие алгоритмы расчета THD, тогда пожалуйста поделитесь.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SPACUM
сообщение Jul 30 2011, 16:17
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 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 отдельно получить.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Aug 7 2011, 04:10
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 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. Там открыты исходники измерительной части (правда, к старой версии).
Go to the top of the page
 
+Quote Post
SPACUM
сообщение Aug 7 2011, 15:44
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 22-06-09
Из: Москва
Пользователь №: 50 531



Цитата(Alexey Lukin @ Aug 7 2011, 08:10) *
Там открыты исходники измерительной части (правда, к старой версии).

Приблизительно так и делаю.
У меня прибор с АЦП ADS1254E, применял метод очень похожий, немного другое окно,
для измерения отдельно шума отрезал частоты гармоник +-6 гармоник Фурье и 6 гармоник Фурье в начале.
THD = -69дБ, N = -96дБ (для 80% максимальной синусоиды на 80Гц, генератор Г3-118).
Шум в начале спектра появляется при сигнале большем половины допустимой амплитуды.


--------------------
Ты можешь знать все что угодно, но пока ты не доказал это на практике, ты не знаешь ничего!© Ричард Бах
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 11:55
Рейтинг@Mail.ru


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