123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- function [x] = spm_interp(x,r)
- % 1 or 2-D array interpolation
- % FORMAT [x] = spm_interp(x,r)
- % x - array
- % r - interpolation rate
- %__________________________________________________________________________
- % Copyright (C) 2008 Wellcome Trust Centre for Neuroimaging
- % Karl Friston
- % $Id: spm_interp.m 5219 2013-01-29 17:07:07Z spm $
- % interpolate
- %--------------------------------------------------------------------------
- [n,m] = size(x);
- if n > 1 && m > 1 % matrix
-
- X = zeros(r*n,m);
- for i = 1:m
- X(:,i) = interpolate(x(:,i),r);
- end
- x = zeros(r*n,r*m);
- for i = 1:r*n
- x(i,:) = interpolate(X(i,:),r)';
- end
- elseif n == 1 % row vector
- x = interpolate(x',r)';
-
- elseif m == 1 % column vector
- x = interpolate(x,r);
- end
- % Interpolate using DCT
- % -------------------------------------------------------------------------
- function [u] = interpolate(y,r)
- if r == 1
- u = y;
- else
- y = y(:);
- n = size(y,1);
- Dy = spm_dctmtx(r*n,n);
- Du = spm_dctmtx(n,n);
- Dy = Dy*sqrt(r);
- u = Dy*(Du'*y);
- end
|