Сравните сглаженный сигнал с входным сигналом - PullRequest
1 голос
/ 29 ноября 2010

Я сглаживаю серию точек данных, используя алгоритм, описанный здесь: http://www.scipy.org/Cookbook/SignalSmooth.

Как я могу сравнить сглаженный сигнал с входным сигналом впоследствии?Я надеюсь, что смогу получить скаляр, описывающий, как «близко» вывод от входа.Есть ли стандартный способ сделать это?Какой термин я мог бы найти?

Я понятия не имею, что даже искать.Спасибо!

Ответы [ 3 ]

3 голосов
/ 30 ноября 2010

Я использовал нормализованное среднеквадратичное отклонение .Это дает мне число от 0 до 1. Чем больше число, тем дальше находятся два ряда данных.0 означает идеальное соответствие между сигналом и сглаженным сигналом.

3 голосов
/ 30 ноября 2010

Дискретная корреляция - это способ обнаружения известной формы волны на фоне шумов.Просто найдите корреляцию между двумя сигналами.Дискретная корреляция - это просто произведение векторов:

for n in range(N):
   y[n] = sum( [x1[i]*x2[i+n] for i in range(N)] )

в чистом Python или:

y = xcorr(x1,x2);

в Matlab или:

y = correlate(x1,x2) 

в Python +Сципи.

Корреляция - очень чувствительная мера сходства двух сигналов.Он максимален, когда два сигнала похожи по частотному содержанию и находятся в фазе друг с другом.

0 голосов
/ 29 ноября 2010

Предполагая, что вы сгладили сигнал для устранения шума, наиболее естественным показателем качества будет SNR.

Так что-то вроде:

mean((smoothed[n] - original[n])^2) / mean( (smoothed[n])^2 )

Выше приведено среднее значение сигнала~ 0.

...