Esempio n. 1
0
void assign_mat_ar1d(Matrix& m, const Array1D< double >& a)
{
	m.NewMatrix(1, a.dim());
	Matrix::r_iterator p_m(m.begin());
	for(long i = 0; i < a.dim(); ++i) {
		*p_m = a[i];
		++p_m;
	}
}
Esempio n. 2
0
int BfrmScreener::SetData(Array2D<double>& AllData, Array2D<double>& AllMask, Array1D<int>& indicator,
			 Array2D<double>& FH, Array1D<double>& Weight, int yfactors, 
			 Array1D<int>& VariablesIn, int nVarIn, bool bHasXMask) {
	int i,j;

	maOriginalIndex.clear();
	//X first
	mnVariables = indicator.dim() + yfactors;
	mbHasXMask = bHasXMask;
	mnSampleSize = FH.dim2();
	mX = Array2D<double>(mnVariables, mnSampleSize);
	if (mbHasXMask) {
		mXMask = Array2D<double>(mnVariables - yfactors, mnSampleSize);
	}
	for (j = 0; j < mnSampleSize; j++) {
		for (i = 0; i < yfactors; i++) {
			mX[i][j] = AllData[i][j];
		}
		for (i = 0; i < nVarIn; i++) {
			mX[i+yfactors][j] = AllData[yfactors + VariablesIn[i]][j];
		}
		if (mbHasXMask) {
			for (i = 0; i < nVarIn; i++) {
				mXMask[i][j] = AllMask[VariablesIn[i]][j];
			}
		}
	}
	for (i = 0; i < nVarIn; i++) {
		maOriginalIndex.push_back(VariablesIn[i]);
	}
	
	int count = nVarIn + yfactors;
	for (i = 0; i < indicator.dim(); i++) {
		if (indicator[i]) {
			for (j = 0; j < mnSampleSize; j++) {
				mX[count][j] = AllData[yfactors + i][j];
			}
			if (mbHasXMask) {
				for (j = 0; j < mnSampleSize; j++) {
					mXMask[count-yfactors][j] = AllMask[i][j];
				}
			}
			count++;
			maOriginalIndex.push_back(i);
		}
	}

	//mH
	mH = Array2D<double>(FH.dim2(), FH.dim1());
	for (i = 0; i < FH.dim1(); i++) {
		for (j = 0; j < FH.dim2(); j++) {
			mH[j][i] = FH[i][j];
		}
	}
	//mWeight
	mnLeaveout = 0;
	mWeight = Array1D<double>(Weight.dim());
	for (i = 0; i < mWeight.dim(); i++) {
		mWeight[i] = Weight[i];
		if (mWeight[i] == 0) { mnLeaveout++; }
	}
	return 1;
}