Pergunta

Simbólico Agregado Aproximação fala sobre a conversão de uma série de tempo (x,t) em símbolos.Com base nisso,eu tenho algumas perguntas básicas.E se o tempo do sinal é um composto de (x,y,z,t) representa as coordenadas de posição ou simplesmente (x,y,t) para 2 dimensional imagem com um carimbo de tempo t.Então como faço para usar esta ferramenta para atribuir símbolos/discretize.Por favor, ajuda.

Foi útil?

Solução

Você pode aplicar o SAX transformação para cada dimensão separadamente e, em seguida, combinar os símbolos/letras para cada carimbo de hora.

Levar a (x,y,z,t) por exemplo, você gostaria de obter a combinação b,a,c para t=1, então a,a,c para t=2, etc..

Em seguida, você pode combinar os símbolos para formar "mega-símbolos" se você quiser.Dizer que o conjunto de símbolos foi Symbols={a,b,c}.Em seguida, o novo conjunto de letras que seria simplesmente o produto cartesiano SxSxS (uma para cada dimensão).

Em outras palavras aaa torna-se a nova carta A, aab como B, e , em seguida, aac, aba, abb, etc..


EDITAR:

Aqui está um código para mostrar o que eu tinha em mente.Desde que eu não tenho uma implementação do SAX algoritmo, eu vou estar usando a seguinte função de marcador de posição (ele retorna lixo):

%# use your actual SAX function instead of this one
my_sax_function = @(x,n,a) randi(a, [n 1]);

Aqui está o código:

%# time series of length=100, with (x,y,z) at each timestamp
data = cumsum(randn(100,3));

%# apply your SAX function to each dimension independently
N = 20;     %# number of segments to divide the signal into
A = 3;      %# size of alphabet (a,b,c)
dataSAX = zeros(N,3);
for i=1:3
    dataSAX(:,i) = my_sax_function(data(:,i), N, A);
end

%# we assume the above function returns integers denoting the symbols
%# therefore row i corresponds to A=3 symbols for each of the 3 x/y/z dimensions
dataSAX(1,:)

%# build cartesian product of all combinations of the A=3 symbols
[x y z] = ndgrid(1:A,1:A,1:A);
cartProd = [x(:) y(:) z(:)];

%# map to the new alphabet with 3*3*3 = 27 symbols
[~,V] = ismember(dataSAX, cartProd, 'rows')

%# A to Z with $ character to make up 27 symbols
oldSymbols = {'a';'b';'c'};             %# 1: a, 2: b, 3: c
newSymbols = cellstr(['A':'Z' '$']');   %# 1: A, ..., 26: Z, 27: $

%# SAX representation of the entire time series as a string
mappedV = char(newSymbols(V))'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top