function [Data,Tendance] = DetrendDataSet(Data,PolyOrder,VarLog,info)
% stephane.adjemian@ens.fr [03-09-2006]

T = size(Data,1);
k = size(Data,2);

if nargin <= 1
  PolyOrder = 1;
  VarLog = [];
end
if nargin <= 2
  VarLog = [];
end

if nargin <=3
  info = 0;
end  

if ~isempty(VarLog)  
  Data(:,VarLog) = log(Data(:,VarLog));  
end

X = zeros(T,PolyOrder+1);
order = 0;
while order <= PolyOrder
  X(:,order+1) = transpose(1:T).^order;
  order = order+1;
end
Y = Data(:,1);
Ahat = inv(X'*X)*X'*Y;
Resids = Y-X*Ahat;
Data(:,1) = Resids;
if k>= 2
  Data(:,2:k) = Data(:,2:k)-X(:,2:PolyOrder+1)*Ahat(2:PolyOrder+1);
  Data(:,2:k) = Data(:,2:k)-kron(mean(Data(:,2:k)),ones(T,1));
end
Tendance = exp(X*Ahat);