在对我的数据进行因子分析时,有人可以协助调试以下错误吗?
factoran(x,2) ; %where x is <250*10> double =>
Undefined function 'statsfminbx' for input arguments of type 'cell'.
Error in factoran
[Psi1, nll, lagrange, err, output] = ...
在查看了代码之后(从269行开始),听起来似乎出于某些原因而无法获得最大的载荷似然估计,因此我寻找一种解决该问题的方法。
提前致谢
最佳答案
statsfminbx
是factoran
的private function,只能由factoran
本身调用。
如果创建一个名为private
的文件夹并将代码放入其中,则只能从直接父文件夹中的代码调用该代码(对于直接父文件夹中的代码,它实际上仅在路径上)。这是避免污染名称空间的有用技术。
原始的factoran
位于toolbox\stats\stats\factoran.m
中,因此可以调用toolbox\stats\stats\private\statsfminbx.m
。
当您制作factoran
的副本并将其放置在默认文件夹之外时,您的副本将无法再访问私有功能statsfminbx
。您可以尝试制作自己的private
文件夹副本,将其放置在factoran
副本下方的适当位置,然后将statsfminbx
副本放入其中。 (另一方面,您可能会发现随后收到与另一个私有功能的另一个类似问题相关的不同错误)。
PS,除非您有充分的理由这样做,否则通常不要自己制作工具箱代码副本-出于这些原因,它很可能会中断。
PPS,您可以通过键入which statsfminbx
来说明这是问题所在,您会发现未找到它-但是键入which -all statsfminbx
会看到它已找到它,并告诉您这是stats
文件夹的私有函数。
关于matlab - MATLAB内置factoran()的'statsfminbx'错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32052366/