Too many input arguments.

问题提示:

Error using convn
Too many input arguments.

Error in filter2 (line 74)
        y = convn(hcol, hrow, x, shape);

Error in Gabor2 (line 18)
    filtered = filter2(z,I,'valid');

 

原因:

No.1  参数个数不对(如我上面遇到的情况。这种情况一般是由于使用函数不小心,仔细一点的话并不常见。)

No.2  自定义函数和系统函数重名,或自己的M文件与系统函数重名——这个常见。

 

No.2的解决方案【转】

 

1.定义一个函数,建议最好函数名和文件名用同样的名字,比如你写的函数名是A,而保存文件名却保存为了upper,所以最好保存成A.m;
搜索
2.要注意MATLAB识别你保存文件的名字,所以如果你保存成upper.m的话,调用只能用upper,而不能用A了;

3.在保存函数的过程中注意不要和MATLAB自带的函数名相同,如果相同了,在当前目录下会先调用你写的函数,因为MATLAB先要在用户的当前目录搜索有没有这个函数,如果有就直接调用,没有就又在其它的目录比如toolbox中找,你保存成upper后,与MATLAB自带的将小写改成大写的upper函数冲突了,MATLAB本身的upper函数,只接受一个参数,那在此为什么没有先调用你的函数呢???我们可以从which upper命令中看到返回结果是built-in (D:\MATLABR2010a\toolbox\matlab\strfun\upper),也就是说upper是内建函数,其优先级又比用户当前目录高,所以在此是调用的系统的函数.

你可能感兴趣的:(matlab)