使用 statset 更改 matlab 中的属性

using statset for changing the properties in matlab

尝试更改 factoran 函数的 optimopts 属性,即 Matlab 中的 TolXTolFun 但显然这些值仍保留为默认值:

 optionsFactoran = statset('TolX',1e-4,'TolFun',1e-4)

然后使用因子分析函数:

[lambda,psi,T,stats,F] = factoran(MyMatrix,10,'optimopts',optionsFactoran);

从这里可以看出,值仍然是默认值:

>> statset('factoran')

ans = 

      Display: 'off'
  MaxFunEvals: 400
      MaxIter: 100
       TolBnd: []
       TolFun: 1.0000e-08
   TolTypeFun: []
         TolX: 1.0000e-08
     TolTypeX: []
      GradObj: []
     Jacobian: []
    DerivStep: []
  FunValCheck: []
       Robust: []
 RobustWgtFun: []
       WgtFun: []
         Tune: []
  UseParallel: []
UseSubstreams: []
      Streams: {}
    OutputFcn: []

欢迎任何想法。

使用输出参数调用 statset(就像您在问题开头所做的那样)为您提供了 Statistics Toolbox 选项的结构,您可以将其传递给 factoran 等函数。如果显示该结构,您会看到它始终包含每个 Statistics Toolbox 选项的字段,并且每个选项都有一个空值,而不是您指定为输入的值。

您还没有 "set" 任何永久性的东西(没有要设置的全局 "settings"),您刚刚创建了一个包含一些选项的结构。您可以 运行 statset 再次使用不同的输入,它只会给您另一个选项结构 - 同样,没有任何全局设置。

调用 statset 时不带输出参数(就像您在问题末尾所做的那样)并使用函数名称(例如 factoran 作为输入)只会向您显示特定函数的默认值。换句话说,如果您没有传入选项结构来指定其他值,这些值将被使用。

这些始终是该功能的默认值 - 您无法更改它们。如果您想使用不同的东西,您可以创建一个选项结构并将其传入。