Documentation |
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 string type, which can be one of the following:
'tp00', for the thin-plate spline;
'tp10', for the first derivative of a thin-plate spline wrto its first argument;
'tp01', for the first derivative of a thin-plate spline wrto its second argument;
'tp', the default.
Here are the details.
'tp00' | ψ_{j}(x) = φ(|x – c_{j}|^{2}), c_{j} =centers(:,j), j=1:n-3 with φ(t) = tlog(t) ψ_{n–2}(x) = x(1) ψ_{n–1}(x) = x(2) ψ_{n}(x) = 1 |
'tp10' | ψ_{j}(x) = φ(|x – c_{j}|^{2}), c_{j} =centers(:,j), j=1:n-1 with φ(t) = (D_{1}t)(logt + 1), and D_{1}t the partial derivative of t = t(x) = |x – c_{j}|^{2} wrto x(1) ψ_{n}(x) = 1 |
'tp01' | ψ_{j}(x) = φ(|x – c_{j}|^{2}), c_{j} =centers(:,j), j=1:n-1 with φ(t) = (D_{2}t)(logt + 1), and D_{2}t the partial derivative of t = t(x) = |x – c_{j}|^{2} wrto x(2) ψ_{n}(x) = 1 |
'tp' (default) | ψ_{j}(x) = φ(|x – c_{j}|^{2}), c_{j} =centers(:,j), j=1:n 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 jth 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.