Transformação tipo DFT usando ondas triangulares em vez de ondas sinoviais


9

Sabemos que o DFT (transformada discreta de Fourier) divide um sinal em múltiplas frequências de ondas senoidais. Existe uma transformação que faz a mesma coisa, mas para ondas triangulares?

Para os meus propósitos, estou falando apenas de sinais 1-d (como tensões, etc.). Estou estudando dados históricos do mercado de ações e só quero observar reversões em determinadas ações. Em outras palavras, desejo executar um "passe baixo" no preço das ações usando essa transformação.

Edit: Se sim, como posso fazer isso?


Para qualquer sinal, acho que não, mas gostaria de ver uma prova do por que não. Se você souber que o sinal é composto de ondas triangulares, poderá ser possível calcular sua frequência, fase e amplitude individuais.
Geometrikal

2
O raciocínio simples diz que deve ser possível para qualquer sinal. Como os próprios triângulos podem ser representados por sinais senoidais de diferentes frequências e podem ser dimensionados. A verdadeira questão é o que você inferiria disso e essas inferências seriam praticamente úteis?
Naresh

Bem, estou estudando dados históricos do mercado de ações e só quero observar reversões em certas ações. Em outras palavras, eu quero executar uma "low-pass" sobre o preço das ações usando este transformar
hassan789

Respostas:


8

A transformação ortogonal mais próxima que conheço que possa atender às suas necessidades é a Transformação Inclinada . É baseado em ondas de dente de serra (ish), mas algumas das funções básicas se assemelham a ondas triangulares:

Funções de base inclinada

(fonte: transformação de Fourier aplicada )

Foi desenvolvido para codificação / compactação de imagens, mas parece uma primeira abordagem razoável para a análise de tendências / reversões lineares de longo prazo nos dados financeiros. Não parece que muitos dos documentos principais que descrevem a transformação estejam disponíveis [gratuitamente] on-line, mas o documento a seguir provavelmente possui detalhes suficientes para implementar algo:

Um método de truncamento para computar transformações inclinadas com aplicativos para processamento de imagens. MM Anguh, RR Martin. IEEE Trans. Communications 43 (6), 2103-2110, 1995. ( link do autor ) ( link em pdf )

Especificamente, consulte a Seção III, que fornece as relações de recursão usadas para construir a matriz de transformação.


parece promissor!
Hassan789

usando este código Matlab: eeweb.poly.edu/iselesni/slantlet/index.html vou fornecer feedback em breve ...
hassan789

Não acho que a Transformação Slantlet seja a mesma coisa que a Transformação Slant. Ambos podem ser úteis.
datageist

4

As splines B de primeira ordem são triângulos e existem algoritmos para representar um sinal arbitrário como uma soma das splines B. Como mencionado, esses splines não formam uma ortobase, mas isso não é necessariamente uma coisa terrível.

Um bom ponto de partida é o artigo de Unser sobre uma aproximação eficiente de spline B. http://bigwww.epfl.ch/publications/unser9301.pdf


11
este é um bom começo, e realmente poderia ser melhor para mim, especialmente se eu posso usar parabólicos b-splines em vez dos cúbicos .... vai ler / aprender mais para isso também
hassan789

2

Você pode fazer uma transformação que use ondas triangulares em vez de ondas senoidais, mas não é uma boa opção porque elas não são ortogonais. A ortogonalidade é uma propriedade importante dos vetores de transformação.

Propriedades das transformações ortogonais

Transformação Ortogonal


hmmm ... eu não sou tão avançado quando se trata de ortogonalidade ... Honestamente, eu não entendo qual é a implicação da ortogonalidade. Em última análise, isso significa que são necessários mais estilos de CPU para fazer a transformação (kernel de transformação completo versus kernel de transformação esparso)?
Hassan789

0

Você pode usar o anexo do operador integrador (por exemplo, cumsum) seguido por uma transformação Fast Walsh-Hadamard.

por exemplo, em Matlab

n = 16;
H = fwht(eye(n))*sqrt(n); % Walsh-Hadamrd in full unitary matrix form
S = cumsum(eye(n)); % the integrator in full matrix form
T = H*S';  % cumsum along the rows of the W-H 

As seções de valores positivos constantes em H se integram para causar inclinações nas ondas dente de serra; valores negativos tornam-se declínio.

T não é unitário, o que tem repercussões no alongamento dimensional. Pelo lado positivo, ele tem um inverso rápido: outro ponto seguido por um diferenciador.

D = inv(S');  % difference matrix with an extra row at bottom for full rank
Tinv = D*H;   % inverse of T

Você poderia explicar isso um pouco mais? Não vejo como a integração antes do WHT dará o resultado desejado.
Dilip Sarwate
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.