Matlab Xcorr函数返回返回数组大块的NAN

Matlab Xcorr函数返回返回数组大块的NAN,matlab,signals,cross-correlation,Matlab,Signals,Cross Correlation,我有一些合成信号数据要交叉关联,然后再继续使用实际数据,但是xcorr函数返回了一个奇怪的结果 我已经在大小相同(2101 x 1 double)的各个数据集的开始(delay=100)或结束添加了延迟,并将它们通过返回数组(4201 x 1 double)的xcorr 结果在第101行和第2205行之间有一个NAN,然后在该行之后以x10^5的顺序开始一个响铃效应。我现在附上了结果的照片 有谁能就如何纠正我正在尝试做的事情提供一些建议吗?我希望能够绘制结果,并看到我设置的延迟出现峰值 谢谢 编

我有一些合成信号数据要交叉关联,然后再继续使用实际数据,但是xcorr函数返回了一个奇怪的结果

我已经在大小相同(2101 x 1 double)的各个数据集的开始(delay=100)或结束添加了延迟,并将它们通过返回数组(4201 x 1 double)的xcorr

结果在第101行和第2205行之间有一个NAN,然后在该行之后以x10^5的顺序开始一个响铃效应。我现在附上了结果的照片

有谁能就如何纠正我正在尝试做的事情提供一些建议吗?我希望能够绘制结果,并看到我设置的延迟出现峰值

谢谢

编辑:

简短示例代码

    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);

X=[-4.99-0.2984.9512.0615.7618.8619.0017.8214.3511.776.710.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=长度(X);
延迟=2;
%设置两个新阵列,其末端将有随机噪声
Xx=零(N+延迟,1);
Yx=零(N+延迟,1);
对于i=1:N+延迟
如果idelay
Xx(i)=X(i-延迟);
结束
结束
对于i=1:N+延迟
如果在
Yx(i)=兰特;
结束
结束
C=xcorr(Xx,Yx);

请提供一个带有一些小矢量的示例,以再现问题,这样我们就可以运行现在使用codeQuestion编辑的codeQuestion。您的示例代码生成的结果没有NaN,图片没有响铃。那么到底是什么问题呢?如果我知道我就不用问了!我的意思是,代码的结果有什么问题。您说有
NaN
和铃声,但您的代码不会产生
NaN'
s或铃声。那么你的问题到底是什么?