请教matlab varargin是什么意思
发布网友
发布时间:2022-05-06 06:52
我来回答
共1个回答
热心网友
时间:2022-06-28 23:04
你的程序是确定的,不可能“有时可以有时不可以”,现在的代码运行肯定会出错。
varargin一般用于函数的输入参数“可能的最大数量”未知的场合,例如,用fprintf函数进行格式化输出,作为这个函数的设计者,无法预知用户会一次性输出多少数据,这就是varargin最典型的应用场合(当然,参数数量未知,但规律必需已知,否则无法处理)。
就你的程序而言,并没有使用varargin的必要(当然,也可以用)。
从函数ex0116的调用情况看,ex0117的输入可能有1-3个,那么,在输入参数数量不足3个时,必须要有相应的处理。
就函数ex0114而言,其调用可能有1个或2个,那么,在输入参数为1个时,必须对第二个参数D作适当处理,但一般不建议用全局变量(而且,你的代码声明D为全局但没有定义,也不可能起作用)。
附修改后的代码,供参考(第一个函数ex0116无改动):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function ex0117(ftn,bounds,varargin)
if nargin <3
varargin{1}=1;
end
if nargin <2
bounds=[-1 1];
end
b1=bounds(1);b2=bounds(2);
t=b1+ [0:100]/100*(b2-b1);
x=feval(ftn,t,varargin{:});
plot(t,x)
end
function x=ex0114(t,D)
if nargin==1, D=1; end
t(find(t==0)) =eps;
x=sin(pi*t/D)./(pi*t/D);
end