Pavia, спасибо за ссылки и подсказки! Вариант в конце - это когда у нас есть одновременно тестовый сигнал и шум. Тогда мы фильтруем две полосы, считаем (или меряем) RMS и делим одно на другое. Я хочу без фильтрации, а с последовательной подачей сигнала и измерением шума на той же частоте, что и сигнал.
На данный момент я понимаю, что для расчета SNR надо брать мощность, которую считать по среднеквадратической, то есть действующей амплитуде (RMS):
Действующую амплитуду можно посчитать по сырому сэмплу или по FFT. Сырые сэмплы не подходят, так как мне нужна узкая полоса частот в спектре, и делать фильтрацию с последующим обоснованием примененных фильтров как-то не очень удобно. Поэтому я хочу взять FFT.
Если я правильно понял, FFT дает нам пиковую амплитуду для синусоид (в некотором приближении). Причем синусоид и тестовых, и шумовых.
Я предполагаю применить следующий алгоритм:
1. Подаем тестовый сигнал, находим максимум в спектре. Это пиковая амплитуда. Переводим ее в действующую амплитуду по формуле для синусоиды:
2. Повторяем процедуру n раз, чтобы посчитать среднее арифметическое (здесь оно должно подойти?).
3. Подаем только шум, находим пиковую амплитуду на той же частоте, что и тестовый сигнал (другие частоты не интересуют или их можно померить по тому же алгоритму отдельно). Находим действующую амплитуду по той же самой формуле для синусоиды (ведь FFT считает синусоидальные компоненты в идеале).
4. Повторяем процедуру n раз, чтобы посчитать среднее арифметическое для шума (или здесь тоже считать среднеквадратическое?).
5. Применяем формулу для SNR.
Как такое? Размытием линий и неточным попаданием частот в полосы FFT (разделением на две полосы) я думаю пока пренебречь. Дрожание частоты вроде небольшое, поэтому не должно бы быть разделения на две полосы. Так или иначе, этот разброс должен быть виден на АЧХ.
Про нормировку я все забыл... Или не знал... То есть лучше сложить мощности в некотором диапазоне частот вокруг тестового пика?
-- Ср май 07, 2014 00:15:47 --Блин, вот что я не учел то - это что мощность шума распределена по широкой полосе, то есть надо складывать все это. Значит считаем RMS амплитуд линий в некотором диапазоне, возводим в квадрат, чтобы перевести в пропорции мощности, складываем эти мощности и уже по ним считаем SNR? То есть SNR будет зависеть от выбранной полосы частот?