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.
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Explore similar technical troubleshooting questions and verified MATLAB solutions: