mysql matlab for循环嵌套_MATLAB如何尽量避免for循环?

本文介绍了在MATLAB中优化for循环的三种方法:1) 优化循环内部运算及嵌套,2) 使用多线程并发,3) 向量化处理。通过示例展示了如何使用向量化操作、sub2ind、ind2sub以及arrayfun等函数来避免for循环,提高代码运行速度。
摘要由CSDN通过智能技术生成

我们知道MATLAB擅长矩阵计算,但对于跑for循环非常低效,因此在内存足够的情况下应尽量写成矩阵或者向量化操作的形式,善用更好的数据结构、算法,以及matlab自带的函数特性,以尽可能避免for循环降低运行速度。下面是我学到的一些小tips,并结合运算示例进行讲解。

方法1:优化循环内部运算及嵌套

例如:

将计算量小、循环次数多的放在里面,计算量大循环次数少的放在外面做大循环;

将表达式尽可能向量化计算好后再放入循环内,减少循环內部运算;

方法2:多线程并发替代单循环

for i = 1 : 100

a[i] = xxx;

end

优化:

for i = 1 : 25

a[i] = xxx;

a[i + 1] = xxx;

a[i + 2] = xxx;

a[i + 3] = xxx;

i = i + 4;

end

方法3:向量化处理

向量化操作这个过程将向量扩展为更大的索引矩阵,以尽可能替代for循环,本质是用空间换时间。MATLAB中有 repemat, repelem, keron, bsffun, arrayfun 或 sub2ind 以及ind2sub 等函数,充分利用这些自带函数特性非常重要,下面我们举一些应用实例:

sub2idx函数用于索引多维矩阵进行赋值

有一个矩阵,上面有索引和需要赋予的数值,需要把对应的数值赋予到三维数组中&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值