概述
避免使用for循环:
在Matlab中,for循环运算效率非常低,因为Matlab是一种解释语言。像矩阵乘法的宏操作与诸如增加标号的微操作差不多一样快,因为代码解释的顶层都存在于这两个情形之中。for循环应该只用于做最后的手段,并且一般用于控制运算,而不是由于计算的原因。
一般的Matlab程序中,90%的for循环都可以用等效但更为快速的向量代码代替。(一般为寻找替代函数或使用
技巧)例如,求和运算就可以使用sum函数,也可以通过将该向量乘以所有元素都为1的列向量来求得。
向量化
转换一个for循环矩阵向量的操作过程可以称为向量化。有时向量化看上去似乎十分低效,因为可能它做了比
for循环更多的计算。然而,向量化后的程序运行速度要快得多,因为重复应用到这个向量的是一个简单运算。
1) 重复行与列经常需要从头至尾重复一个或多个数值来构建矩阵。如果矩阵所有的数值都要相同,则可以使用像ones和zeros这样的函数。但是假设有一个行向量x,并且要产生一个10行的矩阵,其每一行都是x的复制。这里应避免使用循环,而是使用外积矩阵乘法操作。
X = ones(10,1)*x
2) 向量逻辑操作
程序运行速率慢的一个地方是条件语句。表面上看,条件检验无法进行向量化,但实际上,在Matlab中,如大于、等于这些比较函数都能够在向量或矩阵上运算。这样,下面的Matlab代码
[1 2 3 4 5 6] < 4
将返回结果[1 1 1 0 0 0],其中0代表假,1代表真。由后面产生一个冲激信号向量的技巧给出另一个简单例
子:
最后
以上就是跳跃马里奥为你收集整理的matlab避免使用for_避免for循环的全部内容,希望文章能够帮你解决matlab避免使用for_避免for循环所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复