o que é melhor: amostragem para cima ou para baixo?

13

Eu quero comparar dois sinais ou curvas. uma curva amostrada em 30 Hz uma amostra de curva a 2000 Hz

Infelizmente, eles têm taxas de amostragem diferentes. O primeiro é amostrado em 30 Hz, o segundo em 2000 Hz. O Matlab tem a função 'reamostrar' e eu pensei que isso tornaria a comparação muito mais fácil.

Minha pergunta é: É mais sábio diminuir a amostragem da segunda curva ou aumentar a amostragem da primeira?

Edit: Eu fiz como me foi dito. Na imagem à esquerda estão as curvas originais. As curvas à direita são reamostradas. O canto superior direito é ampliado, o canto inferior direito é reduzido.

Eu sei que as curvas são de comprimento diferente, quando reamostradas. No entanto, o segundo sinal será cortado para o comprimento dos primeiros sinais. comparação

NelsonOrange
fonte
1
Eu votei na sua pergunta. Qual você acha que é mais sábio?
se muito alta precisão não importa (neste caso eu acho que não), então você pode downsample, especialmente se ele torna o processo muito mais rápido e você valoriza o seu tempo no trabalho
user1306322
@ Stanley Pawlukiewicz, claramente, eu perco todos os pequenos picos por downsampling. Então, upsampling pode ser o caminho a percorrer. Então, novamente, não preciso dos pequenos picos. Eu até pensei em suavizar o segundo sinal. Então, no meu caso, talvez não importe realmente se eu provar acima ou abaixo.
NelsonOrange
Mais comentários e respostas necessárias?
Laurent Duval

Respostas:

18

Em resumo:

  • Upsampling : não / não deve perder informações (se for feito com sabedoria), então é mais seguro ,
  • Downsampling : pode perder informações (se for imprudente), ainda mais computacionalmente eficiente .

Portanto, se você comparar dados em taxas diferentes e, em uma fase de avaliação, quando tentar definir como a comparação deve ser feita (quais recursos serão comparados, com que métrica, com quais externos, como precisão, eficiência, robustez etc.), um Uma primeira abordagem muito básica seria aumentar a amostra de ambos os sinais por um fator inteiro para reconciliar sua amostragem . Aqui, está tudo bem, 6000 Hz podem funcionar para ambos.

Os motivos podem ser, para a prática de DSP:

  • com upsampling inteiro, você não é obrigado a usar técnicas de filtragem complicadas, e a interpolação linear simples é fácil. Lembre-se, porém, que o upsampling adiciona algumas informações.
  • Se os sinais tiverem a mesma escala, é possível extrair recursos e compará-los: ruído, variabilidade, inclinações, derivações etc. Você pode aplicar a correção correta de escala / deslocamento (eles não têm a mesma amplitude), use linear ou não. transformações lineares (Fourier, etc.) para verificar se existem recursos de semelhanças em diferentes domínios
  • Nesse estágio, você deve poder qualificar e quantificar os recursos / métricas necessários para criar seu algoritmo. E você pode estimar o que pode perder dos dois dados. Por exemplo, você pode criar seu algoritmo e ver como é robusto sinalizar a redução da amostragem e até onde você pode ir. Aqui, seu algoritmo começa a ser mais eficiente.

Depois de passar algum tempo nisso, você estará mais pronto para começar do zero novamente e decidir se deve reduzir a amostra ou não, com qual método etc. para alcançar segurança e eficiência .

Para fornecer alternativas, se você decidir comparar dados no domínio de Fourier, poderá transmitir facilmente dois sinais com comprimento e taxa de amostragem diferentes para o mesmo número de coeficientes de Fourier, ajudando na comparação no domínio da frequência.

