请求优化嵌套For循环生成m/n矩阵以降低时间复杂度
优化嵌套循环的向量化方案
你可以利用Matlab的广播机制实现完全向量化的矩阵填充,彻底消除嵌套循环,把时间复杂度降到接近O(m+n)的级别,代码如下:
M = 1:74; N = 1:150; matrix = M' ./ N;
原理说明:
M'将行向量M转换为74×1的列向量,N是1×150的行向量- Matlab的广播机制会自动将两个向量扩展为74×150的矩阵:列向量复制150次匹配列数,行向量复制74次匹配行数,随后逐元素执行除法运算,完全对应原循环中
matrix(m,n) = m/n的逻辑
效率对比:
原嵌套循环需要执行74×150=11100次迭代,每次迭代都要做索引寻址和赋值操作;而向量化操作直接调用Matlab底层优化的数值计算库,批量完成矩阵运算,不仅避免了循环的额外开销,实际执行效率远高于显式循环,尤其当向量维度更大时,性能提升会更显著。
内容的提问来源于stack exchange,提问作者impedance_gatto
相关产品推荐
相关产品推荐

