Дискретность трехмерных сигналов
Символическая агрегированная аппроксимация говорит о преобразовании временного ряда (x,t) в символы. Основываясь на этом, у меня есть несколько основных запросов. Что, если сигнал времени является составной частью (x,y,z,t), представляющей координаты положения, или просто (x,y,t) для двумерного изображения с отметкой времени t. Тогда как мне использовать этот инструмент для назначения символов / дискретизации. Пожалуйста, помогите.
1 ответ
Вы можете применить преобразование SAX к каждому измерению отдельно, а затем объединить символы / буквы для каждой отметки времени.
Возьмите (x,y,z,t), например, вы получите комбинацию b,a,c
для t=1, то a,a,c
для t=2 и т. д.
Затем вы можете объединить символы в мега-символы, если хотите. Скажем, набор символов был Symbols={a,b,c}
, Тогда новый набор букв будет просто декартовым произведением SxSxS
(по одному на каждое измерение).
Другими словами 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))'