Como 'embranquecer' um sinal no domínio do tempo?

12

Estou tentando entender como implementar exatamente o que é conhecido como filtro de 'pré-clareamento' ou simplesmente um filtro de 'clareamento'.

Entendo que o objetivo é torná-lo um delta como sua função de autocorrelação, mas não tenho certeza de como fazer isso exatamente.

O contexto aqui é o seguinte: Um sinal é recebido em dois receptores diferentes e sua correlação cruzada é calculada. A correlação cruzada pode parecer um triângulo ou alguma outra forma esquecida por Deus. Devido a isso, torna-se difícil encontrar o pico do sinal de correlação cruzada. Nesse caso, eu ouço sobre ter que "branquear" os sinais antes que uma correlação cruzada seja executada neles, de modo que a correlação cruzada seja agora mais parecida com um delta.

Como isso é feito?

Obrigado!

Spacey
fonte
Observe que, no contexto dos sistemas de comunicação, o que sua pergunta descrita como branqueador está desempenhando essencialmente a função de um equalizador. Parece o mesmo para mim; pode ser apenas uma nomenclatura diferente.
Jason R
Sim, a nomenclatura mal definida torna ainda mais confuso o que eles estão tentando fazer às vezes.
Spacey

Respostas:

7

Suponha que você tenha sinais e y ( t ) cuja função correlação cruzada R x , y ( t ) não é algo que você gosta; você quer R x , y para ser impulso-like. Observe que no domínio da frequência, F [ R x , y ] = S x , y ( f ) = X ( f ) Y ( f ) .x(t)y(t)Rx,y(t)Rx,y

F[Rx,y]=Sx,y(f)=X(f)Y(f).
Assim, a filtrar os sinais através de filtros lineares e h , respectivamente, para obter x ( t ) = x * g , X ( f ) = X ( f ) L ( f ) , e y = y * H , Y ( f ) = Y ( f ) H ( f ) , e agora a função de correlação cruzada é ghx^(t)=xgX^(f)=X(f)G(f)y^=yhY^(f)=Y(f)H(f) , cuja transformação de Fourier é F [ R x , y ] = S x , y ( f )Rx^,y^ isto é, R x , y , é a correlação cruzada deRx,ycom Rh,g. Mais importante, você quer escolhergehpara que adensidade espectral cruzadaG(f)
F[Rx^,y^]=Sx^,y^(f)=[X(f)G(f)][Y(f)H(f)]=[X(f)Y(f)][G(f)H(f)]=[X(f)Y(f)][G(f)H(f)],
Rx^,y^Rx,yRh,ggh de g e h é o inverso multiplicativo do espectral cruzada densidade X ( f ) Y * ( f ) de x e y , ou algo parecido com isso. Se você possui apenas um sinal e um filtro, obtém o resultado fornecido por Hilmar (com a alteração dada pelo meu comentário lá). Em ambos os casos, a questão de compensar nulos espectrais, ou geralmente bandas de frequência em que os sinais têm pouca energia ainda permanece.G(f)H(f)gh X(f)Y(f)xy
Dilip Sarwate
fonte
Obrigado pela resposta - você pode explicar os comprimentos envolvidos aqui? Por exemplo, qual é o comprimento da função de transferência de potência de X, se x [n] tiver o comprimento N? (Mesmo com y ...)
Spacey
Ok - eu aceitarei a resposta, mas escreverei uma nova pergunta decolando nesta noite e podemos levá-la a partir daí. Obrigado novamente.
Spacey
7

O pré-clareamento pode ser feito filtrando com uma função de transferência que é aproximadamente o inverso do espectro de potência do sinal. Digamos que você tenha um sinal de áudio aproximadamente rosa. Para clarear isso, você aplicaria um filtro cor-de-rosa inverso (a resposta de frequência aumenta em 3 dB por oitava).

No entanto, não tenho certeza se isso ajudará no seu problema. O pré-clareamento tende a amplificar as partes de baixa energia no sinal, que podem ser barulhentas e, portanto, aumentar o ruído geral no seu sistema. Se você estiver tentando determinar se dois sinais estão alinhados no tempo (ou qual é o alinhamento do tempo), existe alguma imprecisão inerente no problema relacionada à largura de banda do sinal. Isso é exatamente representado no formato do domínio do tempo da função de autocorrelação. 

Hilmar
fonte
Obrigado pela sua resposta - sim, inverter o espectro como você disse provavelmente não funcionará aqui ... o uso de 'pré-branqueadores' parece tão onipresente que eu tendem a pensar que existem muitas maneiras de fazer isso além disso? ...
Spacey
2

Geralmente, existe um método simples de clarear um vetor xdado um exemplo de conjunto de dados. Não está claro em sua pergunta se a dimensão dexseria 2 ou se você estiver incluindo uma janela temporal deslizante. De qualquer forma, você deseja correlacionar os componentes dex. Fazê-lo no domínio da frequência para um problema tão simples é árduo.

Supondo que você comece com um conjunto de dados de exemplo que consiste em amostras dos vetores de dados - esse pode ser um conjunto de amostras dos dois sinais em momentos diferentes. Você subtrai a média do conjunto de dados para que a média dexé zero. Então você precisa calcular a matriz de covariância dos dadosCEuj=1NxDumatumaxEuxj Onde N é o número de exemplos de dados e Eu,j são índices dos componentes de x, que, se houver 2 sinais, passa de 0 a 1. A matriz de covariância nesse caso será apenas 2x2.

Depois de ter essa matriz de covariância, é possível calcular uma transformação de clareamento na forma de uma matriz para multiplicar os dados para obter a versão clareada. A covariância desses novos dados embranquecidos é a matriz de identidade.

Os dados clareados serão y=C-1/2x. Esta é apenas uma versão matricial do cálculo da variação sobre um conjunto de dados de exemplo e, em seguida, da divisão de quaisquer novos dados pela raiz quadrada da variação, a fim de normalizar seu desvio padrão.

Você pode calcular C-1/2 usando decomposição de Cholesky onde C=eueuT. Para uma matriz 2x2, é muito fácil usar álgebra simples . Os dados embranquecidos são dados pory=eu-1x, que desde eu O triangular inferior pode ser calculado com eficiência por solucionadores comuns sem formar o inverso.

Robotbugs
fonte
0

Se é apenas como filtrar as partes de baixa energia no sinal, você poderia usar um filtro passa-baixo? Existem algumas implementações sobre isso.

Se isso é útil: Este artigo de Karjalaien et. al é sobre o filtro de clareamento e o método de previsão linear distorcida, que é usado pelo filtro.

jcomouth
fonte