LINUX.ORG.RU

Scilab - Взаимокорреляционная функция


0

0

Приветствую всех! Счастливые пользователи Матлаба явно знакомы с такой функцией как xcorr, позволяющей находить взаимокорреляционную функцию.

Появилась необходимость посчитать значения ВКФ для двух массивов разной размерности, что оказалось стандартными средствами Скайлаба не удалось реализовать: corr и correl требуют, чтобы размерности массивов были одинаковы!

xcorr конвертировать в Скайлаб не смог!

Подскажите, есть ли готовые решения или как конвертировать матлабовскую функцию!


Во-первых, не «скайлаб», а сайлаб! (с небом он никак не связан :) )

Во-вторых, посмотри реализацию xcorr в матлабе: там все делается через Фурье-преобразования. Оба вектора дополняются нулями до ближайшей большей длины, равной степени двойки; делаются FFT обоих векторов; перемножаются; затем делается IFFT и вектор приводится к нужной длине.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от CBP

Тогда уж Ссайлаб!

:)

Sci - сокращение от science (сайенс - наука). Так что, «сайлаб». (Правда, если уж быть совсем точным - «сайлэб»).

В матлабе, кстати, тоже есть функция корреляции, базирующаяся не на преобразованиях Фурье, а на банальной свертке. Однако, для больших массивов данных эта процедура выполняется намного медленнее, чем три преобразования Фурье и одно умножение.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от scabarocci

man корреляция, man свертка: если функции f и g - действительные, их сверка и корреляция - суть одно и то же.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

\int_{-\infty}^{+\infty} f(t) g(t-x)dx

и

\int_{-\infty}^{+\infty} f(t) g(t+x)dx

Это абсолютно одинаково?

Whereas convolution involves reversing a signal, then shifting it and multiplying by another signal, correlation only involves shifting it and multiplying (no reversing).

scabarocci
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.