- 主题:请问这个matlab程序为什么越来越慢?
你怎么测出来的越来越慢?
循环应该去不掉,这么大的矩阵,复制那么多,行不通。
小的改进:你可以把双循环改成单循环,但我不知道能否提高效率。
你可以利用指数函数运算的性质,先乘完,再开方,最后求指数函数。这样能节省大量运算,速度或许能提升10%以上。另外,数乘矩阵不用点乘,但我不知道这个对效率有没有影响。
像前面一个朋友说的,你的第一行可以直接u2=ones(8192).
【 在 novicer 的大作中提到: 】
: u2 = exp(i.*zeros(8192,8192));
: for ite1 = 1:800
: for ite2 = 1:900
: ...................
--
FROM 112.42.119.*
越来越慢会不会是运算的sub-normal 浮点数变多导致的。具体定义忘了,就是非常接近0的数,在64位浮点数标准里,尾数的首位为0了,同样的指令,cpu运算这类数走了慢路径。
【 在 novicer 的大作中提到: 】
: u2 = exp(i.*zeros(8192,8192));
: for ite1 = 1:800
: for ite2 = 1:900
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 124.126.0.*
原因在于保存数据越来越多吧,内存不够?不必要的可以覆盖
【 在 novicer 的大作中提到: 】
: u2 = exp(i.*zeros(8192,8192));
: for ite1 = 1:800
: for ite2 = 1:900
: ...................
--
FROM 111.160.70.*
exp和expm是有区别的,你这个确定是exp?不是expm?
【 在 novicer 的大作中提到: 】
: u2 = exp(i.*zeros(8192,8192));
: for ite1 = 1:800
: for ite2 = 1:900
: ...................
--
FROM 111.160.70.*