向量化代码可以降低使用循环的必要性。
向量和矩阵的运算
假设要将矩阵的元素都乘以一个值,使用for
循环可以这样写:
1 | vec = [1,2,3;4,5,6]; |
但更为简洁的方式是使用点乘:
1 | vec = vec .* 3; |
对于向量之间的运算也是如此:
1 | r1 = [1, 2, 3]; |
同样的,对于函数来说也是如此,传入向量相当于一个for
循环将向量依次传入函数:
1 | function area = calcarea(rad) |
逻辑向量
假设要对向量的元素进行逐个判断,那也可以使用向量运算:
1 | vec = [1, 3, 4, 5, 6]; |
matlab 提供了一些内置的逻辑函数:
any()
:如果向量中的存在非零的元素,返回真,否则返回假all()
:向量中所有元素都是非零的,才返回真,否则返回假find()
:返回满足条件的向量中元素的索引
1 | vec = [1, 2, 3, 4, 5, 6]; |
matlab 也有对矩阵进行逐元素的“或”和“与”操作的操作符,和 c/c++
一致,对应于|
和&
。
计时函数
tic
:启动定时器开始计时toc
:计算计时器结果并输出
使用以上两个函数就可以计算出一段代码运行花了多长时间。