本文整理汇总了C#中idwinterpolant类的典型用法代码示例。如果您正苦于以下问题:C# idwinterpolant类的具体用法?C# idwinterpolant怎么用?C# idwinterpolant使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
idwinterpolant类属于命名空间,在下文中一共展示了idwinterpolant类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: idwinit1
/*************************************************************************
Initialization of internal structures.
It assumes correctness of all parameters.
-- ALGLIB --
Copyright 02.03.2010 by Bochkanov Sergey
*************************************************************************/
private static void idwinit1(int n,
int nx,
int d,
int nq,
int nw,
idwinterpolant z)
{
z.debugsolverfailures = 0;
z.debugworstrcond = 1.0;
z.debugbestrcond = 0;
z.n = n;
z.nx = nx;
z.d = 0;
if( d==1 )
{
z.d = 1;
}
if( d==2 )
{
z.d = 2;
}
if( d==-1 )
{
z.d = 1;
}
z.nw = nw;
if( d==-1 )
{
z.q = new double[n, nx+1+nx];
}
if( d==0 )
{
z.q = new double[n, nx+1];
}
if( d==1 )
{
z.q = new double[n, nx+1+nx];
}
if( d==2 )
{
z.q = new double[n, nx+1+nx+(int)Math.Round(nx*(nx+1)*0.5)];
}
z.tbuf = new int[nw];
z.rbuf = new double[nw];
z.xybuf = new double[nw, nx+1];
z.xbuf = new double[nx];
}
开发者ID:KBrus,项目名称:nton-rbm,代码行数:55,代码来源:interpolation.cs
示例2: IDWBuildModifiedShepard
/*************************************************************************
IDW model for noisy data.
This subroutine may be used to handle noisy data, i.e. data with noise in
OUTPUT values. It differs from IDWBuildModifiedShepard() in the following
aspects:
* nodal functions are not constrained to pass through nodes: Qi(xi)<>yi,
i.e. we have fitting instead of interpolation.
* weights which are used during least squares fitting stage are all equal
to 1.0 (independently of distance)
* "fast"-linear or constant nodal functions are not supported (either not
robust enough or too rigid)
This problem require far more complex tuning than interpolation problems.
Below you can find some recommendations regarding this problem:
* focus on tuning NQ; it controls noise reduction. As for NW, you can just
make it equal to 2*NQ.
* you can use cross-validation to determine optimal NQ.
* optimal NQ is a result of complex tradeoff between noise level (more
noise = larger NQ required) and underlying function complexity (given
fixed N, larger NQ means smoothing of compex features in the data). For
example, NQ=N will reduce noise to the minimum level possible, but you
will end up with just constant/linear/quadratic (depending on D) least
squares model for the whole dataset.
INPUT PARAMETERS:
XY - X and Y values, array[0..N-1,0..NX].
First NX columns contain X-values, last column contain
Y-values.
N - number of nodes, N>0.
NX - space dimension, NX>=1.
D - nodal function degree, either:
* 1 linear model, least squares fitting. Simpe model for
datasets too small for quadratic models (or for very
noisy problems).
* 2 quadratic model, least squares fitting. Best model
available (if your dataset is large enough).
NQ - number of points used to calculate nodal functions. NQ should
be significantly larger than 1.5 times the number of
coefficients in a nodal function to overcome effects of noise:
* larger than 1.5*(1+NX) for linear model,
* larger than 3/4*(NX+2)*(NX+1) for quadratic model.
Values less than this threshold will be silently increased.
NW - number of points used to calculate weights and to interpolate.
Required: >=2^NX+1, values less than this threshold will be
silently increased.
Recommended value: about 2*NQ or larger
OUTPUT PARAMETERS:
Z - IDW interpolant.
NOTES:
* best results are obtained with quadratic models, linear models are not
recommended to use unless you are pretty sure that it is what you want
* this subroutine is always succeeds (as long as correct parameters are
passed).
* see 'Multivariate Interpolation of Large Sets of Scattered Data' by
Robert J. Renka for more information on this algorithm.
-- ALGLIB PROJECT --
Copyright 02.03.2010 by Bochkanov Sergey
*************************************************************************/
public static void idwbuildnoisy(double[,] xy,
int n,
int nx,
int d,
int nq,
int nw,
idwinterpolant z)
{
int i = 0;
int j = 0;
int k = 0;
int j2 = 0;
int j3 = 0;
double v = 0;
int nc = 0;
int offs = 0;
double taskrcond = 0;
double[] x = new double[0];
double[] qrbuf = new double[0];
double[,] qxybuf = new double[0,0];
double[] y = new double[0];
double[] w = new double[0];
double[,] fmatrix = new double[0,0];
double[] qsol = new double[0];
int[] tags = new int[0];
double[] temp = new double[0];
int info = 0;
int i_ = 0;
//
// these initializers are not really necessary,
// but without them compiler complains about uninitialized locals
//
nc = 0;
//
//.........这里部分代码省略.........
开发者ID:KBrus,项目名称:nton-rbm,代码行数:101,代码来源:interpolation.cs
示例3: idwcalcq
/*************************************************************************
Internal subroutine: K-th nodal function calculation
-- ALGLIB --
Copyright 02.03.2010 by Bochkanov Sergey
*************************************************************************/
private static double idwcalcq(idwinterpolant z,
double[] x,
int k)
{
double result = 0;
int nx = 0;
int i = 0;
int j = 0;
int offs = 0;
nx = z.nx;
//
// constant member
//
result = z.q[k,nx];
//
// linear members
//
if( z.d>=1 )
{
for(i=0; i<=nx-1; i++)
{
result = result+z.q[k,nx+1+i]*(x[i]-z.q[k,i]);
}
}
//
// quadratic members
//
if( z.d>=2 )
{
offs = nx+1+nx;
for(i=0; i<=nx-1; i++)
{
for(j=i; j<=nx-1; j++)
{
result = result+z.q[k,offs]*(x[i]-z.q[k,i])*(x[j]-z.q[k,j]);
offs = offs+1;
}
}
}
return result;
}
开发者ID:KBrus,项目名称:nton-rbm,代码行数:51,代码来源:interpolation.cs
示例4: Z
/*************************************************************************
IDW interpolation
INPUT PARAMETERS:
Z - IDW interpolant built with one of model building
subroutines.
X - array[0..NX-1], interpolation point
Result:
IDW interpolant Z(X)
-- ALGLIB --
Copyright 02.03.2010 by Bochkanov Sergey
*************************************************************************/
public static double idwcalc(idwinterpolant z, double[] x)
{
double result = idwint.idwcalc(z.innerobj, x);
return result;
}
开发者ID:KBrus,项目名称:nton-rbm,代码行数:20,代码来源:interpolation.cs
示例5: idwbuildmodifiedshepardr
/*************************************************************************
IDW interpolant using modified Shepard method for non-uniform datasets.
This type of model uses constant nodal functions and interpolates using
all nodes which are closer than user-specified radius R. It may be used
when points distribution is non-uniform at the small scale, but it is at
the distances as large as R.
INPUT PARAMETERS:
XY - X and Y values, array[0..N-1,0..NX].
First NX columns contain X-values, last column contain
Y-values.
N - number of nodes, N>0.
NX - space dimension, NX>=1.
R - radius, R>0
OUTPUT PARAMETERS:
Z - IDW interpolant.
NOTES:
* if there is less than IDWKMin points within R-ball, algorithm selects
IDWKMin closest ones, so that continuity properties of interpolant are
preserved even far from points.
-- ALGLIB PROJECT --
Copyright 11.04.2010 by Bochkanov Sergey
*************************************************************************/
public static void idwbuildmodifiedshepardr(double[,] xy,
int n,
int nx,
double r,
idwinterpolant z)
{
int i = 0;
int[] tags = new int[0];
int i_ = 0;
//
// assertions
//
alglib.ap.assert(n>0, "IDWBuildModifiedShepardR: N<=0!");
alglib.ap.assert(nx>=1, "IDWBuildModifiedShepardR: NX<1!");
alglib.ap.assert((double)(r)>(double)(0), "IDWBuildModifiedShepardR: R<=0!");
//
// primary initialization of Z
//
idwinit1(n, nx, 0, 0, n, z);
z.modeltype = 1;
z.r = r;
//
// Create KD-tree
//
tags = new int[n];
for(i=0; i<=n-1; i++)
{
tags[i] = i;
}
nearestneighbor.kdtreebuildtagged(xy, tags, n, nx, 1, 2, z.tree);
//
// build nodal functions
//
for(i=0; i<=n-1; i++)
{
for(i_=0; i_<=nx;i_++)
{
z.q[i,i_] = xy[i,i_];
}
}
}
开发者ID:KBrus,项目名称:nton-rbm,代码行数:73,代码来源:interpolation.cs
示例6: available
/*************************************************************************
IDW interpolant using modified Shepard method for uniform point
distributions.
INPUT PARAMETERS:
XY - X and Y values, array[0..N-1,0..NX].
First NX columns contain X-values, last column contain
Y-values.
N - number of nodes, N>0.
NX - space dimension, NX>=1.
D - nodal function type, either:
* 0 constant model. Just for demonstration only, worst
model ever.
* 1 linear model, least squares fitting. Simpe model for
datasets too small for quadratic models
* 2 quadratic model, least squares fitting. Best model
available (if your dataset is large enough).
* -1 "fast" linear model, use with caution!!! It is
significantly faster than linear/quadratic and better
than constant model. But it is less robust (especially
in the presence of noise).
NQ - number of points used to calculate nodal functions (ignored
for constant models). NQ should be LARGER than:
* max(1.5*(1+NX),2^NX+1) for linear model,
* max(3/4*(NX+2)*(NX+1),2^NX+1) for quadratic model.
Values less than this threshold will be silently increased.
NW - number of points used to calculate weights and to interpolate.
Required: >=2^NX+1, values less than this threshold will be
silently increased.
Recommended value: about 2*NQ
OUTPUT PARAMETERS:
Z - IDW interpolant.
NOTES:
* best results are obtained with quadratic models, worst - with constant
models
* when N is large, NQ and NW must be significantly smaller than N both
to obtain optimal performance and to obtain optimal accuracy. In 2 or
3-dimensional tasks NQ=15 and NW=25 are good values to start with.
* NQ and NW may be greater than N. In such cases they will be
automatically decreased.
* this subroutine is always succeeds (as long as correct parameters are
passed).
* see 'Multivariate Interpolation of Large Sets of Scattered Data' by
Robert J. Renka for more information on this algorithm.
* this subroutine assumes that point distribution is uniform at the small
scales. If it isn't - for example, points are concentrated along
"lines", but "lines" distribution is uniform at the larger scale - then
you should use IDWBuildModifiedShepardR()
-- ALGLIB PROJECT --
Copyright 02.03.2010 by Bochkanov Sergey
*************************************************************************/
public static void idwbuildmodifiedshepard(double[,] xy,
int n,
int nx,
int d,
int nq,
int nw,
idwinterpolant z)
{
int i = 0;
int j = 0;
int k = 0;
int j2 = 0;
int j3 = 0;
double v = 0;
double r = 0;
double s = 0;
double d0 = 0;
double di = 0;
double v1 = 0;
double v2 = 0;
int nc = 0;
int offs = 0;
double[] x = new double[0];
double[] qrbuf = new double[0];
double[,] qxybuf = new double[0,0];
double[] y = new double[0];
double[,] fmatrix = new double[0,0];
double[] w = new double[0];
double[] qsol = new double[0];
double[] temp = new double[0];
int[] tags = new int[0];
int info = 0;
double taskrcond = 0;
int i_ = 0;
//
// these initializers are not really necessary,
// but without them compiler complains about uninitialized locals
//
nc = 0;
//
// assertions
//
//.........这里部分代码省略.........
开发者ID:KBrus,项目名称:nton-rbm,代码行数:101,代码来源:interpolation.cs
示例7: make_copy
public override alglib.apobject make_copy()
{
idwinterpolant _result = new idwinterpolant();
_result.n = n;
_result.nx = nx;
_result.d = d;
_result.r = r;
_result.nw = nw;
_result.tree = (nearestneighbor.kdtree)tree.make_copy();
_result.modeltype = modeltype;
_result.q = (double[,])q.Clone();
_result.xbuf = (double[])xbuf.Clone();
_result.tbuf = (int[])tbuf.Clone();
_result.rbuf = (double[])rbuf.Clone();
_result.xybuf = (double[,])xybuf.Clone();
_result.debugsolverfailures = debugsolverfailures;
_result.debugworstrcond = debugworstrcond;
_result.debugbestrcond = debugbestrcond;
return _result;
}
开发者ID:KBrus,项目名称:nton-rbm,代码行数:20,代码来源:interpolation.cs
注:本文中的idwinterpolant类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论