Output argument 't' is not assigned on some execution paths.

372 views (last 30 days)
I use matlab function block in simulink and got tihs error. Not sure if it's my code or something because I've never use this function block before. Here is my code;
function t = fcn(tr, soc)
if(tr<=20)
if(soc<=0.25)
t=tr+5;
elseif(0.25<soc<=0.5)
t=0;
elseif(0.5>soc)
t=0;
end
elseif(20<tr<=30)
if(soc<=0.25)
t=tr+5;
elseif(0.25<soc<=0.5)
t=tr-5;
elseif(0.5>soc)
t=tr-10;
end
elseif(tr>30)
if(soc<=0.25)
t=tr+10;
elseif(0.25<soc<=0.5)
t=tr-10;
elseif(0.5>soc)
t=tr-0;
end
end
end
Thank you

Accepted Answer

Aniruddha Katre
Aniruddha Katre on 14 Apr 2017
Here, the variable t is an output from the MATLAB Function block. It needs to have a value at each time step of the simulation. Currently, you have an if-condition and an else-if condition based on "tr" where a value is assigned to "t".
What if "tr" does not satisfy either of the two conditions? In that case the output variable t will not be assigned a value. There are blocks downstream that depend on the output of the MATLAB Function block. If a value to t is not assigned, then those blocks cannot execute and hence the error message.
To fix this you need an "else" condition (a catch-all) that assigns a default value to t if neither the if or else-if conditions are met.

More Answers (1)

KNourdine
KNourdine on 4 Nov 2021
elseif(0.5>soc) should be elseif(0.5<soc)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!