Asked by Meghdeep Jana
on 25 May 2017

This is the code which I wrote for generating a Trapezoid curve for BLDC motor. It is showing the following error: 'Variable 'T' is not fully defined on some execution paths'. The code:

% code

function y = fcn(u)

%#codegen

Q = mod(u,2*pi);

if Q >=0 && Q<2*pi/3

T = 1;

elseif Q>= 2*pi/3 && Q< pi

T = 1-6*(Q-2*pi/3)/pi;

elseif Q>= pi && Q<5*pi/3

T = -1;

elseif Q>= 5*pi/3 && Q<2*pi

T = -1 + 6*(Q-5*pi/3)/pi;

end

y=T;

Answer by Walter Roberson
on 25 May 2017

Edited by Stephen Cobeldick
on 25 May 2017

Accepted Answer

None of the branches is encountered if u is infinite or nan.

function y = fcn(u)

%#codegen

Q = mod(u,2*pi);

if Q<2*pi/3

T = 1;

elseif Q < pi

T = 1-6*(Q-2*pi/3)/pi;

elseif Q < 5*pi/3

T = -1;

elseif Q < 2*pi

T = -1 + 6*(Q-5*pi/3)/pi;

else

T = nan; %if data was inf or nan

end

y=T;

Meghdeep Jana
on 25 May 2017

Thank you for the solution. It is working fine now.

Walter Roberson
on 25 May 2017

Sorry, Stephen, I mis-read what you were saying.

Alejandro Zavala
on 15 Sep 2017

I want to run this code

function D=inc(V,I)

Dinit=.574;

deltaD=0.001;

persistent Va Da Ia;

if isempty(Da)

Va=42.64;

Ia=2;

Da=Dinit;

end

dV=V-Va;

dI=I-Ia;

if dV== 0

if dI==0

else

if dI>0

D=Da-deltaD;

else

D=Da+deltaD;

end

end

else

if dI/dV==-I/V

else

if dI/dV>-I/V

D=Da-deltaD;

else

D=Da+deltaD;

end

end

end

Da=D;

Va=V;

Ia=I;

but Matlab shows this error

Variable 'D' is not fully defined on some execution paths.

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.