source: trunk/src/tps_eval_dxy.m @ 363

Last change on this file since 363 was 356, checked in by sommeria, 13 years ago

civ updated with new functions for opening files, consistently with uvmat
Bugs to be expected (use previous version then)

File size: 1.9 KB
Line 
1%'tps_eval_dxy': calculate the derivatives of thin plate spline (tps) interpolation at a set of points (limited to the 2D case)
2%------------------------------------------------------------------------
3% function [DMX,DMY] = tps_eval_dxy(dsites,ctrs)
4%------------------------------------------------------------------------
5% OUTPUT:
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
10%
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)
14%
15% related functions:
16% tps_coeff, tps_eval
17
18  function [DMX,DMY] = tps_eval_dxy(dsites,ctrs)
19  %%  matrix declarations
20  [M,s] = size(dsites); [N,s] = size(ctrs);
21  Dsites=zeros(M,N);
22  DM = zeros(M,N);
23 % DMXY = zeros(M,N+1+s);
24 
25  %% Accumulate sum of squares of coordinate differences
26  % The ndgrid command produces two MxN matrices:
27  %   Dsites, consisting of N identical columns (each containing
28  %       the d-th coordinate of the M interpolation sites)
29  %  Ctrs, consisting of M identical rows (each containing
30  %       the d-th coordinate of the N centers)
31 
32[Dsites,Ctrs] = ndgrid(dsites(:,1),ctrs(:,1));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
33DX=Dsites-Ctrs;
34[Dsites,Ctrs] = ndgrid(dsites(:,2),ctrs(:,2));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
35DY=Dsites-Ctrs;
36DM = DX.*DX + DY.*DY;% add d component squared
37
38 %% calculate matrix of tps derivatives
39DM(DM~=0) = log(DM(DM~=0))+1; %=2 log(r)+1 derivative of the tps r^2 log(r)
40
41DMX=[DX.*DM zeros(M,1)  ones(M,1) zeros(M,1)];% effect of mean gradient
42DMY=[DY.*DM zeros(M,1)  ones(M,1) zeros(M,1)];% effect of mean gradient
43
Note: See TracBrowser for help on using the repository browser.