@@ -426,17 +426,17 @@ vec GWRMultiscale::fitVarSerial(const vec &x, const vec &y, const uword var, mat
426
426
if (mHasHatMatrix )
427
427
{
428
428
mat ci, si;
429
- S = mat (mHasHatMatrix ? nDp : 1 , nDp, fill::zeros);
429
+ S = mat (nDp, nDp, fill::zeros);
430
430
for (uword i = 0 ; i < nDp ; i++)
431
431
{
432
432
GWM_LOG_STOP_BREAK (mStatus );
433
433
vec w = mSpatialWeights [var].weightVector (i);
434
434
mat xtw = trans (x % w);
435
- mat xtwx = xtw * x;
436
- mat xtwy = xtw * y;
435
+ double xtwx = as_scalar ( xtw * x) ;
436
+ double xtwy = as_scalar ( xtw * y) ;
437
437
try
438
438
{
439
- mat xtwx_inv = inv_sympd ( xtwx) ;
439
+ double xtwx_inv = 1.0 / xtwx;
440
440
betas.col (i) = xtwx_inv * xtwy;
441
441
ci = xtwx_inv * xtw;
442
442
si = x (i) * ci;
@@ -570,12 +570,12 @@ double GWRMultiscale::bandwidthSizeCriterionVarCVSerial(BandwidthWeight *bandwid
570
570
vec w = bandwidthWeight->weight (d);
571
571
w (i) = 0.0 ;
572
572
mat xtw = trans (mXi % w);
573
- mat xtwx = xtw * mXi ;
574
- mat xtwy = xtw * mYi ;
573
+ double xtwx = as_scalar ( xtw * mXi ) ;
574
+ double xtwy = as_scalar ( xtw * mYi ) ;
575
575
try
576
576
{
577
- mat xtwx_inv = inv_sympd ( xtwx) ;
578
- vec beta = xtwx_inv * xtwy;
577
+ double xtwx_inv = 1.0 / xtwx;
578
+ double beta = xtwx_inv * xtwy;
579
579
double res = mYi (i) - det (mXi (i) * beta);
580
580
cv += res * res;
581
581
}
@@ -607,11 +607,11 @@ double GWRMultiscale::bandwidthSizeCriterionVarAICSerial(BandwidthWeight *bandwi
607
607
vec d = mSpatialWeights [var].distance ()->distance (i);
608
608
vec w = bandwidthWeight->weight (d);
609
609
mat xtw = trans (mXi % w);
610
- mat xtwx = xtw * mXi ;
611
- mat xtwy = xtw * mYi ;
610
+ double xtwx = as_scalar ( xtw * mXi ) ;
611
+ double xtwy = as_scalar ( xtw * mYi ) ;
612
612
try
613
613
{
614
- mat xtwx_inv = inv_sympd ( xtwx) ;
614
+ double xtwx_inv = 1.0 / xtwx;
615
615
betas.col (i) = xtwx_inv * xtwy;
616
616
mat ci = xtwx_inv * xtw;
617
617
mat si = mXi (i) * ci;
0 commit comments