发 帖  
原厂入驻New
[问答]

执行大量的for循环及嵌套,数组结果溢出

122 C语言
分享
  1.      for(k=0;k<4;k++)                          //d8=d7*A1;4*10
  2.                                                 {
  3.                                                     for(i=0; i<10; i++)
  4.                                                     {        d0=0.0;
  5.                                                             for(j=0; j<4; j++)
  6.                                                             {
  7.                                                                     d0=d0+d7[k][j]*A1[j][i];
  8.                                                             }
  9.                                                                 d8[k][i]=(int)(d0*100);
  10.                                                                 d8[k][i]= d8[k][i]/100;
  11.                                                     }
  12.                                                 }

  13.                                         for(k=0;k<4;k++)                          //D=d8*Q;4*10
  14.                                                 {
  15.                                                     for(i=0; i<10; i++)
  16.                                                     {        d0=0.0;
  17.                                                            for(j=0; j<10; j++)
  18.                                                           {
  19.                                                          d0=d0+d8[k][j]*Q[j][i];
  20.                                                           }
  21.                                                              D[k][i]=(int)(d0*100);
  22.                                                                  D[k][i]= D[k][i]/100;
  23.                                                    }
  24.                                     }

  25.                      for(i=0; i<1;i++)                        //构造C1矩阵
  26.                      {
  27.                              for(j=0; j<20; j++)
  28.                              {
  29.                                      if(i==j) C1[i][j]=1;
  30.                                      else C1[i][j]=0;
  31.                              }
  32.                      }


  33.                                          for(k=0;k<1;k++)                          //d=C*D;1*10
  34.                                                  {
  35.                                                      for(i=0; i<10; i++)
  36.                                                      {        d0=0.0;
  37.                                                             for(j=0; j<4; j++)
  38.                                                            {
  39.                                                           d0=d0+C[k][j]*D[j][i];
  40.                                                            }
  41.                                                               d[k][i]=(int)(d0*100);
  42.                                                                   d[k][i]= d[k][i]/100;
  43.                                                     }
  44.                                      }
复制代码

使用ccs编码,在主函数的while里编写了一种算法,该算法涉及到大量的矩阵运算,因为没找到类似于matlab的矩阵运算库,我用大量的for循环等C语言完成了代码的编写,在运算过程中,涉及到数组之间的嵌套及调用,中间大量数组结果总是溢出!如果将while关闭,该算法只执行一次,结果基本是正确的,当while打开或者该算法执行100次及以上,观察到运行中的数组结果都是溢出的,给我的感觉是内存中的数据没有及时的刷新清空,而是不断的叠加最终导致溢出。
请教大佬们该如何解决!代码太多,这里给出部分代码!

0
奖励5积分
2020-9-23 10:40:38   评论 分享淘帖 邀请回答
1个回答
减少每次循环的次数,优化一下程序
2020-10-14 17:20:44 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
我要提问
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表