Code covered by the BSD License  

Highlights from
Logiciels temps réel

Logiciels temps réel

by

 

Real-time software concerning the domains of the signal processing, feedback and regulation

corcirc2.m
function cxy=corcirc2(x,y,option)

% CORCIRC : Corrlation Circulaire
%
%           SYNTAXE corcirc(x,y,option)
%                   x et y : signaux dont on veut calculer 
%                            l'intercorrlation
%                   option : facultatif
%                            si option='c' ou 'centre'  
%                            le rsultat est recentr
%                                   
%                                   __
%                              1   \         *
%           corcirc(k) = -.  /_  x(k).y [(k-q) modulo N]
%                              N   q
%
%(P. Le Bars - 2002)
%
if (nargin==2)|(nargin==3)
	if length(y)~=length(x)
		error('les deux signaux doivent tre de mme dimension !')
	end;
	N=length(x);
	xp=fft(x,N)/N;
    k=(-N/2:1:N/2-1)';
    B=exp(1i*pi*k/N)./sinc(k/N);
    B=fftshift(B);
    xpc=xp.*B;
	yp=fft(y,N)/N;
	sxy=xpc.*conj(yp);
	c=ifft(sxy,N)*N;
	cim=max(abs(imag(c)))
	crm=mean(abs(real(c)))
	if cim<1e-6*crm
		c=real(c);
	end;
	if nargin==2
		cxy=c;
	else
		if strcmp(option,'c')|strcmp(option,'centre')
		% ******************recentrage
			cxy=fftshift(c);
		else
			error('option inconnue !')
		end;	
	end;
else
	error('il faut au minimum deux arguments !')
end;


Contact us