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
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.