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