MATLAB: Infinite loop in Matlab Fctn Block

infinite loop in matlab fctn block codeMATLABmatlab codersimulink

Why did I run into infinite loop (see coode below)? Also, I tried to stop the simulation by clicking on the stop button on the model window but it didn' work. i is the input from a ramp function in Simulink model. Thanks
function [y1,y2] = UPC(i) %#codegen persistent ii ii=0; if isempty(ii) y1=ii; y2=ii; else y1=i; y2=i; end while (i<5) y1=i+1; y2=i-1; end_ *_ *

Best Answer

The condition to exit the while loop is that i>=5 and you never change the value of i in the loop, which means you will never exit the loop if the input value of i is less than 5.
For every time step in your model the code in an embedded matlab code block will run from the first line of code to the last. What it looks like is that you want to perform the operation inside the while loop if i<5, not while i<5.