【发布时间】:2016-02-03 05:46:12
【问题描述】:
我有一个需要少量参数才能运行的脚本。我有兴趣在参数更改时探索结果,因此我在顶部定义了几个scan 数组,将整个代码包装在多个for loops 中,并将参数值设置为当前扫描值。
这容易出错且不优雅。更改代码的过程是:1)重置顶部的scan变量,2)注释掉例如b = scan2(j2)和3)取消注释b=b0。
有什么更好的方法可以将变量设置为数组,然后为所有此类组合运行代码?现在我的代码示例:
close all
clear all
%scan1 = linspace(1,4,10);
scan1 = 0;
scan2 = linspace(0,1,10);
scan3 = linspace(-1,0,10);
for j3 = 1:length(scan3)
for j2 = 1:length(scan2)
for j1 = 1:length(scan1)
a = a0;
%b = scan2(j2);
b = b0;
%c = c0;
c = scan3(j3);
d = scan2(j2);
%(CODE BLOCK THAT DEPENDS ON variables a,b,c,d...)
end
end
end
【问题讨论】:
-
目前没有一般规则。代码的向量化很大程度上取决于循环中到底发生了什么,例如矩阵乘法、求和或其他。
-
嗯。我实际上并没有试图对此进行矢量化,我只是想要更好的组织。例如,我可以为顶部的每个参数创建一个 1xN 数组,避免注释掉业务,但我有点担心内存使用......而且当我经常只循环时,似乎没有必要使用三重 for 循环1 次扫描。
-
我尝试理解您的代码,是否有特定原因枚举与您的参数不同的
scan变量?您不能将它们重命名为scanascanb等并将迭代器重命名为jajb等吗? -
@Daniel 这是一种可能性,但是我需要 n 个嵌套循环,每个 a,b,c...
标签: matlab coding-style