马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在matlab中,循环中对矩阵赋值,第三种代码会显示warning,提示可能耗时太多。所以针对for循环,尝试了下面的语句,结果计算耗时如下,可见第一、第三种的计算时间可能远远的大于第二种,尤其是在循环次数很多的时候。- nn=5000;
- % 第一种
- tic;
- aa=zeros(1,10);
- for ii=1:nn;
- aa(ii,:)=rands(1,10);
- end
- t1=toc
- % 第二种
- tic
- aa=zeros(2*nn,10);
- for ii=1:nn;
- aa(ii,:)=rands(1,10);
- end
- aa(nn+1:end,:)=[];
- t2=toc
- % 第三种
- tic
- aa=[];
- for ii=1:nn;
- aa =[aa;rands(1,10)];
- end
- t3=toc
- tt12 = t1/t2
- tt32 = t3/t2
复制代码 计算结果:
t1 =
2.884425348285759
t2 =
0.256671953559682
t3 =
2.961353478201585
tt12 =
11.237789358294924
tt32 =
11.537503171389575
对于for循环,很明显我们很容易就知道循环的次数了,可以预先给矩阵分配空间。可是对于while循环,是不是我们就不得不放弃第二种,采用第一种或第三种赋值方式了呢?除此之外,有没有更好的方法呢? 欢迎大家讨论。 |