1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- function y = spm_detrend(x,p)
- % Polynomial detrending over columns
- % FORMAT y = spm_detrend(x,p)
- % x - data matrix
- % p - order of polynomial [default: 0]
- %
- % y - detrended data matrix
- %__________________________________________________________________________
- %
- % spm_detrend removes linear and nonlinear trends from column-wise data
- % matrices.
- %__________________________________________________________________________
- % Copyright (C) 2008 Wellcome Trust Centre for Neuroimaging
- % Karl Friston
- % $Id: spm_detrend.m 7271 2018-03-04 13:11:54Z karl $
- % Check for cell arrays
- %-------------------------------------------------------------------------
- if iscell(x)
- if nargin == 1
- p = 0;
- end
- y = x;
- for i = 1:numel(x)
- y{i} = spm_detrend(x{i},p);
- end
- return
- end
- % defaults
- %--------------------------------------------------------------------------
- [m,n] = size(x);
- if ~m || ~n
- y = [];
- return
- end
- if nargin == 1
- p = 0;
- end
- % centre columns
- %--------------------------------------------------------------------------
- if ~p
- y = x - ones(m,1)*mean(x);
- return
- end
- % polynomial adjustment
- %--------------------------------------------------------------------------
- G = zeros(m,p + 1);
- for i = 0:p
- d = (1:m).^i;
- G(:,i+1) = d(:);
- end
- y = x - G*(pinv(full(G))*x);
|