function y = tapas_autocorr(x)
% USAGE:
%     Y = tapas_autocorr(X)
%
% INPUT:
%     X - n-by-m matrix of m time series (columns) of length n
%
% OUTPUT:
%     Y - n-by-m matrix with m columns of autocorrelation coefficients for lags n-1 
% --------------------------------------------------------------------------------------------------
% Copyright (C) 2016 Christoph Mathys, TNU, UZH & ETHZ
%
% This file is part of the HGF toolbox, which is released under the terms of the GNU General Public
% Licence (GPL), version 3. You can redistribute it and/or modify it under the terms of the GPL
% (either version 3 or, at your option, any later version). For further details, see the file
% COPYING or <http://www.gnu.org/licenses/>.

% Length of time series
n = size(x,1);

% De-mean time series
x = x - ones(size(x))*diag(mean(x));

% Get the autocovariance
f = fft(x);
fsq = f.*conj(f);
y = ifft(fsq)/n;

% Get the autocorrelation (the next line is equivalent to y = y*diag(1./y(1,:));)
y = y*diag(1./var(x,1));

end