これは、エイリアシングによって引き起こされます。以下のコードを試してください。
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)));
エイリアスを避けるために、A配列にゼロを追加しました。
cross_correlation_frequency_domain
をプロットすると、私はfftshift
信号の順序を整える機能を使用しました。
出典
2016-10-24 01:03:12
KKS
ありがとうございます。どうすればいいですか?A信号を±100サンプルシフトして相関をプロットするにはどうすればいいですか? – user6052232
あなたは100サンプルだけシフトしたA信号をプロットしたいのですか?その場合、 'plot(A(101:end))' – KKS
ありがとう、ありがとう、2回。 1プラス100と1マイナス100 – user6052232