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

Illustration
Serenityruby - 2020-11-05T10:24:57+00:00
Question: Output argument 'x' is not assigned on some execution paths.

I wrote the following code in the Matlab  function in simulink and the error "Outut argument 'x' is not assigned on some execution paths" occurred. I don't know why the code not working.    My simulink function block have this code:     function [x,y] = fcn(u) % u = battery voltage % x=1 battery charge switch % y=1 battery discharge switch if (u<=0.9) % battery charge while (u<=1.2) x=1; y=0; end elseif (u>1.2) || (u>0.9) && (u<1.2) %battery discharge while (u>=0.9) x=0; y=1; end else x=0; y=0; end end

Expert Answer

Profile picture of Prashant Kumar Prashant Kumar answered . 2025-11-20

I suspect you are trying to run this code on Simulink in the MATLAB  function block. Since you didn't provide this information, so it is difficult to see what the issue is. Simulink use C/C++ code-generation and then compile your model. Therefore, it is necessary to initialize your variables, even if they will get their values later in code execution. Therefore, at the beginning of your function, initialize x, and y

 

function [x,y] = fcn(u)
% u = battery voltage
% x=1 battery charge switch
% y=1 battery discharge switch

x = 0; % this initialization is necessary for Simulink. Even if this is not goint to be used
y = 0;

% rest of your code

Also, use 'if', instead of while as pointed out by KSSV.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!