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

corcirc.m
function [cxy,tau]=corcirc(x,y,te,option)

% CORCIRC : Corrlation Circulaire
%
%           SYNTAXE [cxy,tau]=corcirc(x,y,te,option)
%                   x et y : signaux dont on veut calculer la fonction de corrlation cxy(tau)
%                               tau variant de 0  (N-1).te
%                   te : priode d'chantillonnage
%                   option : facultatif
%                               si option='c' ou 'centre'  
%                               le rsultat est recentr : tau variant de -(N/2).te  +(N/2).te                                 
%                                         __
%                                    1   \         *
%                 corcirc(q) = -.  /_  x(k).y [(k-q) modulo N]
%                                    N   k
%
%(P. Le Bars )
%
if (nargin==3)|(nargin==4)
	if length(y)~=length(x)
		error('les deux signaux doivent tre de mme dimension !')
	end;
	N=length(x);
    t=(0:1:N-1)*te;
	xp=fft(x,N)/N;
	yp=fft(y,N)/N;
	sxy=xp.*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==3
        tau=t;
        cxy=c;
	else
		if strcmp(option,'c')|strcmp(option,'centre')
		% ******************recentrage
			tau=t-N*te/2;
            cxy=fftshift(c);
        else
			error('option inconnue !')
		end;	
	end;
else
	error('il faut au minimum trois arguments !')
end;


Contact us