Функции подсчета числа аргументов
Функции подсчета числа аргументов
При создании функций со специальными свойствами весьма полезны две приведенные ниже функции:
-
nargin — возвращает число входных параметров данной функции;
-
nargout — возвращает число выходных параметров данной функции.
Пусть, к примеру, мы хотим создать функцию, вычисляющую сумму квадратов пяти аргументов xl, х2, хЗ, х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(l,2.3.4.5)
ans =
55
» sum2_5(l,2)
??? Input argument 'хЗ' 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 , хЗ ,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
В данной функции используется условный оператор i f...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 система диагностики ошибок