source: trunk/src/tps_eval_dxy.m @ 644

Last change on this file since 644 was 581, checked in by sommeria, 8 years ago

clean the transform field functions

File size: 2.0 KB
1%'tps_eval_dxy': calculate the derivatives of thin plate spline (tps) interpolation at a set of points (limited to the 2D case)
3% function [DMX,DMY] = tps_eval_dxy(dsites,ctrs)
6%     DMX: Mx(N+3) matrix representing the contributions to the X
7%     derivatives at the M sites from unit sources located at each of the N
8%     centers, + 3 columns representing the contribution of the linear gradient part.
9%     DMY: idem for Y derivatives
11% INPUT:
12%   dsites: M x s matrix of interpolation site coordinates (s=space dimension=2 here)
13%   ctrs: N x s matrix of centre coordinates (initial data)
15% related functions:
16% tps_coeff, tps_eval
17% tps_coeff_field, set_subdomains, filter_tps, calc_field
19  function [DMX,DMY] = tps_eval_dxy(dsites,ctrs)
20  %%  matrix declarations
21  [M,s] = size(dsites); [N,s] = size(ctrs);
22  Dsites=zeros(M,N);
23  DM = zeros(M,N);
24 % DMXY = zeros(M,N+1+s);
26  %% Accumulate sum of squares of coordinate differences
27  % The ndgrid command produces two MxN matrices:
28  %   Dsites, consisting of N identical columns (each containing
29  %       the d-th coordinate of the M interpolation sites)
30  %  Ctrs, consisting of M identical rows (each containing
31  %       the d-th coordinate of the N centers)
33[Dsites,Ctrs] = ndgrid(dsites(:,1),ctrs(:,1));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
34DX=Dsites-Ctrs;% set of x wise distances between sites and centres
35[Dsites,Ctrs] = ndgrid(dsites(:,2),ctrs(:,2));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
36DY=Dsites-Ctrs;% set of y wise distances between sites and centres
37DM = DX.*DX + DY.*DY;% add d component squared
39 %% calculate matrix of tps derivatives
40DM(DM~=0) = log(DM(DM~=0))+1; %=2 log(r)+1 derivative of the tps r^2 log(r)
42DMX=[DX.*DM zeros(M,1)  ones(M,1) zeros(M,1)];% effect of mean gradient
43DMY=[DY.*DM zeros(M,1)  zeros(M,1) ones(M,1)];% effect of mean gradient
Note: See TracBrowser for help on using the repository browser.