Цитата(AlexOr @ Dec 10 2009, 11:06)

А как работают современные измерители нелинейных искажений? Применяют ли БПФ для измерения КНИ?
Насколько я понимаю, в случае если частота основной гармоники не равна частоте бина БПФ, невозможно точно определить амплитуду основной гармоники.
Собственно стоит задача написания алгоритма измерителя КНИ для сигнальника с плавающей точкой. Непонятно каким путем идти…..
И как измеряют THD = 0.001 % ?
Для измерения предельно малых значений КНИ применяют исключительно спектральное оценивание, конкретно оценивание СПМ (спектральной плотности мощности). Для большей информации см. классический труд Марпла младшего. Иного способа измерения предельно малых КНИ не существует в природе. Дело в том, что чем длиннее БПФ (больше отсчетов входного сигнала, а не нулей, в расчетах) тем выше отношение сигнал/шум на выходе. Так БПФ от 4096 точек увеличивает исходное отношение сигнал/шум примерно на 33 дБ. Более детальную формулу можно найти у Кеслера (ADI). Точность по амплитуде достигается выбором типа окна, длинны БПФ, частоты дискретизации и величины перекрытия БПФ. Обычно выполняется БПФ в скользящем окне со сдвигом на 1/4 длинны БПФ. При этом длинна самой выборки сигнала должна быть не менее 2х длин БПФ (лучше 4), иначе будет сильно сказываться эффект конечной выборки, т.е. ограниченности времени наблюдения.
Там ещё есть "ньюансы" с построением входной части по линейности входного усилителя, джиттеру в АЦП и т.д. Но режекцию основной частоты никто не применяет, а вот компенсацию сигнала (СПЕКТРА) измерительного (эталонного) генератора - есть такое дело, поскольку сделать генератор с КНИ 0.0001% это задача для мужчин. Причем не для всех и не с плавной перестройкой по частоте.
Audio Precision Вам в помощь...
Кстати, выбор плавающей точки для данной задачи не есть гуд. Плавающая точка всегда дает приблизительный результат и, как следствие, более высокий вычислительный шум. На фиксированной можно получить более качественный результат, нужно только правильно масштабироваться по итерациям.