Files
matlab/common/correlation/ccorr.m
T
2022-06-30 13:32:40 +02:00

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