Frage

Symbolische Aggregatnäherung spricht über die Konvertierung einer Zeitreihe (x,t) in Symbole. Auf dieser Grundlage habe ich einige grundlegende Fragen.Was ist, wenn das Zeitsignal eine Zusammensetzung aus (x,y,z,t) ist, die Positionskoordinaten darstellt, oder einfach (x,y,t) für ein zweidimensionales Bild mit einem Zeitstempel t?Wie verwende ich dann dieses Tool zum Zuweisen/Diskretisieren von Symbolen? Bitte helfen Sie.

War es hilfreich?

Lösung

Sie könnten das anwenden SAXOPHON Führen Sie die Transformation für jede Dimension einzeln durch und kombinieren Sie dann die Symbole/Buchstaben für jeden Zeitstempel.

Nehmen Sie zum Beispiel (x,y,z,t), Sie erhalten die Kombination b,a,c für t=1 also a,a,c für t=2 usw.

Wenn Sie möchten, können Sie die Symbole dann zu „Mega-Symbolen“ kombinieren.Angenommen, der Satz von Symbolen war Symbols={a,b,c}.Dann wäre die neue Buchstabenmenge einfach das kartesische Produkt SxSxS (eine für jede Dimension).

Mit anderen Worten aaa wird zum neuen Buchstaben A, aab als B, Dann aac, aba, abb, usw..


BEARBEITEN:

Hier ist ein Code, der zeigt, was ich mir vorgestellt habe.Da ich keine Implementierung des SAX-Algorithmus habe, verwende ich die folgende Funktion als Platzhalter (sie gibt Unsinn zurück):

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

Hier ist der Code:

%# 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))'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top