Como encontrar estimativas suavizadas da derivada e da segunda derivada de um sinal?

10

Eu tenho um sinal amostrado em : onde . Eu quero encontrar a primeira e segunda derivada do sinal: f '(t) e f' '(t) .ΔtfEu(tEu=EuΔt)Eu=0 0,...,n-1 1f(t)f(t)

Meu primeiro pensamento foi estimar os derivativos por diferenças centrais:

f(tEu)=f(tEu+1 1)-f(tEu-1 1)2Δtf(tEu)=f(tEu+1 1)-2f(tEu)+f(tEu-1 1)(Δt)2

No entanto, o sinal pode ter muito ruído de alta frequência que pode causar flutuações rápidas em f e f .

Qual seria a melhor maneira de encontrar estimativas "suavizadas" de f e f ?

Andy
fonte

Respostas:

6

Provavelmente depende mais dos seus dados. Apenas saiba que, como a diferenciação é uma operação linear, se você escolher qualquer filtro linear para suavizar f 'e f' ', será equivalente a suavizar f usando o mesmo filtro e, em seguida, obtendo suas derivadas.

Você pode postar algumas fotos ou mais informações sobre o sinal que deseja diferenciar? Provavelmente o que você está procurando é algum tipo de filtro passa-baixo para suavizar o sinal. Algumas opções realmente simples incluem um filtro recursivo unipolar como ou um filtro Hann, que está apenas convencendo o sinal com uma janela Hann. A opção de filtro Hann é boa porque é de fase linear. Se você conhece a faixa de frequência de sua preferência, basta criar um filtro passa-baixo adequado no domínio da frequência.y(n)=umax(n)+(1 1-uma)y(n-1 1)

schnarf
fonte
Obrigado schnarf! Portanto, como a suavização seguida pela diferenciação é igual à diferenciação seguida pela suavização; Posso também suavizar o sinal original convolvendo com, por exemplo, a janela Hann? Que tal a abordagem mais simples de usar uma diferença finita em um intervalo maior: f '(t) ~ = [f (t + 10 * Dt) -f (t-10 * Dt)] / (20 * Dt), isso dar uma estimativa bastante boa de um derivado suavizado?
Andy
4

O filtro Savitzky-Golay fornece estimativas suaves do sinal e das primeiras derivadas.

Uma implementação do MATLAB pode ser encontrada aqui .

eglaser
fonte