MATLAB Answers

0

Linearization error "NaN's cannot be converted to logicals"

Asked by Hossein Rezazadeh on 9 Aug 2018
Latest activity Edited by Hossein Rezazadeh on 4 Jan 2019
I get the error. " NaN's cannot be converted to Logicals" when trying to linearize my model. The model runs actually with no problem. the problem arises only when linearizing the model in control design. I don't know what exactly simulink does during linearazation that causes this error.

2 Answers

Answer by Adam Danz
on 9 Aug 2018
 Accepted Answer

This will replicate your error:
v = [1 0 1 1 0 NaN 0 1 0 0];
logical(v)
Error using logical
NaN's cannot be converted to logicals.
My guess is that you're using logical() to convert a variable with 0s and 1s that also have NaN values.
If that's the case, you need to decide whether NaNs should be a 0 or a 1. In this example, I set NaNs to 0.
v = [1 0 1 1 0 NaN 0 1 0 0];
v(isnan(v)) = 0;
logical(v)
Or you can remove the NaNs
v = [1 0 1 1 0 NaN 0 1 0 0];
v(isnan(v)) = [];
logical(v)

  4 Comments

Show 1 older comment
As @Walter alluded to in the comment section under your question, you'll need to provide much more detail for us to blindly troubleshoot your problem.
Ok I got it. Apparently during the linearazation some numerical perturbation is fed to the block as input which causes "NAN" at the block output and this was triggering this error. adding v(isnan(v)) = []; to the block output solved the problem.
Hi, could you please explain how exactly you added v(isnan(v)) = []; to the block output?

Sign in to comment.


Answer by walid benchouche on 4 Jan 2019

hello guys, can you please help me , i get the same error on model predictive control when linearizing Rc=0.15

  1 Comment

This happens in MPC when your model sends "NaN" to the "mo" inport of the MPC block.
As you have integrators in your model they should be responsible for "NaNs".
Either change the operating point at which you are linearizing the model or change the solver or max step size.

Sign in to comment.