Changeset 77c938e in tol for tol_pkg/MulVarFunAprox/DesignC2.Spheric.tol
- Timestamp:
- Mar 1, 2010, 4:34:48 PM (17 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 13f9a4e
- Parents:
- f77a89a
- File:
-
- 1 edited
-
tol_pkg/MulVarFunAprox/DesignC2.Spheric.tol (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
tol_pkg/MulVarFunAprox/DesignC2.Spheric.tol
rf77a89a r77c938e 72 72 SubRow(_.R,VCol2Set(Y.idx)) 73 73 }; 74 75 ////////////////////////////////////////////////////////////////////////////// 76 VMatrix build.obs(VMatrix X) 77 ////////////////////////////////////////////////////////////////////////////// 78 { 79 FunRn2R::@BaseC2.Eval.Function eval = 80 FunRn2R::@BaseC2.Eval.Function::New(get.base(0)); 81 MatQuery::@KNN.Neighbourhood ngbh = 82 _.ann::search(VMat2Mat(X),_.X.maxNeighbour); 83 Real m = VRows(X); 84 VMatrix dist = Mat2VMat(Sqrt(ngbh::_.distance2)); 85 VMatrix X.h = Mat2VMat(ngbh::_.neighbour); 86 VMatrix X.idx = DifEq(1/(1-B),Constant(m,1,1)); 87 VMatrix triplet.all = Group("ConcatRows", For(1,_.X.maxNeighbour,VMatrix(Real k) 88 { 89 VMatrix X.h.k = SubCol(X.h,[[k]]); 90 VMatrix dist.k = SubCol(dist,[[k]]); 91 VMatrix R = get.radius(X.h.k); 92 VMatrix tao = dist.k $/ R; 93 VMatrix lambda = (-tao^2+1)^4; 94 VMatrix match = LT(dist.k,R); 95 SubRow(X.idx | X.h.k | dist.k | tao| lambda, MatQuery::SelectMatch(match)) 96 })); 97 VMatrix x.idx = SubCol(triplet.all,[[1]]); 98 VMatrix y.idx = SubCol(triplet.all,[[2]]); 99 VMatrix xy.idx = x.idx | y.idx; 100 VMatrix lambda.col = SubCol(triplet.all,[[5]]); 101 VMatrix triplet.lambda = xy.idx | lambda.col; 102 VMatrix lambda = Triplet(VMat2Mat(triplet.lambda),m,_.H); 103 VMatrix sum.lambda = lambda*Constant(_.H,1,1); 104 VMatrix sum.lambda.inv = Convert(sum.lambda,"Blas.R.Dense")^-1; 105 VMatrix weight = Eye(m,m,0,sum.lambda.inv)*lambda; 106 VMatrix dif = 107 SubRow( X,VCol2Set(SubCol(triplet.all,[[1]]))) - 108 SubRow(_.Y,VCol2Set(SubCol(triplet.all,[[2]]))) ; 109 VMatrix P.row = Group("ConcatRows", For(1,_.K,VMatrix(Real k) 110 { 111 x.idx 112 })); 113 VMatrix P.y = Group("ConcatRows", For(1,_.K,VMatrix(Real k) 114 { 115 y.idx 116 })); 117 VMatrix YnCum = DifEq(1/(1-B),_.Yn); 118 VMatrix YnCumB = Sub(SetCol([[0]])<<YnCum,1,1,_.H,1); 119 VMatrix P.YnCum = SubRow(YnCum, VCol2Set(P.y)); 120 VMatrix P.YnCumB = SubRow(YnCumB,VCol2Set(P.y)); 121 VMatrix P.k = Group("ConcatRows", For(1,_.K,VMatrix(Real k) 122 { 123 y.idx*0+k 124 })); 125 VMatrix P.col = P.YnCumB + P.k; 126 VMatrix P.match = LE(P.col,P.YnCum); 127 Real eval::upgrade.cache(dif); 128 VMatrix P.ev = Group("ConcatRows", For(1,_.K,VMatrix(Real k) 129 { 130 lambda.col $* eval::evaluate.v(k,dif) 131 })); 132 Matrix P.triplet = VMat2Mat( 133 SubRow(P.row | P.col | P.ev, MatQuery::SelectMatch(P.match))); 134 VMatrix Px = Pack(Convert(Triplet(P.triplet, m, _.N),"Cholmod.R.Sparse")); 135 VMatrix Qx = Eye(m,m,0,sum.lambda.inv)*Px 136 }; 137 74 138 75 139 ///////////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.
