Функции с переменным числом аргументов. Функции подсчета числа аргументов.
При создании функций со специальными свойствами весьма полезны две приведенные ниже функции:
- nargin – возвращает число входных параметров данной функции;
- nargout – возвращает число выходных параметров данной функции.
Пусть, к примеру, мы хотим создать функцию, вычисляющую сумму квадратов пяти аргументов x1, х2, х3, х4 и х5.
Обычный путь состоит в следующем – создаем функцию с именем sum2_5:
function
f
=
sum2_5(x1, x2, x3, x4, x5);
f
=
x1
^
2
+
x2
^
2
+
x3
^
2
+
x4
*
2
+
x5
^
*
2
;
Теперь проверим ее в работе:
>
>
sum2_5(
1.2.3.4.5
)
ans
=
55
>
>
sum2_5(
1
,
2
)
??? Input argument
'x3'
is undefined.
Error
in
=
› C:\MATI_AB\bin\sum2_5.m
On line
2
=
› f
=
x1
^
2
+
x2
^
2
+
x3
^
2
+
x4
^
2
+
x5
^
2
;
Итак, при наличии всех пяти аргументах функция работает корректно. Но если аргументов менее пяти, она выдает сообщение об ошибке. С помощью функции nargin можно создать функцию sum2_5m, которая работает корректно при любом числе заданных входных аргументов в пределах от 1 до 5:
f unction f
=
sum2m_5(x1, x2, x3, x4, x5);
n
=
nargin;
if
n
=
=
1
f
=
x1
^
2
;
end
if
n
=
=
2
f
=
x1
^
2
+
x2
^
2
;
end
if
n
=
=
3
f
=
x1
^
2
+
x2
^
2
+
x3
^
2
;
end
if
n
=
=
4
f
=
x1
^
2
+
x2
^
2
+
x3
^
2
+
x4
^
2
:
end
if
n
=
=
5
f
=
x1
^
2
+
x2
^
2
+
x3
^
2
+
x
В данной функции используется условный оператор if…end, который будет детально описан далее. Но и без этого ясно, что благодаря применению функции nargin и условного оператора вычисления всякий раз идут по формуле с числом слагаемых, равным числу входных аргументов – от одного до пяти. Это видно из приведенных ниже примеров:
>
>
sum2_5m(
1
)
ans
=
1
>
>
sum2_5m(
1.2
)
ans
=
5
>
>
sum2_5m(
1.2.3
)
ans
=
14
>
>
sum2_5m(
1.2.3.4
)
ans
=
30
>
>
sum2_5m(
1.2.3.4.5
)
ans
=
55
>
>
sum2_5m(
1.2.3.4.5.6
)
??? Error using
=
>
sum2_5m
Too many input arguments.
Итак, при изменении числа входных параметров от 1 до 5 вычисления проходят корректно. При большем числе параметров выводится сообщение об ошибке. Это уже действует встроенная в интерпретатор MATLAB система диагностики ошибок.