PCA返回错误:???未定义的函数或方法'pca'表示'double'类型的输入参数

时间:2013-10-29 17:39:08

标签: matlab

我只是在统计工具箱中学习使用函数pca,当我尝试下面的简单示例时,它返回了一个错误,但我找不到任何错误?

pca_test_2=[1 1 1 1 1 ; 1.9 2.1 2 2 1.8]

我通过它的转置将它复制到:

pca_test_2=pca_test_2*pca_test_2';

>> [coeff,score,latent]=pca(pca_test_2);
??? Undefined function or method 'pca' for input arguments of type 'double'.

我看过但找不到任何描述如何解决这种错误的内容?

工具箱肯定已安装。 当我在协方差矩阵上使用pcacov时,它可以工作(对于不同的数据集)?

有人可以解释一下我做错了什么吗?

当我使用与具有相同数据集的svd相同的数据时,它也有效吗?

[u s v]=svd(pca_test_2)

  u =

  -0.4537   -0.8912
  -0.8912    0.4537


  s =

  24.2493         0
        0    0.0107


  v =

  -0.4537   -0.8912
  -0.8912    0.4537

建议我使用princomp()再次运行它,见下文;

然而,当将结果与scd的结果进行比较时,我仍然有点困惑:为什么“你”的“你”不一样? (虽然它们显然相似)。

为什么潜伏不等于s的对角线?显然它们是完全不同的(我假设它是一个缩放的东西但是假设潜在的第二个特征值是零,很难看出可以使用什么缩放?)

  
    

[u s v] = svd(pca_test_3)

  

u =

  -0.4537   -0.8912
  -0.8912    0.4537

s =

  24.2493         0
        0    0.0107

v =

  -0.4537   -0.8912
  -0.8912    0.4537
  
    

[系数_,得分,潜] = princomp(pca_test_2)

  

coeff =

   0.4525    0.8918
   0.8918   -0.4525

得分=

  -5.3040         0
   5.3040         0

latent =

  56.2658
        0

1 个答案:

答案 0 :(得分:3)

您可以使用pcaprincomp,因为princomp只需拨打pca。请参阅here

SVD和PCA是相关的,但不相同。应用于数据集的PCA实质上是平均中心数据集的SVD或协方差矩阵的特征向量。并且如所指出的here,协方差矩阵的特征值的平方根是奇异值。 MATLAB PCA函数在某些情况下使用svd,在其他情况下使用eig

Undefined function or method 'pca'...”错误的来源可能是因为您在路径上的某处有一个名为pca的变量或另一个pca.m。尝试which -all pca查看是否有多个功能,whos pca查看是否有其他变量。更一般的测试是exist('pca'),它将为您提供编码所找到对象类型的数字(文件,变量等)