EDA365电子论坛网
标题:
执行大量的FOR循环及嵌套,数组结果溢出
[打印本页]
作者:
xiannvjiejie
时间:
2020-10-16 16:01
标题:
执行大量的FOR循环及嵌套,数组结果溢出
for(k=0;k<4;k++) //d8=d7*A1;4*10
{
for(i=0; i<10; i++)
{ d0=0.0;
for(j=0; j<4; j++)
{
d0=d0+d7[k][j]*A1[j]
;
}
d8[k]
=(int)(d0*100);
d8[k]
= d8[k]
/100;
}
}
for(k=0;k<4;k++) //D=d8*Q;4*10
{
for(i=0; i<10; i++)
{ d0=0.0;
for(j=0; j<10; j++)
{
d0=d0+d8[k][j]*Q[j]
;
}
D[k]
=(int)(d0*100);
D[k]
= D[k]
/100;
}
}
for(i=0; i<1;i++) //构造C1矩阵
{
for(j=0; j<20; j++)
{
if(i==j) C1
[j]=1;
else C1
[j]=0;
}
}
for(k=0;k<1;k++) //d=C*D;1*10
{
for(i=0; i<10; i++)
{ d0=0.0;
for(j=0; j<4; j++)
{
d0=d0+C[k][j]*D[j]
;
}
d[k]
=(int)(d0*100);
d[k]
= d[k]
/100;
}
}
4 A/ O6 i6 J5 i1 I. U: ]8 ?
9 y' ?% P* Z1 ~0 t7 m K8 q. ~
[color=rgb(51, 102, 153) !important]
复制代码
3 v* l$ `& N+ s$ }0 L4 m
2 w I- W2 V2 H" ]+ y2 h
使用ccs编码,在主函数的while里编写了一种算法,该算法涉及到大量的矩阵运算,因为没找到类似于
matlab
的矩阵运算库,我用大量的for循环等C语言完成了代码的编写,在运算过程中,涉及到数组之间的嵌套及调用,中间大量数组结果总是溢出!如果将while关闭,该算法只执行一次,结果基本是正确的,当while打开或者该算法执行100次及以上,观察到运行中的数组结果都是溢出的,给我的感觉是内存中的数据没有及时的刷新清空,而是不断的叠加最终导致溢出。
- D! Z. c. }& r' Z
请教大佬们该如何解决!代码太多,这里给出部分代码!
0 E- J( {- b1 F1 J/ H1 ]4 S
作者:
lilino
时间:
2020-10-16 16:39
看的我头都晕了
作者:
qq666888qqw
时间:
2020-10-16 17:25
减少循环次数,优化程序
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2