什么情况下用矩阵 什么情况下用for循环?

循环是程序流程控制的三大剑客之一,没有循环可以说好多功能都不能实现。MATLAB作为一种特殊的编程语言,其在循环的优化上并不是特别出色,但在矩阵化运算(也称矢量化运算)上具有较其他编程语言不可比拟的优势。

为了比较在matlab中for循环与向量化运算的差别,在此做一个小实验,实验过程如下:

在matlab中计算1000到10000大小的矩阵相乘,为了节约时间,以500为矩阵大小的步长。在每一个尺度下,进行十次重复计算然后平均计算时间。下图不同矩阵大小与计算所花时间的关系图,以及不同矩阵大小与for循环所花时间和向量化计算时间之比:

图1. 不同矩阵大小与计算所花时间

图2.不同矩阵大小与for循环所花时间和向量化计算时间之比

从图中不难发现,在MATLAB中矢量化计算比for循环计算显著的优势,尤其时当矩阵尺度较大时,矢量化计算的优势越明显。当然,并不是所有情况下都能采用矢量化计算,得根据实际情况来确定。矢量化计算高效便捷、公式化、代码直观并于阅读,但其编程韵味略显不足。本文相关代码放置文末,感兴趣得小伙伴可以试一试。

加原创代码共享Q群,有1机会获取白描APP永久黄金会员,无任何功能限制!

抽取方式:以群红包形式抽取,红包金额高者获得

抽取时间:2021年11月13日 晚上八点

我要回帖

更多关于 matlab替代for循环 的文章

 

随机推荐