马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
<P>我在做卡尔曼滤波器的基本软件。有个求矩阵逆的地方,我用了全选主元高斯约当法。可4阶方阵还能出个结果(但结果不对);到了5阶,编译时依然没错,就是运行时老出“can't run target cpu”之类到话。我用到是DSP的软件CCS,c6701 simulater map1各位高手帮我看看吧,先谢谢了!!!<BR><BR>#include "stdio.h"<BR>#define N 5//矩阵维数<BR>extern int dcinv(double a[],int n);</P>
<P>void main()<BR>{<BR> int i,j;<BR> /*static double x[N*N]={1,0,0,0,0,0,<BR> 0,1,0,0,0,0,<BR> 0,0,1,0,0,0,<BR> 0,0,0,1,0,0,<BR> 0,0,0,0,1,0,<BR> 0,0,0,0,0,1};*/<BR> static double x[N*N]={0,0,0,1,2,<BR> 0,0,0,2,3,<BR> 1,1,0,0,0,<BR> 0,1,1,0,0,<BR> 0,0,1,0,0,};<BR> /*inverse of x=0 0 1 -1 1<BR> 0 0 0 1 -1<BR> 0 0 0 0 1<BR> -3 2 0 0 0<BR> 2 -1 0 0 0*/<BR> /*double x[N*N]={3,-2,0,0,<BR> 5,-3,0,0,<BR> 0, 0,3,4,<BR> 0, 0,1,1};*/<BR> /*inverse of x=-3 2 0 0 <BR> -5 3 0 0 <BR> 0 0 -1 4<BR> 0 0 1 -3*/<BR> double y[N*N];<BR> for(i=0;i<N;i++)<BR> for(j=0;j<N;j++)<BR> y[i*N+j]=x[i*N+j]; <BR> printf("begin\n");<BR> i=dcinv(x,N);<BR> printf("end\n");<BR> if(i!=0)<BR> {<BR> printf("mat x is:\n");<BR> for(i=0;i<N;i++)<BR> {<BR> for(j=0;j<N;j++)<BR> printf("%e ",y[i*N+j]);<BR> printf("\n");<BR> }<BR> printf("\n");<BR> <BR> printf("mat x-1 is:\n");<BR> for(i=0;i<N;i++)<BR> {<BR> for(j=0;j<N;j++)<BR> printf("%e ",x[i*N+j]);<BR> printf("\n");<BR> }<BR> printf("\n");<BR> }<BR>}</P>
<P><BR> </P> |