DFT - Removendo o efeito da janela no domínio espectral com convolução


11

Eu estava pensando no assunto da janela do DFT e um pensamento me veio à mente. Um DFT produzirá o espectro de um sinal contornado com o espectro da janela utilizada, tendo, portanto, lobos principais e lobos laterais.

Imaginei que seria possível remover o efeito da janela no espectro do sinal, convoluindo novamente a magnitude do sinal e da magnitude do espectro da janela, e funcionou de fato como você pode ver na imagem a seguir.

insira a descrição da imagem aqui

Esquerda é o espectro original gerado com uma janela de interrupção. À direita é o espectro complicado pela DFT de uma janela de iluminação. O topo é o próprio Spectrum, o fundo é o findpeaksresultado do MATLAB .

Nunca li nada sobre essa técnica, mas tenho certeza de que não inventei nada lá. Então, eu estou me perguntando se há algum benefício em fazer esse processamento no espectro ou se há um aspecto negativo que eu não estou vendo.

Pelo que vejo, isso pode ajudar a detectar picos, como podemos ver na imagem anterior. Além disso, parece que o espectro está um pouco distorcido, como podemos ver nas 2 imagens a seguir. :

insira a descrição da imagem aqui insira a descrição da imagem aqui

Onde o gráfico azul é o espectro e o gráfico vermelho o espectro pós-complicado.

  • Alguma idéia sobre isso?
  • Existe algum problema que possa surgir dessa convolução pós-FFT?
  • Algum papel que trata do assunto?

EDITAR

Você pode encontrar um script aqui que irá gerar o seguinte gráfico:

insira a descrição da imagem aqui


11
Você poderia fornecer o código usado para plotar as figuras? Presumo que a suavidade da função convolvida é apenas uma questão de resolução. Você não pode desfazer a janelas por convolving mais uma vez com a mesma janela (você seria realmente precisa de convolve, que é o que a resposta de RBJ se refere). Além disso, uma melhoria real seria uma resolução de frequência aumentada e / ou uma supressão aumentada do lóbulo lateral, nenhuma das quais é alcançada aqui. Encontrar os picos "corretos" é relativamente fácil para ambas as funções.
Matt L.

Acabei de editar minha postagem para adicionar um exemplo de código.
Pier-Yves Lessard

Respostas:


1

De fato, há uma desvantagem em sua sugestão: os sinais que você mostrou são claramente divididos em seus componentes de frequência, mas, em geral, os sinais da vida real tendem a ser mais barulhentos.

Dependendo da aplicação, você deseja o máximo de amortecimento de vazamentos (lóbulos principais mais altos / lóbulos laterais menores de uma frequência de sinal no espectro transformado) ou, como outro exemplo, o lóbulo principal mais estreito possível.

Em suas plotagens, é visível que suavizar os espectros de magnitude com uma janela faz o oposto disso: os lobos principais ficam mais amplos e menores, enquanto os produtos de vazamento transformam um ganho finito de sinal no tempo. Aplicado a sinais ruidosos, isso traria uma desvantagem significativa.

Sua sugestão, no entanto, ainda é bastante útil para identificação de pico!


1

permanecendo fiel ao assunto "removendo o efeito da janela no domínio freq via convolução" (apesar do OP talvez desejasse obter algo mais ou algo semelhante), sinto que adiciono meu comentário tendo experiência pessoal com esse tópico específico.

Freqüentemente, tenho a necessidade de remover uma janela Hann no domínio da frequência, trabalhando em uma estrutura STFT que usa quadros com janelas Hann como padrão, para transportar processamento espectral avançado em que o espectro de entrada é esperado como NÃO NONO (em vez disso, por exemplo). filtragem).

Em uma palavra: sim, você pode. Apesar de remover matematicamente uma janela (no domínio do tempo ou da frequência) implica reconstruir dados que são perdidos para sempre, na prática, é possível com uma perda mínima provável.

Vamos pegar uma janela de Hann (cosseno elevado). Sua fórmula no domínio do tempo é y = (1-cos (pi * x)) / 2, com x variando de zero a e excluindo um no quadro. Sua representação correspondente no domínio da frequência é bin0 = (0,5,0i), bin1 = (- 0,5,0i). Para remover seu efeito no domínio do tempo, você pode simplesmente dividir o sinal pela função da janela acima mencionada. Para fazer o mesmo no domínio da frequência, você pode simplesmente convencer o espectro a não ser exibido com o espectro do inverso da referida função. Como essa função é zero nas duas extremidades (na verdade, é matematicamente zero apenas no primeiro ponto, a menos que haja erros de arredondamento), para evitar o infinito, você pode simplesmente trocar o infinito com um valor grande como 10000 ou mais. O resultado dessa convolução é o espectro sem janela. Ao convertê-lo no domínio do tempo,

