Eu tenho uma matriz de 1 por 10000 de double`s armazenada em um arquivo chamado "fecg.mat". A matriz representa a magnitude de um sinal FECG gravado.
Eu plotei contra o tempo (de 0 a 9999):
Para remover a linha de base, pergunto-me se posso usar um filtro passa-alto. Como faço para criar um filtro adequado?
O processamento de sinais PS não é o meu campo de estudo. Não faço ideia de como filtrar um sinal discreto no domínio do tempo.
Respostas:
A maneira mais fácil de remover a linha de base é remover a média:
Na verdade, a média é o primeiro coeficiente da transformada de Fourier, portanto, é realmente uma filtragem muito nítida: você está eliminando o coeficiente de CC.
Se você quiser uma filtragem mais clássica, verifique as funções como
butter
e amigos, que sintetizarão um filtro IIR e, em seguida, usefilter
para filtrar seu sinal.O Matlab também inclui uma ferramenta de design de filtro.
fonte
O MATLAB possui uma ferramenta de design de filtro chamada fdatool. Execute o fdatool no MATLAB, ele fornece uma GUI visual, na qual você pode alterar os parâmetros do filtro. Escolha um filtro passa-alto a partir daí e escolha uma frequência de corte0ff. Quando estiver satisfeito com a forma do filtro, exporte-o para a área de trabalho do MATLAB. Digamos que seu nome de filtro seja myFilter e seu nome de sinal seja mySignal. Em seguida, para filtrar o sinal no tipo MATLAB: filterSignal = conv (mySignal, myFilter).
fonte
Se você conhece o conteúdo da frequência do sinal desejado, pode passar alto um pouco abaixo dessa frequência. Digamos que você tenha interesse apenas no sinal acima de 2 Hz e a taxa de amostragem seja de 100 Hz, então você pode fazer o seguinte:
Este é um exemplo específico que usa um highpass de manteiga de 3ª ordem.
fonte
Qual filtro usar depende realmente do aplicativo específico. - Um filtro muito áspero pode remover as informações que você está procurando!
O algoritmo Pan-Tompkins amplamente utilizado (para detecção de QRS) especifica um filtro para a remoção da linha de base nos dados do ECG. Mas é difícil determinar se esse filtro é adequado para o seu aplicativo a partir das informações limitadas que você forneceu. Por favor, elabore uma resposta mais precisa.
fonte
LPF
como disse Castilho . mas a linha de base que obtive foi atrasada. Para corresponder a linha de base e o sinal original para subtraí-los, devo mudar um deles ou existe uma maneira melhor?Eu sugiro que você use um filtro adaptável para remover o ruído da linha de base de 50Hz. um filtro adaptativo lms funcionaria perfeitamente:
fonte