折腾来折腾去

pikipity的blog

MATLAB 函数中的可选参数

在编写函数的时候,有些输入的参数可输入也可不输入,或是有些输出的结果可输出也可不输出,这个时候就要用到vararginnarginnargoutvarargout了。

  • nargin返回的是使用函数的时候输入变量的个数,nargout返回的是使用函数的时候输出结果的个数。

  • varargin放在输入参数的位置,可以接受任意个参数,变量类型始终为cellvarargout放在输出结果的位置,和varargin一样,可以输出任意个结果,变量类型始终为cell

比如,现在想要写一个函数,函数输入为波长、数据,实际默认或可选参数为频率 f 和 采样频率 Fs,那么函数有两种写法:

  1. vararginnargin混合使用:

     function [tau varargout] = wzjmtGetTau(wavelength, data, varargin)
         Fs = 1;
         f = 6378;
         if nargin > 4
             Fs = varargin{2};
         end
         if nargin > 3
             f = varargin{1};
         end
         计算过程...
         tau = t;
         if nargout > 1
             varargout{1}=exp(-tau);
         end
     end
    
  2. 只用nargin

     function [tau varargout] = wzjmtGetTau(wavelength, data, f, Fs)
         if nargin < 4 
             Fs = 1; 
         end
         if nargin < 5 
             f = 6378; 
         end
         计算过程...
         tau = t;
         if nargout > 1
             varargout{1}=exp(-tau);
         end
     end
    


Comments