Talvez você não possa remover uma janela retangular, porque a quantidade de dados perdidos pela multiplicação de grandes áreas do sinal por zero é impossível de recuperar em teoria. Mas acho que isso depende do conteúdo do espectro. Por exemplo, se é o espectro de um sinusóide simples, removendo o padrão de janela retangular, convolvendo com o espectro de uma função que é um valor alto onde o retângulo era zero e outro onde era um (isto é, recíproco), talvez você ainda possa obter (substancialmente) o espectro de um sinusóide para reconstruir todo o sinal.


0

é uma boa pergunta e um bom insight que tenho certeza de que outros tiveram. o de -convolution no domínio da frequência é como multiplicar no domínio do tempo e se você está deconvolving o efeito de uma janela de Hann no domínio da frequência, é como sua divisão pelo efeito da janela de Hann no domínio do tempo. nas caudas onde a janela de Hann chega a zero, há um número muito pequeno para se preocupar.

geralmente o efeito da janela é deixado porque, se você estiver voltando, poderá querer o efeito da janela no domínio do tempo. ou se você nunca estiver transformando de volta (isso é uma análise ou modelagem de alg e não uma modificação), você só está interessado em parâmetros que são propriedades desses picos e apenas lida com o efeito conhecido de convolver com um conhecido e que pode modificar um parâmetro extraído de maneira determinística. então você apenas compensa isso no seu parâmetro extraído.

Por fim, dependendo do que você estiver fazendo, considere o uso de uma janela guassiana para análise. tem muito pouco problema de lóbulo lateral e sob condições lineares (como um filtro), cada senoide com janela mantém a forma da janela quando transformado de volta ao domínio do tempo. essa janela pode ser desfeita e uma janela Hann aplicada após a transformação novamente no domínio do tempo.


6
Em princípio, concordo com suas declarações. No entanto, o OP não está falando sobre deconvolução, mas convoluindo o espectro obtido com o espectro da janela de interrupção. (isto é, essencialmente, de janela com uma janela quadrada)
Maximilian Matthé 31/12/16

11
não, o OP está falando em remover o efeito, não dobrar o efeito. divisão é o mesmo que multiplicação pelo recíproco. ele é multiplicado por um número que fornece o resultado que chamamos de quociente . sendo que convolver em um domínio é o mesmo que multiplicar no outro domínio, deconvolução é o mesmo que convolver com algo especialmente determinado.
Robert Bristow-johnson

2
O OP está falando sobre remover as ondulações, realizando uma convolução do espectro obtido com o espectro da janela. Este rendimentos multiplicação do sinal com a janela quadrada (uma janela a partir da multiplicação inicial no tempo, o segundo um proveniente da convolução em frequência)
Maximilian Matthé

11
Bem, não exatamente. Realizo uma convolução das magnitudes do espectro que produzem resultados diferentes da multiplicação da janela quadrada. Não tenho certeza do que representa matematicamente ... Eu vejo isso como uma correlação cruzada entre as duas magnitudes do espectro (já que os espectros do Windows são simétricos).
Pier-Yves Lessard

0

A técnica que você usou para suavizar o espectro é frequentemente usada ao analisar o próprio espectro e você não se importa com os efeitos no domínio do tempo (por exemplo, na detecção de sinais com base na frequência ou na medição da largura de banda). Não existe nem um requisito de que a janela usada para suavização seja a mesma que a janela usada no domínio do tempo. Um dos principais motivos para usar uma janela no domínio do tempo antes da DFT é minimizar a descontinuidade no contorno que a DFT assume nas extremidades do sinal (a DFT é inerentemente circular). O objetivo da suavização no domínio da frequência é facilitar análises como detecção de pico ou medição de largura de banda. A janela "melhor" para um pode não ser a janela "melhor" para o outro. Na verdade, nunca vi o DFT de uma janela usada para suavização espectral.


Pelo que entendi, estou fazendo uma correlação cruzada com o espectro, portanto, obtendo picos no centro dos lobos principais. Usar as janelas do domínio do tempo parece ser a escolha óbvia e não vejo por que eu usaria uma correlação cruzada de janela de vagão para descobrir onde está localizado o espectro da janela hanning. Por que queremos algo mais que a mesma janela?
Pier-Yves Lessard

Sim, o resultado que você descreve é ​​uma convolução com a autocorrelação da janela, mas isso é apenas uma convolução com uma janela diferente. A autocorrelação resultará em um pico MUITO apertado na CC. Então você efetivamente convolveu o espectro do sinal com um filtro passa-baixo muito apertado. É a resposta de frequência desse filtro que fornece o resultado que você vê, não o fato de ser uma autocorrelação. O fato de ser uma autocorrelação é coincidência.
Cassman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.