hi why my while loop is never end? it running continuously.

function y = fcn
%#codegen
y=0;
i=0;
coder.extrinsic ('fprintf');
while(i<10)
if(y==1)
y=0;
fprintf('on\n');
else
y=1;
fprintf('off\n');
end
i = i+ 1;
fprintf('i=%d\n',i);
end

12 Comments

It is ok. It stops when i == 10
No its is running continuously.I tried
try with a for loop instead
run in a matlab function block of simulink.
How is fcn being called? Perhaps it is being called continuously and so creates the illusion that the while loop never ends.
Is it showing i= with numbers greater than 10? Or is it cycling showing 1 to 10 over and over again?
Your function would be invoked once per time step, so if you are running more than one time step it is going to repeat multiple times.
can u clear me how can i invoke my function once per time step?
It should already be invoked once per time step if you are using discrete time. If you are using continuous time then I am not sure how often it would get invoked.
The problem I see is that you are running for multiple time steps rather than just having the function invoked at initialisation time.

Sign in to comment.

Answers (0)

Asked:

on 26 Mar 2019

Commented:

on 29 Mar 2019

Community Treasure Hunt

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

Start Hunting!