matlab中的蒙特卡罗模拟

时间:2014-01-08 11:37:26

标签: matlab

我正在尝试进行时间序列蒙特卡罗模拟以进行可靠性分析。 我的系统的故障率/年λ是一个常数,因此我使用exprnd(1 /λ)从指数分布生成随机数,以计算可能的未来故障时间(年)。蒙特卡罗模拟周期将为30年和数字实验将由用户定义-k。每次迭代的结果将存储在矩阵中,每列将是我的系统在其30年生命周期中的失败时间。问题是我不知道确切的迭代次数while循环。一个30年期间的代码将类似于以下

MTTF=0.6;         % enter mean time to failure 1/λ
A=zeros(300,1);  %preallocate a large enough vector
t=0;
n=1;
while t<30        %time is less than 30 years of simulation
    hup=exprnd(MTTF);%generate random failure time
    t=t+hup;
    A(n)=t;
    n=n+1;

end

1 个答案:

答案 0 :(得分:1)

您可能希望使用单元格数组来存储结果:

MTTF=0.6;         % enter mean time to failure 1/λ
nExperiments = 10;% enter # of experiments

results = cell(nExperiments,1);

for iExperiment = 1:nExperiments
A=zeros(30000,1);  %preallocate a large enough vector
t=0;
n=1;
while t<30        %time is less than 30 years of simulation
    hup=exprnd(MTTF);%generate random failure time
    t=t+hup;
    A(n)=t;
    n=n+1;

end

results{iExperiment} = A(1:n-1);
end % loop experiments

% calculate number of failures in each experiment
nFailures = cellfun(@numel,results);