Matlab:高效的代码部分,随机启动

时间:2017-05-07 20:26:49

标签: matlab

我有以下代码生成一个包含15个块的矩阵,然后将其作为多个起点用于蒙特卡罗方法。如何以更智能的方式获得相同的结果?

假设J = 15 * 100是总模拟和paramNum参数数量

[10^-10*ones(paramNum,round(J/15)) 10^-9*ones(paramNum,round(J/15)) 10^-8*ones(paramNum,round(J/15)) 10^-7*ones(paramNum,round(J/15)) 10^-6*ones(paramNum,round(J/15)) 10^-5*ones(paramNum,round(J/15)) rand*10^-5*ones(paramNum,round(J/15)) 10^-4*ones(paramNum,round(J/15)) rand*10^-4*ones(paramNum,round(J/15)) 10^-3*ones(paramNum,round(J/15)) 10^-2*ones(paramNum,round(J/15)) 10^-1*ones(paramNum,round(J/15)) 10^-abs(randn/2)*ones(paramNum,round(J/15))];

1 个答案:

答案 0 :(得分:0)

你可以做到

v = 10.^[-10:-5 rand*10^-5 -4:-1 10^-abs(randn/2)];
repmat(repelem(v, 1, round(J/15)), paramNum) .* ... 
repmat(ones(paramNum,round(J/15)), numel(v))

或使用for循环模拟repmat / repelem功能。第一个是更短的,后者更容易理解。

顺便说一句......它不到15个街区......