53 lines
1.2 KiB
Matlab
Executable File
53 lines
1.2 KiB
Matlab
Executable File
% Kreuzkorrelation von x und y
|
|
% ----------------------------
|
|
%
|
|
% Aufruf:
|
|
% Function [rxy,fpo]=ccorr(x,y,N)
|
|
%
|
|
% Parameter:
|
|
% x : Eingangsdaten 1
|
|
% y : Eingangsdaten 2
|
|
% N : Maximale Verschiebung der Eingangsdaten
|
|
%
|
|
% Rückgabewerte:
|
|
% rxy: Kreuzkorrelationskoeffzienten
|
|
% fpo: Anzahl der Floating-Point Operationen
|
|
|
|
% -------------------------------------------------------------------------
|
|
% Datum : 07.08.2001
|
|
% Autor : Jens Ahrensfeld
|
|
% Thema : Diplomarbeit
|
|
% Datei : ccorr.m
|
|
% Benötigte Dateien:
|
|
%
|
|
% -------------------------------------------------------------------------
|
|
function [rxy,fpo]=ccorr(x,y,N)
|
|
|
|
% Ermittling der FFT-Länge (für Radix-2)
|
|
C = 2^ceil(log2(N));
|
|
|
|
% Zero-Padding wenn N != 2^r
|
|
xzp = [x;zeros(C-N,1)];
|
|
yzp = [y;zeros(C-N,1)];
|
|
|
|
flops(0);
|
|
|
|
% C-Punkte FFT der Eingangsdaten
|
|
Xk = fft(xzp,C);
|
|
Yk = fft(yzp,C);
|
|
|
|
% Korrelation im Frequenzbereich
|
|
Rk = Xk.*conj(Yk);
|
|
|
|
% Rücktransformation
|
|
rk = ifft(Rk,C)/C;
|
|
|
|
% Abspeichern der ersten N Werte
|
|
rxy(1:N/2) = rk(N/2+1:N);
|
|
rxy(N/2+1:N) = rk(1:N/2);
|
|
|
|
fpo = flops;
|
|
|
|
% -------------------------------------------------------------------------
|
|
% Ende ccorr.m
|