Borrar filtros
Borrar filtros

how does a function invoke the inputs?

1 visualización (últimos 30 días)
Shuangfeng Jiang
Shuangfeng Jiang el 6 de Mayo de 2020
Comentada: Shuangfeng Jiang el 7 de Mayo de 2020
function [result] = test02(type,a,b,c,d)
%This function is used to test what will happen if only part of the inputs
%are needed to get the result.
switch type
case '1'
result=a+b;
case '2'
result=a+b+c+d;
otherwise
warning('Unexpected input type. Please check the input.')
end
end
I wonder how Matlab function tacitly 'uses' the inputs, so I wrote the function above and type the piece of codes below in the command line to see what if only part of the inputs are given. Unexpectedly, no error came up (Personally 'c' and 'd' are not essential to get the result for case '1'). Could anyone explain the reason why the function still works when only part of the inputs (type, a, b) are given? What's the mechanism of calling the inputs in a Matlab function?
type= '1';
a=1; b=2; c=3; d=4;
[result] = test02(type,a,b)

Respuesta aceptada

Stephen23
Stephen23 el 6 de Mayo de 2020
Editada: Stephen23 el 6 de Mayo de 2020
  1. MATLAB's function input and output arguments are entirely positional. Their names are irrelevant.
  2. When calling a function, you need to provide the inputs that are used in the code that actually runs, e.g. if only the 3rd input is used in the code that runs then the 3rd input must be provided.
  3. ...but because of rule 1., this means you also also need to provide the 1st and 2nd inpust as well, although their values will be completely ignored because the code that runs does not use them.
  4. Unused inputs cannot be left "blank". Usually an empty array is used.

Más respuestas (1)

KSSV
KSSV el 6 de Mayo de 2020
It is because, your type = '1' needs only two inputs a,b ..
You try using type = '2' with only two inputs..it will throw error. For the type = '1' case, it needs only two inputs a, b nd you have provided them so there is no error.
  2 comentarios
Shuangfeng Jiang
Shuangfeng Jiang el 6 de Mayo de 2020
Thx for answering. But the function is defined with 5 inputs, can we call the function with the no.inputs less than 5?
The example below would describe my confusion better.
function [result] = test03(type,a,b,c,d)
% case 1 was modified
switch type
case '1'
result=a+c;
case '2'
result=a+b+c+d;
otherwise
warning('Unexpected input type. Please check the input.')
end
end
For the modified function above, if I've only got 'a' and 'c' ('b' ,'d' are unknown), and case = '1', what should I type in the command line? May I left 'b' blank like below?
type= '1';
a=1; c=3;
[result] = test02(type,a, ,c)
Rik
Rik el 6 de Mayo de 2020
You can put in anything you want, because your function is going to ignore the actual contents of the variable. Usually people use an empty array [] to show that an input is ignored.
type= '1';
a=1; c=3;
result = test02(type,a,[],c)

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing 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!

Translated by