Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Persistent variable 'count' is undefined on some execution paths when using embedded matlab function

Asked by Qingbin

Qingbin

on 4 Jan 2013
Accepted Answer by Image Analyst

Image Analyst

I am using the embedded matlab function with constant 1 as the first input and a step signal as the second input (initial value to be 1 and then after a stepsize it becomes 0). The code for the matlab function is as follows:

function sys = fcn(u)

         persistent count;
          if u(2)>0
             count=0;
          else
            count=count+0.01;
          end
         sys=u(1)+count;
end

The error shows that: _Persistent variable 'count' is undefined on some execution paths_**

When I changed the embedded matlab function to s function and used the same code again, there is no error. Why is this code not valid within the embedded matlab function? Thanks for the reply.

0 Comments

Qingbin

Qingbin

Products

No products are associated with this question.

1 Answer

Answer by Image Analyst

Image Analyst

on 4 Jan 2013
Edited by Image Analyst

Image Analyst

on 4 Jan 2013
Accepted answer

If you enter the function with the second element of "u" less than zero, it's possible to execute the "count=count+.01" line, which may have count undefined is you never did the first part of the if block. I would think it would be a warning, not an error during editing time, but an actual error if you hit that line with count undefined during run-time.

And I don't know what an " s function" is, and I don't have the embedded toolbox so I don't know about your latter sentences.

Try it like this:

persistent count;
if isempty(count)
    count = 0;
end
if u(2)>0
    count=0;
else
    count=count+0.01;
end
sys=u(1)+count;

1 Comment

Qingbin

Qingbin

on 6 Jan 2013

Thanks for the reply, I used the isempty function to initialize the count and it works.

Image Analyst

Image Analyst

Contact us