Функции
подсчета числа аргументов
При создании
функций со специальными свойствами весьма полезны две приведенные ниже функции:
-
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 система диагностики ошибок
Содержание раздела