2

不幸的是,我收到“输入参数过多”。执行此调用时出错:

[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中)

4

3 回答 3

6

看看输出,

which -all pca

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

于 2013-10-28T20:43:36.653 回答
2

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

userpath('clear')

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

于 2014-11-12T14:04:55.947 回答
0

这也可能发生在在 classdef 文件之外(在类文件夹中)定义的类方法,但在 classdef 文件中定义了它们的方法签名(请参阅单独文件中的方法)。如果函数定义有 varargin 参数,但 classdef 文件中的方法签名没有,那么当您尝试传入参数时会出现此错误。

于 2020-12-01T23:40:35.113 回答