Variable 'D' is not fully defined on some execution paths. Why?
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello. I'm using the following code in embedded matlab in simulink. And I,m getting the message that Variable 'D' is not fully defined on some execution paths. And i don't know what is the problem in code.
function D = mpp(V,I,T)
Dinit = 0.7;
delD = 0.001;
Dmax = 0.9;
Dmin = 0.1;
persistent P0 V0 D0 n;
if isempty(P0)
P0 = 0;
V0 = 0;
n = 1;
D0 = Dinit;
end
P = V*I;
dP = P - P0;
dV = V - V0;
if(T>0.02*n)
n=n+1;
if(dP*dV > 0)
D = D0 - delD;
elseif(dP*dV < 0)
D = D0 + delD;
end
else
D = D0;
end
if D>=Dmax | D<=Dmin
D = D0;
end
V0 = V;
P0 = P;
D0 = D;
0 Kommentare
Antworten (1)
Walter Roberson
am 2 Jun. 2017
if(dP*dV > 0)
D = D0 - delD;
elseif(dP*dV < 0)
D = D0 + delD;
end
does not assign to D if dp*dV == 0
4 Kommentare
Steven Lord
am 13 Okt. 2022
Look at the simple example below. What does fun343107 do when x is exactly equal to 0? That behavior is undefined, so you'll receive a similar type of error as the original poster. To fix it, add code to handle the case where x is exactly equal to 0 in fun343107; that's the code that's commented out in the function.
Look for this same type of situation in your code.
y = fun343107(1)
y = fun343107(-1)
y = fun343107(0)
function y = fun343107(x)
if x > 0
y = 'positive';
elseif x < 0
y = 'negative';
% else
% y = 'zero';
end
end
Siehe auch
Kategorien
Mehr zu Audio I/O and Waveform Generation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!