2016-10-23 17 views
0

時間と周波数の2つの信号の相互相関を計算しようとしています。どちらの場合も異なる結果が得られました。クロス相関の計算

time=0:1/1000:2; 
    A=sin(2*pi*f*t)+sin(2*pi*f*t); 
    Y=randn(1,length(A)); 
    C1=xcorr(A,Y); 
    figure 
    plot(C1); 
    FFT_A=fft(A); 
    FFT_Y=fft(Y); 
    F2=FFT_A.*conj(FFT_Y); 
    C2=ifft(F2); 
    plot(C2); 

おかげ

答えて

1

これは、エイリアシングによって引き起こされます。以下のコードを試してください。

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信号の順序を整える機能を使用しました。

+0

ありがとうございます。どうすればいいですか?A信号を±100サンプルシフトして相関をプロットするにはどうすればいいですか? – user6052232

+0

あなたは100サンプルだけシフトしたA信号をプロットしたいのですか?その場合、 'plot(A(101:end))' – KKS

+0

ありがとう、ありがとう、2回。 1プラス100と1マイナス100 – user6052232

関連する問題