What is the error in my function? Error: Variable 'T' is not fully defined on some execution paths.

3 visualizaciones (últimos 30 días)
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;

Respuesta aceptada

Walter Roberson
Walter Roberson el 25 de Mayo de 2017
Editada: Stephen23 el 25 de Mayo de 2017
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;
  7 comentarios
Alejandro Zavala
Alejandro Zavala el 15 de Sept. de 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.
小东 刘
小东 刘 el 13 de Oct. de 2022
hello! I have the same problem now.may I ask how you solved it later ?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Motor Control Blockset en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by