How can I go back and resolve failed attempts?
조회 수: 2 (최근 30일)
이전 댓글 표시
Hi everyone, so I have the following code:
clc;
clear;
% Import data
% PD: probability of default
% CM: covariance matrix
% DT: default threshold
PD = xlsread('Data_CIMDO.xlsx','PD');
CM = xlsread('Data_CIMDO.xlsx','COV');
DT = xlsread('Data_CIMDO.xlsx','DT');
Original_PD = PD; %Store original PD
LM_rows = 11; %Expected LM rows
LM_columns = length(PD) %Expected LM columns
LM_FINAL = zeros(LM_rows,LM_columns); %Dimensions of LM_FINAL
for i = 1:length(PD)
PD = Original_PD(:,i);
options = optimset('Display','iter');
x0 = rand(size(PD,1)+1,1);
[LM,fval,exitflag] = fsolve(@(x)ConstLM(x,PD,CM,DT), x0, options);
LM_FINAL(:,i) = LM;
end
Now since the code depends on the initial value (x0) when solving for LM, after one run of the code there are many unsolved values for LM as the initial x0 was incorrectly guessed. So how can I adjust the code such that it keeps running until all LM's have been solved?
Thanks.
댓글 수: 0
채택된 답변
Jan
2013년 8월 6일
편집: Jan
님. 2013년 8월 6일
...
for k = 1:100
[LM, fval, exitflag] = fsolve(@(x)ConstLM(x,PD,CM,DT), x0, options);
if exitflag == 1
break;
end
end
if exitflag ~= 1
warning('FSOLVE did not find a solution.');
end
...
I'd prefer such a loop with a maximum loop counter to guarantee that the function stops in finite time.
댓글 수: 2
Walter Roberson
2013년 8월 7일
You can put the
x0 = rand(size(PD,1)+1,1);
before the fsolve() call to use a new starting point each time.
추가 답변 (0개)
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!