Output argument not assigned during call

I need help to correct this code. While I did not write this code in function, it worked right, but now matlab gives error
[X, Y] = points(t1, U1, U01)
function [X, Y] = points(t, U, U0)
d = U-U0;
s = abs(diff(sign(d)));
id = find( s>0 );
h = zeros(size(id));
f = zeros(size(id));
for k = 1:length(id)
i = id(k);
a1 = (U0(i+1)-U0(i))/(t(i+1)-t(i));
a2 = (U(i+1)-U(i))/(t(i+1)-t(i));
b1 = U0(i)-a1*t(i);
b2 = U(i)-a2*t(i);
A = [-a1, 1;
-a2, 1];
B = [b1; b2];
u = A\B;
X(k) = u(1);
Y(k) = u(2);
end
end
Output argument "X" (and maybe others) not assigned during call to "points".

 Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 27 de Feb. de 2020
Editada: Fangjun Jiang el 27 de Feb. de 2020

0 votos

X and Y are only assigned inside the for-loop, the for-loop is dependent on the value of "id", which is dependent on the result of find(). What if find() returns empty?
Always assign a default return value to avoid this problem.

2 comentarios

Pavel M
Pavel M el 27 de Feb. de 2020
Ok, id really returns empty, but while I did not write this code in function, it worked right. Why now id returns empty?
It depends on U0 and U. Try to run and understand these three lines
d = U-U0;
s = abs(diff(sign(d)));
id = find( s>0 )

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 27 de Feb. de 2020
The function should start like this:
function [X, Y] = points(t, U, U0)
X = []; % Make sure we return SOMETHING, even though it's empty, even if we never assign X.
Y = []; % Make sure we return SOMETHING, even though it's empty, even if we never assign Y.

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Productos

Versión

R2016b

Etiquetas

Preguntada:

el 27 de Feb. de 2020

Respondida:

el 27 de Feb. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by