Функции с переменным числом аргументов. Функции подсчета числа аргументов.
При создании функций со специальными свойствами весьма полезны две приведенные ниже функции:
- 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; endif n==2 f=x1^2+x2^2;endif n==3 f=x1^2+x2^2+x3^2; endif n==4 f=x1^2+x2^2+x3^2+x4^2: endif 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 система диагностики ошибок.
