Этот пример показывает, как использовать взаимную корреляцию вейвлета, чтобы измерить подобие между двумя сигналами в различных шкалах.
Взаимная корреляция вейвлета является просто локализованной версией шкалы обычной взаимной корреляции между двумя сигналами. Во взаимной корреляции вы определяете подобие между двумя последовательностями путем сдвига один относительно другого, умножения переключенных последовательностей поэлементно и подведения итогов результата. Для детерминированных последовательностей можно записать это как обычное скалярное произведение: где и последовательности (сигналы), и панель обозначает комплексное спряжение. Переменная, k, является переменной задержки и представляет сдвиг, к которому применяются . Если оба и действительны, сопряженное комплексное число не необходимо. AssumeThat та же последовательность как но задержанный L> 0 выборок, где L является целым числом. Для конкретности принять . Если вы выражаете с точки зрения выше, вы получаете . Неравенством Коши-Шварца вышеупомянутое максимизируется когда . Это означает если вы сдвиг влево (усовершенствование) 10 выборками вы получаете максимальное значение последовательности взаимной корреляции. Если версия L-delayed , , затем последовательность взаимной корреляции максимизируется в .
Если у вас есть Signal Processing Toolbox™, можно показать это при помощи xcorr
. Создайте треугольный сигнал, состоящий из 20 выборок. Создайте шумную переключенную версию этого сигнала. Сдвиг в пике треугольника является 3 выборками. Постройте последовательности y
и x
.
x = triang(20); rng default; y = [zeros(3,1);x]+0.3*randn(length(x)+3,1); subplot(2,1,1) stem(x,'filled') axis([0 22 -1 2]) title('Input Sequence') subplot(2,1,2) stem(y,'filled') axis([0 22 -1 2]) title('Output Sequence')
Используйте xcorr
, чтобы получить последовательность взаимной корреляции и определить задержку, где максимум получен.
[xc,lags] = xcorr(x,y); [~,I] = max(abs(xc)); figure stem(lags,xc,'filled') legend(sprintf('Maximum at lag %d',lags(I))) title('Sample Cross-Correlation Sequence')
Максимум найден в задержке-3. y
сигнала является вторым входом к xcorr
, и это - задержанная версия x
. Необходимо переключить y
3 выборки налево (отрицательный сдвиг), чтобы максимизировать взаимную корреляцию. Если вы инвертируете роли x
и y
как входные параметры к xcorr
, максимальная задержка теперь происходит в положительной задержке.
[xc,lags] = xcorr(y,x); [~,I] = max(abs(xc)); figure stem(lags,xc,'filled') legend(sprintf('Maximum at lag %d',lags(I))) title('Sample Cross-Correlation Sequence')
x
является усовершенствованной версией y
, и вы задерживаете x
тремя выборками, чтобы максимизировать взаимную корреляцию.
modwtxcorr
является основанной на шкале версией xcorr
. Чтобы использовать modwtxcorr
, вы сначала получаете неподкошенный вейвлет, преобразовывает.
Примените взаимную корреляцию вейвлета к двум сигналам, которые являются переключенными версиями друг друга. Создайте две экспоненциально ослабленных синусоиды на 200 Гц с аддитивным шумом. Сигнал x
имеет свой центр времени в секунды, в то время как y
сосредоточен в секунды.
t = 0:1/2000:1-1/2000; x = sin(2*pi*200*t).*exp(-50*pi*(t-0.2).^2)+0.1*randn(size(t)); y = sin(2*pi*200*t).*exp(-50*pi*(t-0.5).^2)+0.1*randn(size(t)); figure plot(t,x) hold on plot(t,y) xlabel('Seconds') ylabel('Amplitude') grid on legend('x','y')
Вы видите, что x
и y
очень похожи за исключением того, что y
задерживается на 0,3 секунды. Получите неподкошенное преобразование вейвлета x
и y
вниз к уровню 5 с помощью Фейера-Коровкина (14) вейвлет. Коэффициенты вейвлета на уровне 3 с частотой дискретизации 2 кГц являются аппроксимированным полосовая фильтрация входных параметров. Локализация частоты фильтров Фейера-Коровкина гарантирует, что это полосовое приближение довольно хорошо.
wx = modwt(x,'fk14',5); wy = modwt(y,'fk14',5);
Получите последовательности взаимной корреляции вейвлета для преобразований вейвлета x
и y
. Постройте последовательность взаимной корреляции вейвлета уровня 3 для 2 000 задержек, сосредоточенных в нулевой задержке. Умножьте задержки на период выборки, чтобы получить значимую ось времени.
[xc,~,lags] = modwtxcorr(wx,wy,'fk14'); lev = 3; zerolag = floor(numel(xc{lev})/2+1); tlag = lags{lev}(zerolag-999:zerolag+1000).*(1/2000); figure plot(tlag,xc{lev}(zerolag-999:zerolag+1000)) title('Wavelet Cross-Correlation Sequence (level 3)') xlabel('Time') ylabel('Cross-Correlation Coefficient')
Последовательность взаимной корреляции достигает максимума в задержке-0.3 секунд. Преобразование вейвлета y
является вторым входом к modwtxcorr
. Поскольку второй вход modwtxcorr
переключен относительно первого, пиковая корреляция происходит в отрицательной задержке. У вас есть к сдвигу влево (усовершенствование) последовательность взаимной корреляции, чтобы выровнять временные ряды. Если вы инвертируете роли входных параметров к modwtxcorr
, вы получаете пиковую корреляцию в положительной задержке.
[xc,~,lags] = modwtxcorr(wy,wx,'fk14'); lev = 3; zerolag = floor(numel(xc{lev})/2+1); tlag = lags{lev}(zerolag-999:zerolag+1000).*(1/2000); figure plot(tlag,xc{lev}(zerolag-999:zerolag+1000)) title('Wavelet Cross-Correlation Sequence (level 3)') xlabel('Time') ylabel('Cross-Correlation Coefficient')
Чтобы показать, что взаимная корреляция вейвлета включает шкалу (частота) - локализованная корреляция, постройте последовательности взаимной корреляции на уровнях 1 и 5.
lev = 1; zerolag = floor(numel(xc{lev})/2+1); tlag = lags{lev}(zerolag-999:zerolag+1000).*(1/2000); plot(tlag,xc{lev}(zerolag-999:zerolag+1000)) title('Wavelet Cross-Correlation Sequence (level 1)') xlabel('Time') ylabel('Cross-Correlation Coefficient')
figure lev = 5; zerolag = floor(numel(xc{lev})/2+1); tlag = lags{lev}(zerolag-999:zerolag+1000).*(1/2000); plot(tlag,xc{lev}(zerolag-999:zerolag+1000)) title('Wavelet Cross-Correlation Sequence (level 5)') xlabel('Time') ylabel('Cross-Correlation Coefficient')
Последовательности взаимной корреляции вейвлета на уровнях 1 и 5 не приводят доказательства экспоненциально взвешенных синусоид из-за полосовой природы вейвлета, преобразовывают.
С финансовыми данными часто существует продвижение или отставание отношения между переменными. В тех случаях полезно исследовать последовательность взаимной корреляции, чтобы определить, если отставание одной переменной относительно другого максимизирует их взаимную корреляцию. Чтобы проиллюстрировать это, рассмотрите корреляцию между двумя компонентами GDP - частные потребительские расходы и грубые частные внутренние инвестиции. Данные ежеквартально взвешиваются цепочкой американские действительные данные о GDP для 1974Q1 к 2012Q4. Данные были преобразованы путем первого взятия натурального логарифма и затем вычисления различия года по году. Посмотрите на корреляцию между двумя компонентами GDP - частные потребительские расходы, pc
, и грубые частные внутренние инвестиции, privateinvest
.
load GDPcomponents piwt = modwt(privateinvest,'fk8',5); pcwt = modwt(pc,'fk8',5); figure modwtcorr(piwt,pcwt,'fk8')
Персональные расходы и персональные инвестиции негативно коррелируются в течение 2-4 четвертей. В более длинных шкалах существует сильная положительная корреляция между персональными расходами и персональными инвестициями. Исследуйте последовательность взаимной корреляции вейвлета в шкале, представляющей 2-4 цикла четверти. Постройте последовательность взаимной корреляции наряду с 95% доверительных интервалов.
[xcseq,xcseqci,lags] = modwtxcorr(piwt,pcwt,'fk8'); zerolag = floor(numel(xcseq{1})/2)+1; figure plot(lags{1}(zerolag:zerolag+20),xcseq{1}(zerolag:zerolag+20)) hold on plot(lags{1}(zerolag:zerolag+20),xcseqci{1}(zerolag:zerolag+20,:),'r--') xlabel('Lag (Quarters)') ylabel('Cross-Correlation') grid on title({'Wavelet Cross-Correlation Sequence -- [2Q,4Q)'; ... 'Personal Consumption and Private Investment'})
Последовательность взаимной корреляции вейвлета самой прекрасной шкалы показывает пиковую положительную корреляцию в задержке одной четверти. Это указывает, что персональные инвестиции изолируют персональные расходы одной четвертью. Если вы принимаете то отношение отставания во внимание, то существует положительная корреляция между компонентами GDP во всех шкалах.