embedded matlab function error message

2 visualizaciones (últimos 30 días)
mado
mado el 8 de Feb. de 2013
i have this error message
"Output argument 'dvref' is not assigned on some execution paths."
when executing this code
function dvref =IC(V,I)
persistent Vref Vold Iold c;
if isempty(Vold)
Vold=0; %initialized only once in the beginning
end
if isempty(Iold)
Iold=0; %initialized only once in the beginning
end
if isempty(c)
c = .1; %initialized only once in the beginning
end
if isempty(Vref)
Vref=.5; %initialized only once in the beginning
end
dI=I-Iold;
dV=V-Vold;
if V==Vold
if I~=Iold
elseif I>Iold
dvref=Vref-c
else dvref=Vref+c
end
elseif dI/dV~=-I/V
if dI/dV > -I/V
dvref=Vref-c
else
dvref=Vref+c
end
end
Iold=I
Vold=V

Respuestas (4)

Walter Roberson
Walter Roberson el 8 de Feb. de 2013
In your "if I~=Iold" case you do not assign anything to dvref .
  1 comentario
mado
mado el 8 de Feb. de 2013
actually this is not the problem i tried it but in a vain , error is still there.

Iniciar sesión para comentar.


mado
mado el 8 de Feb. de 2013
the answer is that dvref should be outside the if condition but in my flowchart it'snot outside the if condition ,so i don't know how to implement it any one help

Azzi Abdelmalek
Azzi Abdelmalek el 8 de Feb. de 2013
Are you sur one of these two expression
  • if V==Vold
  • elseif dI/dV~=-I/V
is true for each step?
  14 comentarios
mado
mado el 8 de Feb. de 2013
dvref can't be declared on persistent as it is the output of the embedded function.
Azzi Abdelmalek
Azzi Abdelmalek el 8 de Feb. de 2013
Editada: Azzi Abdelmalek el 8 de Feb. de 2013
You can use a unit delay block to get the previous value of dvref. Name it dvref_old, then in your code instead of "Doing nothing" you will do:
dvref=dvref_old

Iniciar sesión para comentar.


mado
mado el 8 de Feb. de 2013
if I-Iold=0 if yes return if no check the next step i don't know "return" here is right or not, so i reversed it i checked the inequality and so on
  2 comentarios
Walter Roberson
Walter Roberson el 8 de Feb. de 2013
You cannot just return without having assigned something to dvref .
mado
mado el 9 de Feb. de 2013
ok , how to do this using simulink i think it will be easier

Iniciar sesión para comentar.

Categorías

Más información sobre Configure and View Diagnostics en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by