Dies wird durch Aliasing verursacht. Bitte versuchen Sie den folgenden Code.
clear;
clc;
N=4000;
Fs=1000;
a1_normalized_frequency=0.1;
b1_normalized_frequency=0.3;
a1_amplitude=1;
b1_amplitude=0.5;
time=0:1/Fs:4;
a1_frequency=Fs*a1_normalized_frequency;
b1_frequency=Fs*b1_normalized_frequency;
A=[zeros(1,length(time)) a1_amplitude*sin(2*pi*a1_frequency*time)+b1_amplitude*sin(2*pi*b1_frequency*time) zeros(1,length(time))];
Y=randn(1,length(A))+A;
Cross_Correlation_Time_domain=xcorr(A,Y);
figure(1)
plot(Cross_Correlation_Time_domain);
FFT_A=fft(A);
FFT_Y=fft(Y);
Multiply_FFT_A_Y=FFT_A.*FFT_Y;
cross_correlation_frequency_domain=ifft(Multiply_FFT_A_Y);
figure(2)
plot(fftshift(real(cross_correlation_frequency_domain)));
Ich habe Nullen zu Ihrem A Array hinzugefügt Aliasing zu vermeiden.
Wenn ich cross_correlation_frequency_domain
plotten verwendete ich fftshift
Funktion, um die Signalreihenfolge auszurichten.
Vielen Dank. Bitte, wenn ich ein Signal um plus/minus 100 Sample verschieben und die Korrelation darstellen möchte, wie kann ich das tun? – user6052232
Sie meinen, Sie wollen Ihr um 100 Samples verschobenes A-Signal plotten? In diesem Fall, einfach "Plot (A (101: Ende))" – KKS
Danke, ja, zweimal. eins plus 100 und eins minus 100 – user6052232