TI中文支持网
TI专业的中文技术问题搜集分享网站

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就卡在这一行代码不动了。

}

Susan Yang:

您可以看一下E2E上的相关讨论:

e2e.ti.com/…/compiler-tms320f28069-slow-matrix-calculations

e2e.ti.com/…/2994091

以及文档

www.ti.com/…/spra958l.pdf

从flash来运行程序

赞(0)
未经允许不得转载:TI中文支持网 » F28335求大维数矩阵行列式的问题
分享到: 更多 (0)