如何防止MATLAB循环崩溃

时间:2014-01-03 06:58:57

标签: matlab optimization

我正在尝试在MATLAB中执行以下操作

调用循环 - for i=1:1000并在循环内部使用fminunc优化函数。优化在参数矢量上,其中一个参数出现在函数的矩阵中。现在似乎fminunc调用一个算法来反转矩阵,然后搜索最小值。会发生的是,当搜索最小值使得矩阵不可逆时,并且当MATLAB尝试反转矩阵时,它会发出错误并且循环停止。有没有办法可以为此调整?或者可能不那么理想,我是否可以这样做,只要发生这种情况,MATLAB就会忽略i的那个值的优化并继续i+1

2 个答案:

答案 0 :(得分:6)

您可以将逻辑包含在try / catch块中的循环内。在catch块内部,什么都不做,所以它只会忽略错误并转到下一个循环迭代。

for i = 1:1000
   try
     ...
     ...
     ...
   catch
     % nothing..
   end
end

答案 1 :(得分:0)

如果您不知道某些事情是否有效,可能需要try - catch块。但是,如果你知道,那么当然最好不要尝试它:

for t = 1:1000
  if everythingIsGoingToBeAlright == 1
  % Do stuff
  end
end