Output argument not assigned during call
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Pavel M
el 27 de Feb. de 2020
Respondida: Image Analyst
el 27 de Feb. de 2020
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".
0 comentarios
Respuesta aceptada
Fangjun Jiang
el 27 de Feb. de 2020
Editada: Fangjun Jiang
el 27 de Feb. de 2020
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
Fangjun Jiang
el 27 de Feb. de 2020
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 )
Más respuestas (1)
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.
0 comentarios
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!