- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想为我的数据集拟合任意函数。因此,我在 MATLAB 中使用了 lsqcurvefit
。现在我想给拟合程序赋予权重,这意味着当曲线拟合函数 (lsqcurvefit
) 计算拟合残差时,一些数据点比其他数据点更重要。更具体地说,我想使用统计加权方法。
w=1/y(x),
其中 w
是一个包含每个数据点权重的矩阵,y
是数据集。
无论如何,我找不到用 lsqcurvefit
进行加权曲线拟合的方法。有没有我应该遵循的技巧,或者是否有任何其他函数而不是 lsqcurvefit
为我做的?
最佳答案
对于加权,我发现使用 lsqnonlin
更容易这是 lsqcurvefit
调用以进行实际拟合的函数。
您首先必须定义一个您试图最小化的函数,即。成本函数。您需要将权重函数作为 extra parameter 传递将你的函数作为向量:
x = yourIndependentVariable;
y = yourData;
weightVector = sqrt(abs(1./y));
costFunction = @(A) weightVector.*(yourModelFunction(A) - y);
aFit = lsqnonlin(costFunction,aGuess);
权重函数定义中平方根的原因是 lsqnonlin
需要残差,而不是残差平方或其和,因此您需要预先对权重进行去平方。
或者,如果您有 Statistics Toolbox,则可以使用 nlinfit
,它将接受加权向量/矩阵作为可选输入之一。
关于matlab - 使用 lsqcurvefit 进行加权曲线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043739/
我正在尝试使用 lsqcurvefit 进行一些拟合。我有一个这样的功能: function F = cdf_3p_model(a,data) F=1-((1-a(5)-a(6)).*(exp(-ab
我将选项设置为 options=optimset('LevenbergMarquardt', 'on') 然后雇用lsqcurvefit像下面, [x,resnorm,residual,exitfla
我想用洛伦兹函数拟合一些数据,但我发现当我使用不同数量级的参数时拟合会出现问题。 这是我的洛伦兹函数: function [ value ] = lorentz( x,x0,gamma,amp )
我想为我的数据集拟合任意函数。因此,我在 MATLAB 中使用了 lsqcurvefit。现在我想给拟合程序赋予权重,这意味着当曲线拟合函数 (lsqcurvefit) 计算拟合残差时,一些数据点比其
这个问题已经有答案了: Java curve fitting library [closed] (2 个回答) 已关闭10 年前。 或任何其他可以将多对作为输入并以您想要的格式输出拟合曲线或函数的函数
与 Matlab 函数 lsqcurvefit() 等效或最接近的 python 函数是什么,它最小化数据和参数化函数(曲线)之间的平方误差? 我知道 scipy.optimize.curve_fit
当使用 lsqcurvefit 执行非线性最小二乘法拟合时,将 Jacobian 作为输出(即 [x,resnorm,residual,exitflag,output,lambda,jacobian]
我正在使用 Matlab 中的 lsqcurvefit 函数对一些实验数据进行建模。数据采用特定形状,因此算法只是调整该形状的系数以改变其振幅等。 该模型运行良好并且拟合良好(我计算了卡方)。 Lev
我最近在 MatLab 中编写了一个程序,该程序在很大程度上依赖于 MatLab 的“importdata”函数和优化工具箱中的“lsqcurvefit”函数。在 Windows 中使用 MatLab
我是一名优秀的程序员,十分优秀!