输入参数太多,即使使用varargin也是如此

时间:2013-10-28 19:35:50

标签: matlab variadic-functions pca

不幸的是我得到了“太多的输入参数”。执行此调用时出错:

[varargout{1:nargout}]=pca(varargin{1},'Algorithm','svd','Economy',fEconomy);

对具有签名的函数如下:

function [coeff, score, latent, tsquared, explained, mu] = pca(x,varargin)

我以这种方式打电话给princomp:

[pc,score,latent,tsquare] = princomp(data);

知道可能是什么原因? (该错误出现在 stats 包的 princomp.m 中)

3 个答案:

答案 0 :(得分:6)

查看

的输出
which -all pca

第一项应以\toolbox\stats\stats\pca.m结尾。我的猜测是你的路上有另一个pca.m

答案 1 :(得分:2)

我认为这是因为你在路径中有类似于matlab内置函数的功能:使用此命令清除路径并重试。

userpath('clear')

请注意,此命令将删除已添加到matlab路径中的所有库。

答案 2 :(得分:0)

对于在classdef文件外部(在类文件夹中)定义但在classdef文件中定义了方法 signature 的类方法,也可能发生这种情况(请参阅{{3} })。如果函数定义具有varargin参数,但是classdef文件中的方法签名没有,那么尝试传递参数时会出现此错误。