What is the error in my function? Error: Variable 'T' is not fully defined on some execution paths.
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Meghdeep Jana
il 25 Mag 2017
Commentato: 小东 刘
il 13 Ott 2022
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;
0 Commenti
Risposta accettata
Walter Roberson
il 25 Mag 2017
Modificato: Stephen23
il 25 Mag 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 Commenti
Alejandro Zavala
il 15 Set 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Motor Control Blockset in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!