シンボリック集計近似では、時系列(x、t)をシンボルに変換する方法について説明しています。これに基づいて、基本的なクエリはほとんどありません。時間信号が、位置座標を表す(x、y、z、t)の合成、またはタイムスタンプtを持つ2次元画像の単純な(x、y、t)の合成である場合はどうなりますか。次に、このツールを使用してシンボルを割り当てる/離散化するにはどうすればよいですか。助けてください。
質問する
284 次
1 に答える
1
SAX変換を各ディメンションに個別に適用してから、各タイムスタンプの記号/文字を組み合わせることができます。
(x、y、z、t)を例にとると、b,a,c
t = 1、次にa,a,c
t=2などの組み合わせが得られます。
次に、必要に応じて、シンボルを組み合わせて「メガシンボル」を形成できます。記号のセットがだったとしましょうSymbols={a,b,c}
。その場合、新しい文字のセットは単純にデカルト積になりますSxSxS
(次元ごとに1つ)。
つまり、、、、、などのように、aaa
新しい文字A
になります。aab
B
aac
aba
abb
編集:
これが私が考えていたことを示すためのコードです。SAXアルゴリズムの実装がないため、プレースホルダーとして次の関数を使用します(ゴミを返します)。
%# use your actual SAX function instead of this one
my_sax_function = @(x,n,a) randi(a, [n 1]);
コードは次のとおりです。
%# 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))'
于 2012-07-26T00:56:09.240 に答える