matlab 未定义与‘XXX‘类型的输入参数相对应的函数‘princomp‘
今天某同学让我帮他看看matlab代码出了什么问题。首先运行代码,出现了第一个问题:
这个GetSal函数是一个文件外的自定义函数,一看运行的当前目录和这个函数所在的目录不在同一个目录下,在代码里加入addpath(自定义函数所在目录)即可。
加入这行代码,重新运行后出现第二个问题:
princomp这个函数也是没有的,第一反应和第一个问题一样,结果在代码文件夹内并没有找到该函数,那么就有两个可能,第一是作者漏了,第二是系统函数。但是在命令框里搜索help princomp并没有结果:
但是似乎这个printcomp和princomp并不是一回事,然后去百度这个函数,能搜到几篇博客讲什么用这个的,但是博客发布日期都是14年以前,猜测可能是2015版本更迭这个函数被删除了(我用的是2019并且csdn论坛上曾有人2015年问过这个问题),只要从网上找到这个函数的代码或者替代品就可以了。
搜了半天似乎并没有找个这个函数的代码,但是百度知道(https://zhidao.baidu.com/question/1861253164912406107.html)提供了以下知识:
就是说很有可能系统函数pca代替了princomp,并且这两个函数的输入输出差不多(pca多一个),那么只要在调用princomp的代码里把princomp换成pca就可以解决了,不过要在获得的结果中加入~,即[coeff,score,tsquared,~]=pca(...)。
但是寻根溯源发现是被一个.p文件调用的,由于.p文件是被封装了的加密.m文件,无法正常打开,所以想了一个方法,通过自编princomp函数调用pca,然后把这个自编函数放在和这个调用他的.p同一目录下即可:
function [COEFF,SCORE,latent,tsquare] = princomp(X)
[COEFF,SCORE,latent,tsquare,~]= pca(X);
end
上一篇: 爬虫——requests基本请求,get和post
下一篇: nbench--cpu性能测试