不幸的是我得到了“太多的输入参数”。执行此调用时出错:
[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 中)
答案 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文件中的方法签名没有,那么尝试传递参数时会出现此错误。