This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28335求大维数矩阵行列式的问题



利用F28335对数据进行处理,需要定义一个57维矩阵的求逆方法,其中需要一个大维数矩阵求行列式的方法,运算的时候用一维数组代替二维矩阵,代码如下:

void cofSeek(float mat[],int raw,int col,int n,float res[]) //求坐标为(raw,col)的余子式,mat:原方阵,res:余子式方阵。
{
int k=0;
int i;
for(i=0;i<n*n;i++)
{
if(!(i>=(raw-1)*n&&i<raw*n)&&!(i%n==col-1)){
res[k]=mat[i];
k++;
}
}
return ;
}

float detMat(float mat[],int n) //求行列式,用到了递归的思想。
{
int i;
if(n==1)
{
return mat[0];
}
else
{
float ans;
ans = 0;
for(i=0;i<n;i++)
{
float b[1000];
cofSeek(mat,1,1+i,n,b);
ans+=pow(-1,i)*mat[i]*detMat(b,n-1);
}
return ans;
}
}

dubug调试的时候,当方阵的维数不超过5维时,正常运行,当维数超过5时,程序就卡在deMat()函数中没反应了,此时也无法步进。但是程序无任何报错,估计应该是相关的内存容量不够了,所以想请问下如何处理。附上主函数:

void main(void)
{

eyeMat(testmat,6);//testmat是一个一维数组,后面的6代表矩阵的维数。
anss = detMat(testmat,6);//6维的时候程序debug就卡在这一行代码不动了。

...

}