Mais
×

Como detectar um pico no MATLAB

Atualizado em 17 abril, 2017

O MATLAB é um pacote de software técnico que pode ser usado para o processamento e análise de sinais. Um procedimento comum na análise de sinais é a detecção de picos ou máximos locais (valores maiores do que os pontos adjacentes) dentro de um sinal ruidoso. Normalmente, é necessário limitar a detecção de picos a máximos locais de uma certa largura (duração quando o sinal está no domínio do tempo) além de uma certa altura ou magnitude.

Instruções

As funções do MATLAB podem encontrar picos, conhecidos também como máximos locais (NA/AbleStock.com/Getty Images)
  1. Defina uma fonte de dados importando-os no MATLAB. Por exemplo, crie uma onda senoidal com ruído aleatório:

    my_signal = sin(0:0.1:10) + rand(1,101);

  2. Encontre picos no seu sinal usando o método de interpolação quadrática "findpeaks":

    [peak_value, peak_location] = findpeaks(my_signal);

  3. Busque picos de uma altura mínima usando o parâmetro "minpeakheight". A altura é um escalar com valor real que se refere ao valor de dados mínimo permitido em um pico:

    [peak_value, peak_location] = findpeaks(my_signal,'minpeakheight',2.5);

  4. Busque picos com uma separação de uma certa distância como mínimo usando o parâmetro "minpeakdistance". O valor é o número mínimo de índices entre picos no vector "my_signal" e deve ser um inteiro:

    [peak_value, peak_location] = findpeaks(my_signal,'minpeakdistance',5);

  5. Busque só os picos que estejam por cima de um certo limiar com o parâmetro "threshold". Esse parâmetro deve ser um escalar de valor real e se refere à diferença mínima permitida entre os picos e os pontos de dados adjacentes:

    [peak_value, peak_location] = findpeaks(my_signal,'threshold',0.5);

  6. Busque apenas uma certa quantidade de picos com o parâmetro "npeaks". O valor deve ser inteiro:

    [peak_value, peak_location] = findpeaks(my_signal,'npeaks',5);

  7. Ordene a lista de picos obtida usando o parâmetro "sortstr". Os valores permitidos são "ascend", "descend" e "none":

    [peak_value, peak_location] = findpeaks(my_signal,'sortstr','ascend');

Cite this Article A tool to create a citation to reference this article Cite this Article