www.gusucode.com > signal 案例源码程序 matlab代码 > signal/CrossCorrelationOfDelayedSignalInNoiseExample.m
%% Cross-Correlation of Delayed Signal in Noise % This example shows how to use the cross-correlation sequence to detect % the time delay in a noise-corrupted sequence. The output sequence is a % delayed version of the input sequence with additive white Gaussian noise. % Create two sequences. One sequence is a delayed version of the other. The % delay is 3 samples. Add $N(0,0.3^2)$ white noise to the delayed signal. % Use the sample cross-correlation sequence to detect the lag. % Copyright 2015 The MathWorks, Inc. %% % Create and plot the signals. Set the random number generator to the % default settings for reproducible results. rng default x = triang(20); y = [zeros(3,1);x]+0.3*randn(length(x)+3,1); subplot(2,1,1) stem(x,'filled') axis([0 22 -1 2]) title('Input Sequence') subplot(2,1,2) stem(y,'filled') axis([0 22 -1 2]) title('Output Sequence') %% % Obtain the sample cross-correlation sequence and use the maximum absolute % value to estimate the lag. Plot the sample cross-correlation sequence. [xc,lags] = xcorr(y,x); [~,I] = max(abs(xc)); figure stem(lags,xc,'filled') legend(sprintf('Maximum at lag %d',lags(I))) title('Sample Cross-Correlation Sequence') %% % The maximum cross correlation sequence value occurs at lag 3 as expected.