Matrix 형식의 getCols() 메서드를 사용할 때 문제가 있음을 발견했습니다. 다음 코드 부분을 확인하십시오 :emgu Matrix <float> .getCols
orig의 크기는 [1000, 384]이고 numFeat는 50이라고 가정합니다. I는 적합한 크기의 변수 choosenAutovec [50 (384),] 갖도록 가정 eigvec.GetCols 후
private Matrix<float> ComputePCA(Matrix<float> orig, int numFeat)
{
Matrix<float> avg = new Matrix<float>(1, orig.Cols);
Matrix<float> eigval = new Matrix<float>(orig.Cols, 1);
Matrix<float> eigvec = new Matrix<float>(orig.Cols, orig.Cols);
Matrix<float> featMat = new Matrix<float>(orig.Rows, numFeat);
CvInvoke.cvCalcPCA(masterMat, avg, eigval, eigvec, Emgu.CV.CvEnum.PCA_TYPE.CV_PCA_DATA_AS_ROW);
Matrix<float> choosenAutovec = new Matrix<float>(orig.Cols, numFeat);
choosenAutovec = eigvec.GetCols(0, numFeat - 1);
featMat = choosenAutovec.Transpose() * orig.Transpose();
return featMat.Transpose();
}
? 하지만 매트릭스 대신에 [384, 384]를 얻습니다. 처음 50 컬럼 만 가져 가면 어떤 제안이 나옵니까?
감사합니다. 제 50 개 컬럼 촬영