登录论坛

查看完整版本 : [求助]nargin的理解(见程序第6行)


wmch85
2008-05-15, 16:20
function A=myhilb(n,m)
if nargout>1
error('too many output arguments.');
end
if nargin==1,m=n;
elseif nargin==0|nargin>2
error('Wrong number of input argments.');

end
for i=1:n
for j=1:m
A(i,j)=1/(i+j-1);
end
end

对于 elseif nargin==0|nargin>2 我的理解是当输入变量个数为0,或大于2时,将会给出出错信息。
但是,这题的运行结果是:
在命令窗口输入:
A=myhilb(3,4)

输出结果为:
A =

1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
我想请教论坛中的高人,我该怎么理解nargin和nargout这两个matlab自带的变量??

wmch85
2008-05-16, 11:36
高人怎么不露面啊???

wmch85
2008-05-16, 16:02
怎么没人进来吼两声啊??
真的需要帮助啊!!!

shiqiang
2008-05-16, 17:25
下面两个是pdg格式的文件,你可以看一下。

zhanhuichong
2008-05-16, 18:12
请直接给出你的错误信息

wmch85
2008-05-17, 17:48
下面两个是pdg格式的文件,你可以看一下。

非常感谢!我现在已经搞明白了
实际上程序没错,是我理解错了
输入值为1和2时都是对的

ximifly
2009-09-15, 17:10
function A=myhilb(n,m)
if nargout>1
error('too many output arguments.');
end
if nargin==1,m=n;
elseif nargin==0|nargin>2
error('Wrong number of input argments.');

end
for i=1:n
for j=1:m
A(i,j)=1/(i+j-1);
end
end

对于 elseif nargin==0|nargin>2 我的理解是当输入变量个数为0,或大于2时,将会给出出错信息。
但是,这题的运行结果是:
在命令窗口输入:
A=myhilb(3,4)

输出结果为:
A =

1.0000 0.5000 0.3333 0.2500
0.5000 0.3333 0.2500 0.2000
0.3333 0.2500 0.2000 0.1667
我想请教论坛中的高人,我该怎么理解nargin和nargout这两个matlab自带的变量??

其实你的输入变量个数还是2个,值分别是3,4;而不是理解成n,m值的大小

xsprinkle
2009-09-17, 22:02
楼主错认为:“nargin>2”成“nargin>=2”
我 起先被你说的也有如此疑问