How to set a default value for my custom function

I hope to create such custom function
function addnum(mat,n=numel(mat))
mat+n
I mean I try to add a number into the element of mtrix mat,but if I don't give a explicit value for n,I hope the n will be the number of the mtrix self.

 Respuesta aceptada

Stephen23
Stephen23 el 17 de Jul. de 2017
Editada: Stephen23 el 17 de Jul. de 2017
Unfortunately MATLAB does not (currently) allow defining default values in the function definition line itself (nor does it allow arguments to be specified by name, only by position). To define a default value you can use the input parser class (I find this slow and pointlessly complex), or simply use nargin like this:
function out = addnum(mat,n)
if nargin<2
n = 3;
end
out = mat+n;
end
For more multiple optional arguments you should consider using a structure or name-value pairs: see my FEX submission num2words for an example of this.

Más respuestas (2)

KSSV
KSSV el 17 de Jul. de 2017
function addnum(mat)
n=numel(mat)
mat+n

4 comentarios

Yode
Yode el 17 de Jul. de 2017
Editada: Yode el 17 de Jul. de 2017
Thanks man,but I hope addnum(mat,3) works either,then every element will add 3. :)
KSSV
KSSV el 17 de Jul. de 2017
yes..
Yode
Yode el 17 de Jul. de 2017
@KSSV Sorry,that work for you ?
function addnum(mat)
n=numel(mat)
mat+n
If you are using the above one....don't send any input just call it by addnum(mat), if you want logically select n then follow Stephen Cobeldick suggested.

Iniciar sesión para comentar.

Lee
Lee el 11 de Feb. de 2023
This is the way to define default number in matlab
function addnum(mat,n)
arguments
mat
n=numel(mat)
end
mat+n
end
Be sure to list all arguments in order

Categorías

Más información sobre 循环及条件语句 en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 17 de Jul. de 2017

Respondida:

Lee
el 11 de Feb. de 2023

Community Treasure Hunt

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

Start Hunting!