Вопрос о взаимной корреляции Matlab и коэффициента корреляции - PullRequest
1 голос
/ 08 июня 2011

Я пишу программу на C ++, но использую данные из Matlab с использованием Cross Correlation.Я понимаю, что когда я делаю корреляцию на 2 наборах данных, это дает мне один коэффициент коэффициента корреляции, указывающий, связаны ли они.Но я хочу использовать кросс-корреляцию для серии данных .Когда я запускаю кросс-корреляцию на Matlab, она дает мне много данных, и при построении графика график выглядит как треугольник ... Я понимаю, что корреляция должна быть где-то между +/- 1, но данные к вершине треугольника не 'в то же время и т. д. Есть ли у меня путаница с тем, что дает мне кросс-корреляция, или это данные, которые кросс-корреляция дает мне фактически коэффициенты корреляции для каждой точки s (t), например, p (t)?Любая помощь с разъяснением приветствуется.

Редактировать 1 (после ответа Фонона)

Мой главный вопрос: это данные, которые я получаю, когда я взаимно коррелирую 2 ряда данныхкоэффициент корреляции для каждой точки.Например, (0,10) и (0,8);Являются ли данные, которые я получаю коэффициент корреляции этих 2 графиков при х = 0?

Ответы [ 2 ]

1 голос
/ 08 июня 2011

В Matlab xcorr(x,x) дает автокорреляцию сигнала x. Он не масштабирован, это просто вектор внутренних произведений сигнала со смещенными версиями самого себя. Для масштабирования используйте xcorr(x,x,'coeff'). Эта команда будет масштабировать вашу автокорреляцию по энергии сигнала (другими словами, она будет делить каждый коэффициент на значение коэффициента при нулевой задержке). Обратите внимание, что когда вы делаете взаимную корреляцию , xcorr(x,y'coeff'), вы не получите значение 1 и нулевую задержку, потому что масштабирование выполняется по-разному. Это будет только 1, если вы коррелируете сигнал с самим собой (я хотел бы, чтобы математические формулы поддерживались SO, чтобы я мог выписать его для вас).

0 голосов
/ 08 июня 2011

Вы, вероятно, хотите corrcoef, а не xcorr.

...