我正在尝试对我的脚本进行敏感度研究。我有三个主要变量(velocity,searchVolume1和searchVolume2),它们将在代码中发生变化。但是,我已经能够编写一个脚本,只允许其中一个变量(searchVolume1)改变,而其他两个变量保持不变。我现在希望脚本允许两个变量(searchvolume1和velocity)改变,之后,我会重新运行,其中整个过程将在第三个变量(searchVolume2)发生变化时重复。只更改了一个变量的地方,有效的脚本是:
searchVolume1 = [0.5, 0.5, 2.4, 3.7, 4.6, 5.1]';
for kk = 1: numel(searchVolume1)
[xN, xU, xC] = myMfile_sensitivity(searchVolume, kk);
t1(:,kk) = xN(:,kk);
t2(:,kk) = xU(:,kk);
t3(:,kk) = xC(:,kk);
end
我重新编辑了这个(见下文)以包含第二个变量。虽然我正在考虑创建一种动态存储,但我不确定如何将t1,t2和t3的结果存储为新的更改。
Velocity = [10, 20, 30];
searchVolume1 = [0.5, 0.5, 2.4, 3.7, 4.6, 5.1]';
for tt = 1: numel(velocity)
for kk = 1: numel(searchVolume1)
[xN, xU, xC] = myMfile_sensitivity(searchVolume, kk, velocity, tt);
t1(:,kk) = xN(:,kk);
t2(:,kk) = xU(:,kk);
t3(:,kk) = xC(:,kk);
end
end
以上暗示我应该对{3} t1, t2, t3
中的所有searchVolume1
:velocities
。请,任何想法/帮助/建议表示赞赏。感谢
答案 0 :(得分:0)
正如Adriaan所说,您希望预先分配输出变量大小以加快速度。我假设xN,xU和xC是常量。我没有将整个数组和索引传递给myMfile_sensitivity,而是将其更改为只需要传递的数字(例如searchVolume1(kk))。
velocity = [10, 20, 30];
searchVolume1 = [0.5, 0.5, 2.4, 3.7, 4.6, 5.1]';
% I just copied searchVolume1 for this example
searchVolume2 = [0.5, 0.5, 2.4, 3.7, 4.6, 5.1]';
t1 = zeros((length(velocity),length(searchVolume1),length(searchVolume2));
t2 = zeros((length(velocity),length(searchVolume1),length(searchVolume2));
t3 = zeros((length(velocity),length(searchVolume1),length(searchVolume2));
for tt = 1: numel(velocity)
for kk = 1: numel(searchVolume1)
for jj = 1: numel(searchVolume2)
[xN, xU, xC] = myMfile_sensitivity(searchVolume1(kk), velocity(tt), searchVolume2(jj));
t1(tt,kk,jj) = xN;
t2(tt,kk,jj) = xU;
t3(tt,kk,jj) = xC;
end
end
end