Laurent Duval
fonte
14
A redução da amostragem quase sempre perde informações, mesmo que não sejam feitas de maneira imprudente. No entanto a informação perder pode realmente ser uma coisa sensata, então ...
leftaroundabout
@leftaroundabout Em que casos extremos a downsampling não pode perder informações?
20917 Willem
2
@leftaroundabout Eu não concordo. Perder informações é sempre pior do que mantê-las. A única coisa sábia é saber quais informações jogar fora para uma melhor representação do sinal, não a perda de informações em si.
AlexTP #
5
@ William: Como um caso extremamente óbvio, um sinal DC pode ser reduzido para uma única amostra. Em geral, qualquer sinal que não tenha componentes acima do (novo) limite Nyquist pode ser reduzido com segurança.
MSalters
1
Pode-se argumentar que nenhuma informação é perdida de um sinal DC para um sinal de 1 amostra, pois você pode converter novamente em um sinal idêntico ao original de 1 amostra. Pode-se argumentar que as informações são perdidas porque se você der o sinal de 1 amostra a uma pessoa sem mais informações e perguntar "Isso representa um sinal DC?" a resposta será "Não sei, não há informações suficientes com uma amostra".
SE infringe direitos autorais
7

Se você usar uma função como plot (x, y), a maneira mais fácil de exibi-las no mesmo gráfico é simplesmente não reamostrar nenhuma delas, mas simplesmente preencher cada vetor x com valores adequados para cada sinal, para que ambos apareçam onde você deseja no visor.

Você também pode configurar o gráfico para ter dois eixos x diferentes (um para cada curva) com rótulos e legendas diferentes, se desejar.

Agora, sobre reamostragem. Vou usar Fs para a frequência de amostragem.

Um sinal amostrado não pode conter componentes de frequência acima de Fs / 2. É ilimitado.

Além disso, um sinal que contém apenas componentes de frequência até uma frequência F pode ser representado com precisão a uma taxa de amostragem de 2F.

Observe que essa representação "precisa" é matemática, não visual. Para uma boa representação visual, ter 5 a 10 amostras por período (portanto, nenhum componente de frequência notável acima de Fs / 10 ou mais) realmente ajuda o cérebro a conectar os pontos. Veja esta figura: mesmo sinal, a curva inferior tem uma taxa de amostragem mais baixa, não há perda de informações porque a frequência é menor que Fs / 2, mas ainda parece uma porcaria.

insira a descrição da imagem aqui

É exatamente o mesmo sinal. Se você amostrar demais (reconstruir) o que está embaixo com um filtro sinc, você conseguirá o que estiver no topo.

Dizimação (downsampling) dobrará todos os componentes de frequência mais altos que os novos Fs / 2 no sinal. É por isso que geralmente colocamos um filtro íngreme de passagem baixa antes do dizimador. Por exemplo, para reduzir a amostra de Fs = 2000 Hz para Fs = 30 Hz, primeiro aplicaríamos uma passagem baixa de alta ordem com um ponto de corte um pouco abaixo de 15 hz e só depois dizimar.

No entanto, esse filtro apresentará problemas de resposta transitória, terá atraso de fase em determinadas frequências e poderá alterar o aspecto visual do seu sinal, o que você não deseja fazer se a ideia for compará-los visualmente. A regra acima se aplica, não reduza demais a amostra, mantenha sempre Fs entre 5 e 10x a maior frequência de interesse, se você quiser que a forma do sinal signifique algo. É por isso que um escopo de 200 MHz precisa amostrar de 1 a 2 Gsps.

Minha pergunta é: É mais sábio diminuir a amostragem da segunda curva ou aumentar a amostragem da primeira?

Como dito acima, o mais sensato é não mexer nos dados e simplesmente apresentá-los cada um com seu próprio eixo x no mesmo gráfico.

A conversão da taxa de amostragem seria necessária em alguns casos. Por exemplo, para reduzir o número de pontos, reduzir o uso de memória, torná-lo mais rápido ... ou fazer com que ambos os sinais usem as mesmas coordenadas "x" para realizar cálculos neles.

