matlab中for循环为什么会慢

如题所述

这个问题往深了说可能会很复杂,我这里简单说说我的理解吧。

    我们一般说的或者建议大家的都是说尽量在matlab里面避免用for因为它慢,但其实更准确地说是它不慢而是矩阵运算更快。因为matlab优化了它的矩阵和向量运算,所以相对for来说,如果能将for化为矩阵运算就能充分利用matlab为我们做的优化,所以从这个角度来说,我们要避免用for,因为相对来说它是慢的,它没被优化;

    for本身如果比较起C++里的for我估计也是慢的,因为matlab是解释执行的,这肯定有消耗;

    最后,从我这个写过各种matlab程序的人来看,有时for还是不可避免的,纵然有时我知道我可以通过矩阵化避免用for,但考虑到开发速度,我可能还是会在那些对速度要求不高的程序里用for,因为那样开发快。


    希望能帮到你。

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab中for循环为什么会慢
因为matlab优化了它的矩阵和向量运算,所以相对for来说,如果能将for化为矩阵运算就能充分利用matlab为我们做的优化,所以从这个角度来说,我们要避免用for,因为相对来说它是慢的,它没被优化;

matlab处理循环特别慢的问题
与电脑有关的,高配置的电脑当然运行快,但是应该从程序本身解决问题,你说用了两个for循环就这样,应该是循环内部代码的问题或者是循环处理的数据太大,建议修改程序

matlab处理for循环特别慢 怎样处理
matlab尽管本身具有处理循环的能力,但是它的内部机制对于循环的支持并不好,执行速度会比较慢。要解决这个问题,解决方法有:1、采用向量方式对数据进行处理。2、采用C语言与Matlab的混合编程。

求各位大侠帮我看个matlab程序,关于for循环的
2.由于计算的幂次太高,而且计算的式子太长,所导致当k>=7时,计算变得非常缓慢,但是当时间足够长时候,也是能计算出来的。3.建议采用数值积分,这样符号积分的代价太大。

为什么我用matlab编得程序运行得那么慢,就是几个循环而已。
因为你的句子后面没加分号,matlab会把结果打印到command window里。这个非常费时间。test(p,q)=ab(uu,vv)或者 test((p-1)*16+uu,(q-1)*16+vv)=ab(uu,vv)后面加上分号再运行就快了。

MATLAB里为什么这样处理图像速度非常慢?
matlab是解释运行语言,并不是事先编译好的 使用 for循环的时候,每次循环里的语句需要重新解析编译运行,需要很多时间 而使用一些矩阵运算,虽然实际上也是通过循环实现计算的,但是这种循环是预先编译好的 所以运行起来很快 举例子说,你这里要实现rgb到灰度的转换 实际上可以用 light = (pic.o(:,:,1...

matlab处理for循环特别慢 怎样处理
楼下说的都对 另外看一下for的内容,是不是有每次循环过程中,有矩阵不断的扩大的情况,比如 for i=1:1:10 a=[a,i]end 如果是这样,可以先把扩大的矩阵按照最后需要的大小先声明出来,这样就不用每个循环时再重新声明一下,这样效率大大提高。

matlab生成exw运行特别慢
用矩阵运算速度会快很多。程序中用for循环比矩阵算法慢得多,特别是循环次数多时,更是慢得出奇。程序中未知数越多,程序运行越慢。所以,要尽量减少符号变量,把尽可能多的已知量代入运算。同时,减少for循环的个数,用矩阵运算代替。这都可加快程序运行的速度。

matlab中for嵌套的问题,warining求解
全选,然后ctrl+i,会自动对齐 你把鼠标放在警告红线上,会提示错误信息,说不定不是没对齐的错误呢;有可能是因为你循环里面的变量改变大小了,他是提示你提前定义,因为每次循环改变大小会使计算变慢。

求助matlab程序计算速度过慢的原因
检查一下是不是有很多for 循环 for循环在MATLAB里面耗时很长,可以改为矩阵运算

相似回答