// MatrixPCA.h 矩阵模板类头文件 

// #include  <valarray> //模板类valarray的标准头文件,本来是用#include  <valarray>,编译通不过,就用下面的代码了。也不知道对不对 
#pragma   push_macro("min")    
#pragma   push_macro("max")    
#undef   min    
#undef   max    
#include    <valarray>    
#pragma   pop_macro("min")    
#pragma   pop_macro("max") 

//构造函数二(参数1为指向矩阵的指针,参数2, 3为矩阵行与列数) 
/****** 
 矩阵类matrix的构造函数二 
     对私有变量m_stRow和m_stCol分别赋初值stRow, stCol。 
     对数组对象m_Datas使用了valarray类的构造函数: 
valarray(const _Ty *p, size_t n) 
 m_Datas初始化的第一参数为矩阵rhs指针,第二个参数为rhs的元素总个数, 
 即rhs行数*列数 
******/ 
matrix(const _Ty* rhs, size_t stRow, size_t stCol) 
: m_Datas(rhs, stRow * stCol), 
m_stRow(stRow), m_stCol(stCol) 



然后我在cpp中 
double m_PCALMatrixTemp[N][N]; // N是define过的定值 
for (i=0; i <m_TotalSamples; i++) 

for (j=0; j <m_TotalSamples; j++) 

m_PCALMatrixTemp[i][j] = m_PCALMatrix[i][j]; 



matrix <double> v(N, N), da(&m_PCALMatrixTemp[0][0], N, N); 
FILE *fp; 
char path[255]; 
strcpy(path,"C:\\FisherFaces\\"); 
strcat(path,"JacobiVector.txt"); 
fp=fopen(path,"w"); 
if (fp) 

        for (i=0;i <m_TotalSamples;i++) 
     { 
        printf(fp,"\n"); 
for (j=0;j <m_TotalSamples;j++) 
fprintf(fp,"%4.6f,\t",da(i,j)); 
     } 
fclose(fp); 


到这里da中输出的值和m_PCALMatrixTemp中的值完全一样,也就是我想要的,可接下来就出问题了,大侠帮忙! 

// EigenVectorPCA:开辟一个EigenValueIndex行,m_TotalSamples列的空间,用来存放特征向量 
EigenVectorPCA = (double **)new double*[EigenValueIndex]; 
for (i=0; i <EigenValueIndex; i++) 

EigenVectorPCA[i]=(double *)new double[m_TotalSamples]; 


// EigVecPCAInvert:开辟一个m_TotalSamples行,EigenValueIndex列的空间,用来存放转置后的特征向量 
EigVecPCAInvert = (double **)new double*[m_TotalSamples]; 
for (i=0; i <m_TotalSamples; i++) 

EigVecPCAInvert[i]=(double *)new double[EigenValueIndex]; 


// 将通过雅可比过关法取得的特征向量存入EigenVectorPCA 
for (i=0; i <EigenValueIndex; i++) 

for (j=0; j <m_TotalSamples; j++) 

EigenVectorPCA[i][j] = v(j, EigenValueIndexArray[i]); 


matrix <double> evp(&EigenVectorPCA[0][0], EigenValueIndex, m_TotalSamples); //使用.h中的构造函数的吧,好像没有错吧 
                  然后输出evp(i,j),只有第一行和EigenVectorPCA中的一样,接下来就完全乱七八糟的值了,怎么回事啊?