I have the following code below
R =5; % LQR Weighting
Q = [100 0 0 0; 0 5 0 0; 0 0 10 0; 0 0 0 1]; K = dlqr(Adhat,Bdhat,Q, R); R1a = tf(ss(Adhat,Bdhat,K,0)); T1a = minreal(minreal(R1a)/(1 + minreal(R1a))); % Closed Loop Transfer Function
figure(1) step(T1a) S = stepinfo(T1a,'SettlingTimeThreshold',0.01); %Settling time threshold specification for 1%
x = S.SettlingTime; while x > 0.1 R=R/2; Q = Q*2; K = dlqr(Adhat,Bdhat,Q, R); R1a = tf(ss(Adhat,Bdhat,K,0)); T1a = minreal(minreal(R1a)/(1 + minreal(R1a))); figure(1) step(T1a) hold on x1 = 0:0.1:20; y1 = 1.01*ones(size(x1)); line(x1,y1) % Line to indicate +1%
x2 = 0:0.1:20; y2 = 0.99*ones(size(x2)); line(x2,y2) % Line to indicate -1%
hold off S = stepinfo(T1a,'SettlingTimeThreshold',0.01); %Settling time threshol specification for 1%
x = S.SettlingTime; end figure(2) nyquist(R1a) title('Nyquist diagram of return ratio, K ') hold on circ = -1 +exp(j*[0:pi/1000:2*pi]'); plot(circ,'r') hold off disp('See Fig 2') disp(['Settling Time= ' num2str(x)]) disp(['R= ' num2str(R)]) disp(['K= ' num2str(K)])
I need the code to continue running even if the while loop returns a NaN value, I cant seem to get this to work. I have tried using if else loop and it returns the same result.
I will apprciate any tips to get this issue resolved.
Thanks
Best Answer