Функция Matlab Xcorr возвращает NaN для большого блока возвращаемого массива - PullRequest
0 голосов
/ 08 января 2020

У меня есть некоторые синтетические c данные сигнала для взаимной корреляции, прежде чем перейти к реальным данным, но функция xcorr возвращает нечетный результат.

Я добавил задержку на любой старт (delay = 100 ) или конец соответствующих наборов данных, которые имеют одинаковый размер (2101 x 1 double), и поместите их через xcorr, который возвратил массив (4201 x 1 double).

Результат содержит NaN между строками 101 и 2205, а затем эффект замедления после этого начинается в порядке х10 ^ 5. Теперь я приложил фотографии результата Cross correlation result

Может кто-нибудь предложить несколько советов о том, как исправить то, что я пытаюсь сделать? Я ожидаю, что смогу построить результат и увидеть всплеск задержки, которую я установил.

Спасибо

РЕДАКТИРОВАТЬ:

Краткий пример кода

    X = [-4.99 -0.298 4.95 12.06 15.76 18.86 19.00 17.82 14.35 11.77 6.71 0.80 -5.07 -11.79 -15.34 -18.60 -18.56 -19.31 -14.37 -11.51 -5.04];
    Y = [14.13 18.48 7.53 -3.41 -8.41 -13.40 -15.37 -17.34 -16.83 -16.33 -12.21 -8.09 -8.80 -9.52 3.90 17.31 17.52 17.72 17.73 17.75 16.90];

    N = length(X);
    delay = 2;

    % set up two new arrays which will have random noise at ends 
    Xx = zeros(N+delay,1);
    Yx = zeros(N+delay,1);

    for i=1:N+delay
        if i<=delay
            Xx(i) = rand;
        elseif i>delay
            Xx(i) = X(i-delay);
        end
    end

    for i=1:N+delay
        if i<=N
            Yx(i) = Y(i);
        elseif i>N
            Yx(i) = rand;
        end
    end

    C = xcorr(Xx,Yx);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...