корреляция между векторами разной длины

Как можно найти корреляцию между векторами разной длины? Например:

clear all 
time1 = 1 + (365-1).*rand(1,12);
time2 = 1 + (365-1).*rand(1,24);

data1 = 1 + (20-1).*rand(1,12);
data2 = 1 + (20-1).*rand(1,24);

обычно я бы нашел корреляцию с:

R = corrcoef(data1,data2);

но векторы должны быть одинаковой длины! Как бы я этого добился?


person Emma    schedule 02.04.2012    source источник


Ответы (2)


Если ваши векторы представляют собой сигналы, дискретизированные на разных частотах, как вы указали выше в комментарии, и если для обоих сигналов вы выше скорости Найквиста, вы можете повышать/понижать дискретизацию, следовательно, интерполировать/прореживать сигнал дискретного времени без потери какой-либо информации. Затем вы можете использовать стандартную меру корреляции.

person jkt    schedule 02.04.2012

A) Вы берете (или копируете) более длинный вектор, удаляете все точки данных, которые не имеют эквивалента в более коротком, затем вычисляете корреляцию, как обычно.

B) Вы определяете свою собственную меру «корреляции между векторами разной длины» и то, что она должна измерять в первую очередь, а затем вычисляете ее. (Не стесняйтесь публиковать здесь свои результаты. Думаю, это будет новаторски.)

person arne.b    schedule 02.04.2012
comment
A) Но если оба вектора являются временными рядами и измерения не проводятся в одни и те же периоды, вы не можете просто удалить точки данных, которые не похожи на более короткий вектор. - person Emma; 02.04.2012