Nesse caso, você também pode usar um Fs intermediário, reduzir a amostra do sinal com Fs alto e aumentar a amostra do sinal com Fs baixo. Ou apenas reduza a amostra com Fs alto.

Atenda aos critérios de Nyquist e não escolha uma taxa de amostragem muito baixa ou perderá a fidelidade da forma de onda no sinal Fs alto, você obterá mudanças de fase por causa do filtro passa-baixo etc. Ou se conhece o conteúdo de alta frequência é insignificante, você pode fazer uma escolha informada. Eu

Se você usar interpolação linear para combinar as coordenadas "x", lembre-se de que também precisa de um Fs bastante alto. A interpolação funcionaria no sinal superior no gráfico acima, não funcionaria no sinal inferior. Mesmo se você estiver interessado em min, max e tal.

E ... observe que a sobreamostragem / upsampling também interferirá na resposta transitória, pelo menos visualmente. Por exemplo, se você exagerar uma etapa, receberá muitos toques devido à resposta sincera ao impulso do filtro. Isso ocorre porque você recebe um sinal ilimitado de banda, e um bom passo com cantos quadrados na verdade tem largura de banda infinita.

Vou pegar uma onda quadrada como exemplo. Pense no sinal amostrado original: 0 0 0 1 1 1 0 0 0 1 1 1 ... Seu cérebro vê uma onda quadrada.

Mas a realidade é que você deve imaginar cada amostra como um ponto, e não há nada entre os pontos. É todo o ponto de amostragem. Não há nada entre as amostras. Então, quando essa onda quadrada é superextraída usando uma interpolação sincera ... parece engraçada.

insira a descrição da imagem aqui

Esta é simplesmente a representação visual de uma onda quadrada ilimitada de banda. Os movimentos meio existem ... ou talvez não. Não há como saber se eles estavam lá no sinal original ou não. Nesse caso, a solução seria adquirir a onda quadrada original com uma taxa de amostragem mais alta para obter uma melhor resolução na borda, idealmente, você deseja várias amostras na borda, para que ela não pareça mais com um passo de largura de banda infinita. Então, ao fazer a amostragem excessiva desse sinal, o resultado não terá artefatos visuais.

De qualquer forma. Como você pode ver ... apenas mexa nos eixos x. É muito mais simples.

peufeu
fonte
4

Reduzir a amostragem perde informações. O upsampling é sem perdas quando o fator é um número inteiro (você também lembra do fator), mas algumas informações são perdidas quando o fator não é um número inteiro. Upsampling poderia teoricamente perder mais informações do que o downsampling, por fatores de reamostragem muito específicos.

Qual você deve usar? Depende do nível de certeza que você precisa.

Se você não precisa de certeza matemática e quer apenas uma heurística, a redução da amostragem é mais rápida e a amostragem mais alta é mais precisa .

Se você precisa limitar a precisão do seu cálculo: é possível, mas não posso ajudá-lo.

Willem
fonte
+1, porque você conseguiu extrair algumas informações importantes em uma resposta muito concisa.
Dsp_user
3

Depende do que você quer dizer com "comparar" e "mais sábio". O mais sábio, que não é difícil no Matlab, é fazer as duas coisas e decidir por si mesmo.

Na verdade, se você alterasse sua pergunta com resultados de ambas as abordagens, eu a aprovaria e mais pessoas a achariam interessante, e provavelmente ajudaria a descobrir "comparar"


fonte
1

Gostaria de apontar um problema que ocorre ao realizar upsampling que pode ser crucial nesta operação. Quando um sinal é ampliado e os pontos finais dos dados estão longe de zero, o efeito de borda ocorre. Em experiências práticas, esse efeito indesejado deve ser eliminado. Compartilho com esta comunidade um pequeno ensaio com imagens e códigos que escrevi sobre isso que podem ajudar a entender.

https://medium.com/@davidpinyol91/edge-effects-when-resampling-a-signal-on-matlab-how-to-solve-it-cc6458ab1306

Dacapi
fonte