我正在尝试进行时间序列蒙特卡罗模拟以进行可靠性分析。 我的系统的故障率/年λ是一个常数,因此我使用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
答案 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);