Дискретность трехмерных сигналов

Символическая агрегированная аппроксимация говорит о преобразовании временного ряда (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))'
Другие вопросы по тегам