BUG in nargin < 3
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aldo Díaz
el 28 de Abr. de 2020
Comentada: Aldo Díaz
el 29 de Abr. de 2020
Hej, I am trying to build a function with control over 3 arguments. However, I have detected a possible bug on R2018b.
The nargin control works perfectly for any number but 3!
Here you are a minimal example.
function y = myfunction(x1,x2,x3)
if nargin < 3
x3=false;
if nargin < 2
x2 = 0;
end
y = x1 + x2;
if x3
y = y/norm(y);
end
end
end
0 comentarios
Respuesta aceptada
per isakson
el 28 de Abr. de 2020
Editada: per isakson
el 28 de Abr. de 2020
The example works as expected for me. It throws an error because no value is assigned to y
>> y = myfunction( 1, 2, true )
Output argument "y" (and maybe others) not assigned during call to "myfunction".
There is no else clause of the outer if-statement.
/R2018b
0 comentarios
Más respuestas (1)
John D'Errico
el 28 de Abr. de 2020
How is this a bug? Well, a bug in your code.
What do you expect to happen for 3 arguments? We see this test:
if nargin < 3
So if nargin ==3, then NOTHING inside the if executes. But that if statement controls the entire code inside your function.
Therefore the problem is when you call the function with 3 arguments, the output argument will never even be defined.
That is not a bug in MATLAB however. Not in any version of MATLAB.
Ver también
Categorías
Más información sobre Communications Toolbox en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!