我是Matlab的新手,非常感谢任何可能的帮助!
我正在运行模拟,因此每次运行模拟结果都会有所不同。我想收集分析结果。
例如,在第一次模拟运行期间,血浆凝血因子的水平可能会在5小时内变化: R(1)= [1.0 0.98 0.86 0.96 0.89]
在第二轮中,每个时间段的水平可能略有不同,例如。 R(2)= [1.0 0.95 0.96 0.89 0.86]
我想(也许通过使用parfor函数)来创建矩阵,例如。 R = [1.0 0.98 0.86 0.96 0.89 1.0 0.95 0.96 0.89 0.86]
我遇到了一些问题,范围从“在赋值A(I)= B中,B和I中的元素数量必须相同”才能获得0或1的矩阵(取决于我用于预分配的内容) )。
我需要模拟运行大约10000次才能收集有意义的结果。
有人可以建议如何实现这一目标吗?对于像我这样熟悉Matlab的人,我们非常感谢详细的指导或(半)完整的代码。
提前致谢!
这是我的实际代码,正如您所看到的,有4个变量在744小时(31天)内变化,我想单独收集:
Iterations = 10000;
PGINR = zeros(Iterations, 744);
PGAmount = zeros(Iterations, 744);
CAINR = zeros(Iterations, 744);
CAAmount = zeros(Iterations, 744);
for iii = 1:Iterations
[{PGINR(iii)}, {PGAmount(iii)}, {CAINR(iii)}, {CAAmount(iii)}] = ChineseTTRSimulationB();
end
filename = 'ChineseTTRSimulationResults.xlsx';
xlswrite(filename, PGINR, 2)
xlswrite(filename, PGAmount, 3)
xlswrite(filename, CAINR, 5)
xlswrite(filename, CAAmount, 6)
答案 0 :(得分:0)
<强>的main.m 强>
Iterations = 10;
PGINR = zeros(Iterations, 2);
PGAmount = zeros(Iterations, 2);
%fake data
x = rand(Iterations,1);
y = rand(Iterations,1);
parfor iii = 1:Iterations
[PGINR(iii,:), PGAmount(iii,:)] = ChineseTTRSimulationB(x(iii), y(iii));
end
<强> ChineseTTRSimulationB.m 强>
function [PGINRi, PGAmounti] = ChineseTTRSimulationB(x,y)
PGINRi = [x + y, x];
PGAmounti = [x*y, y];
end
答案 1 :(得分:0)
将每个parfor-result保存在单元格中,稍后再合并。
Iterations = 10000;
PGINR = cell(1, Iterations);
PGAmount = cell(1, Iterations);
CAINR = cell(1, Iterations);
CAAmount = cell(1, Iterations);
parfor i = 1:Iterations
[PGINR{i}, PGAmount{i}, CAINR{i}, CAAmount{i}] = ChineseTTRSimulationB();
end
PGINR = cell2mat(PGINR); % 1x7440000 vector
%and so on...