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