Put together function in stform
stmak(centers,coefs)
st = stmak(centers,x,type)
st = stmak(centers,coefs,type,interv)
stmak(centers,coefs)
returns
the stform of the function f given by
$$f(x)={\displaystyle \sum _{j=1}^{n}\text{coefs}(:,j)\cdot \psi (x-\text{centers}(:,j))}$$
with
$$\psi (x)={\left|x\right|}^{2}\mathrm{log}{\left|x\right|}^{2}$$
the thin-plate spline basis function, and with |x| denoting the Euclidean norm of the vector x.
centers
and coefs
must
be matrices with the same number of columns.
st = stmak(centers,x,type)
stores in st
the stform of the function f given
by
$$f(x)={\displaystyle \sum _{j=1}^{n}\text{coefs}(:,j)\cdot {\psi}_{j}(x)}$$
with the ψ_{j} as
indicated by the character vector type
, which can
be one of the following:
'tp00'
, for the thin-plate spline;
'tp10'
, for the first derivative
of a thin-plate spline with respect to its first argument;
'tp01'
, for the first derivative
of a thin-plate spline with respect to its second argument;
'tp'
, the default.
Here are the details.
| ψ_{j}(x)
= φ(|x – c_{j}|^{2}), c_{j} with φ(t) = tlog(t) ψ_{n–2}(x) = x(1) ψ_{n–1}(x) = x(2) ψ_{n}(x) = 1 |
| ψ_{j}(x)
= φ(|x – c_{j}|^{2}), c_{j} with φ(t) = (D_{1}t)(logt + 1), and D_{1}t the partial derivative of t = t(x) = |x – c_{j}|^{2} with respect to x(1) ψ_{n}(x) = 1 |
| ψ_{j}(x)
= φ(|x – c_{j}|^{2}), c_{j} with φ(t) = (D_{2}t)(logt + 1), and D_{2}t the partial derivative of t = t(x) = |x – c_{j}|^{2} with respect to x(2) ψ_{n}(x) = 1 |
| ψ_{j}(x)
= φ(|x – c_{j}|^{2}), c_{j} with φ(t) = tlog(t) |
st = stmak(centers,coefs,type,interv)
also specifies the basic interval for the stform, with interv{j}
specifying,
in the form [a,b]
, the range of the j
th
variable. The default for interv
is the smallest
such box that contains all the given centers.
Example 1. The following generates the figure below, of the thin-plate spline basis function, $$\psi (x)={\left|x\right|}^{2}\mathrm{log}{\left|x\right|}^{2},$$ but suitably restricted to show that this function is negative near the origin. For this, the extra lines are there to indicate the zero level.
inx = [-1.5 1.5]; iny = [0 1.2]; fnplt(stmak([0;0],1),{inx,iny}) hold on, plot(inx,repmat(linspace(iny(1),iny(2),11),2,1),'r') view([25,20]),axis off, hold off
Example 2. We now also generate and plot, on the very same domain, the first partial derivative D_{2}ψ of the thin-plate spline basis function, with respect to its second argument.
inx = [-1.5 1.5]; iny = [0 1.2]; fnplt(stmak([0;0],[1 0],'tp01',{inx,iny})) view([13,10]),shading flat,axis off
Note that, this time, we have explicitly set the basic interval for the stform.
The resulting figure, below, shows a very strong variation near the origin. This reflects the fact that the second derivatives of ψ have a logarithmic singularity there.