Matlab 频域分块互相关

Matlab 频域分块互相关,matlab,cross-correlation,Matlab,Cross Correlation,我在MATLAB中有以下代码来计算2个序列x和y的直接互相关: clc clear x = rand(1,32); y = rand(1,32); N = length(x); nfft=2*N-1; % cross-correlation in freq domain xc_full_fd = fftshift(ifft( fft(x,nfft) .* conj(fft(y,nfft)) )); 上述结果与xcorr(x,y)完全匹配。好的 现在,我想通过从x和y一

我在MATLAB中有以下代码来计算2个序列x和y的直接互相关:

 clc
 clear

 x = rand(1,32);
 y = rand(1,32);

 N = length(x);

 nfft=2*N-1;


 % cross-correlation in freq domain
 xc_full_fd = fftshift(ifft( fft(x,nfft) .* conj(fft(y,nfft)) ));
上述结果与xcorr(x,y)完全匹配。好的 现在,我想通过从x和y一次采集8个样本来进行同样的分块操作。即:

 clc
 clear

 x = rand(1,32);
 y = rand(1,32);

 x_1 = x(1:8);
 y_1 = y(1:8);
为了获得与使用整个序列相同的结果,我接下来的步骤是什么?我知道我应该执行重叠添加方法,但我不确定每个块应该附加多少个零,相邻块之间的重叠长度b应该是多少,以实现与xcorr(x,y)相同的结果? 请帮助我扩展上述代码,以便在频域中实现块互相关


提前谢谢

只分配
nfft=63
@Yvon:nfft=63不会给出相同的结果。实际上,我有x=rand(140000)和y=rand(140000)。但我一次只能访问128个样本并执行256点fft,但最后应该会使用40000个样本再现与我得到xcorr(x,y)相同的结果。上面的示例只是此示例的简化版本(为了简单起见,将40000个示例减少到32个)。