source: trunk/src/tps_eval_dxy.m @ 782

Last change on this file since 782 was 581, checked in by sommeria, 12 years ago

clean the transform field functions

File size: 2.0 KB
RevLine 
[356]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
[246]10%
11% INPUT:
[356]12%   dsites: M x s matrix of interpolation site coordinates (s=space dimension=2 here)
[246]13%   ctrs: N x s matrix of centre coordinates (initial data)
14%
[356]15% related functions:
16% tps_coeff, tps_eval
[581]17% tps_coeff_field, set_subdomains, filter_tps, calc_field
[356]18
[247]19  function [DMX,DMY] = tps_eval_dxy(dsites,ctrs)
[246]20  %%  matrix declarations
21  [M,s] = size(dsites); [N,s] = size(ctrs);
[247]22  Dsites=zeros(M,N);
[246]23  DM = zeros(M,N);
[247]24 % DMXY = zeros(M,N+1+s);
[246]25 
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)
32 
[247]33[Dsites,Ctrs] = ndgrid(dsites(:,1),ctrs(:,1));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
[434]34DX=Dsites-Ctrs;% set of x wise distances between sites and centres
[247]35[Dsites,Ctrs] = ndgrid(dsites(:,2),ctrs(:,2));%d coordinates of interpolation points (Dsites) and initial points (Ctrs)
[434]36DY=Dsites-Ctrs;% set of y wise distances between sites and centres
[247]37DM = DX.*DX + DY.*DY;% add d component squared
38
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)
41
42DMX=[DX.*DM zeros(M,1)  ones(M,1) zeros(M,1)];% effect of mean gradient
[434]43DMY=[DY.*DM zeros(M,1)  zeros(M,1) ones(M,1)];% effect of mean gradient
[247]44
Note: See TracBrowser for help on using the repository browser.