Os picos tendem a diminuir quanto mais afastados do centro eles ficam, simplesmente por terem menos amostras sobrepostas. Você pode atenuar esse efeito multiplicando os resultados pelo inverso da porcentagem de amostras sobrepostas.
você( n ) = A ( n ) ∗ N| N- n |
você( N )A ( n )nN
EDIT: Este é um exemplo de como saber se as seqüências são periódicas. A seguir está o código do Matlab.
O parâmetro "imparcial" para a função xcorr diz para ele fazer o dimensionamento descrito na minha equação acima. Porém, a correlação automática não é normalizada, razão pela qual o pico no centro é de cerca de 0,25 em vez de 1. Isso não importa, desde que tenhamos em mente que o pico central é a correlação perfeita. Vemos que não há outros picos correspondentes, exceto nas bordas mais externas. Isso não importa, porque existe apenas uma amostra sobreposta, o que não é significativo.
Ei Jim, obrigado .. Estou um pouco confuso sobre como começar a programar isso, porque sempre que procuro autocorrelação, encontro fórmulas complexas, na verdade não entendo por onde começar e como detectar o pico com o período P no código . Comigo, tenho uma lista de valores V [] = {110011001100 ..} agora como colocá-los em fórmulas de autocorrelação e determinar se é periódico ou não ... Você pode me dar um começo fácil ... Muito obrigado
Safzam
@safzam Se você estiver usando Matlab ou Python (numpy), eles já possuem funções de autocorrelação. Se você precisa de algo em C / C ++ / Java / whatever, em seguida, tentar aqui- dsprelated.com/showmessage/59527/1.php
Jim Clay
Por exemplo, usei os seguintes dois sinais s1 e s2: s1 = [1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1] s2 = [1, 0, 1, 1, 1, 0 , 1, 0, 0, 0, 1] r1 = numpy.correlate (s1, s1, mode = 'full') r2 = numpy.correlate (s2, s2, mode = 'full') Eu usei essas quatro linhas em um código python. Eu obtive r1 = [1 2 1 2 4 2 3 6 3 4 8 4 3 6 3 2 4 2 1 2 1] er r2 = [1 0 1 1 2 0 3 2 3 2 6 2 3 2 3 0 2 1 1 0 1] ambos R1 e R2 dá uma mesma curva do arco-íris como forma .. Como se pode determinar no código que é um sinal peroidc ou graças quase periódicas ou não periódicas em tudo,
obrigado por esta informação. De fato, estou criando um programa em python, onde recebo muitas listas de 0s e 1s. Quero separar séries periódicas, aleatórias e de tipo burst. Estou tentando a lógica acima em python, mas a função "xcorr" não está em python, então usei a função numpy.correlate (lst, lst, mode = 'full'). Além disso, as listas contêm uma lista redonda de 70.000 de 0s e 1s. Eu só quero determinar se essa lista é periódica ou não ... se houver um pouco de periodicidade, posso evitá-la. qualquer outra dica plz. desde já, obrigado.
A resposta de Jim me levou a pensar em como testar isso estatisticamente. Isso me levou ao teste de autocorrelação de Durbin-Watson .
A generalização disso é formar:
e minha tentativa de implementar isso no scilab é:
Se eu plotar o resultado para nossas duas sequências de exemplo:
Então fica claro que a segunda sequência exibe correlação com defasagens de 4, 8 etc. e anti-correlação com defasagens de 2, 6 etc.
fonte