필터 지우기
필터 지우기

Variable 'a' is undefined on some execution paths. Why?

조회 수: 21 (최근 30일)
Caroline Rosa
Caroline Rosa 2013년 3월 8일
댓글: Alejandro Zavala 2017년 9월 15일
I'm using the block named Embedded MATLAB (that link the simulink to matlab) and when I try to run the code above, return the message error: "Variable 'a' is undefined on some execution paths". Besides that, other message appears: "Parsing successful for machine: "teste1_05mar13"(#17)" What does it mean?
function y = fcn(ia,va,t)
%#eml
p = ia*va;
N=1000;
if t <= 1.0e-6
a = 0;
b = 0;
end
b = a-0.01; %"b" is the value of the same "a", but is a value that precedes in 0.01 the value "a"
a = b + (p -b)/N;
y=a;
Thanks
  댓글 수: 1
Caroline Rosa
Caroline Rosa 2013년 3월 8일
편집: Azzi Abdelmalek 2013년 3월 8일
function y = fcn(ia,va,t)
p = ia*va;
N=1000;
if t <= 1.0e-6
a = 0;
b = 0;
end
b = a-0.01;
a = b + (p -b)/N;
y=a;
In order to understand better. thanks

댓글을 달려면 로그인하십시오.

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 3월 8일
편집: Azzi Abdelmalek 2013년 3월 8일
when if t <= 1.0e-6 is false a and b are unknown
You should declare a and b persistent
  댓글 수: 3
Caroline Rosa
Caroline Rosa 2013년 3월 14일
thanks for your help Azzi. now it works. Thanks so much
Alejandro Zavala
Alejandro Zavala 2017년 9월 15일
Hi I want to run this code about MPPT
%%%%
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.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Ryad BOUKHARI
Ryad BOUKHARI 2017년 4월 25일
Hello,
I faced the same problem, and it works.
Thank you Abdelmalek.

카테고리

Help CenterFile Exchange에서 Simulink Functions에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by