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

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;

回答 (1 件)

Walter Roberson
Walter Roberson 2017 年 6 月 2 日

0 投票

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 件のコメント

Soham Delvadia
Soham Delvadia 2017 年 6 月 2 日
Steel it shows the same message for the following portion of code as before
if D>=Dmax | D<=Dmin
Walter Roberson
Walter Roberson 2017 年 6 月 3 日
編集済み: Walter Roberson 2017 年 6 月 3 日
What did you change the code to? The code you posted has a problem in the situation that dP == 0 or dV == 0.
小东 刘
小东 刘 2022 年 10 月 13 日
hello! now I have the same problem. How did you change it ?
Steven Lord
Steven Lord 2022 年 10 月 13 日
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 = 'positive'
y = fun343107(-1)
y = 'negative'
y = fun343107(0)
Output argument "y" (and possibly others) not assigned a value in the execution with "solution>fun343107" function.
function y = fun343107(x)
if x > 0
y = 'positive';
elseif x < 0
y = 'negative';
% else
% y = 'zero';
end
end

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeAudio I/O and Waveform Generation についてさらに検索

質問済み:

2017 年 6 月 2 日

コメント済み:

2022 年 10 月 13 日

Community Treasure Hunt

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

Start Hunting!

Translated by