【问题标题】:Matlab fit with function returning vector with all the y(x_i) valuesMatlab拟合函数返回向量与所有y(x_i)值
【发布时间】:2017-05-19 16:18:36
【问题描述】:

我正在做一些事情,但我没有找到任何解决方案,也许我不知道如何正确搜索它......

我有两个实验数据数组(x 和 y)。 x 是某些能量的列表(从 0 到 100 kev 的 512 个值),我想将它们拟合到一个函数,该函数返回列表中每个 x 的 y 值向量(能量始终相同,512 个特定值)。这是因为我的函数模型包含几个矩阵和其他函数。 因此,我无法将我的函数评估为 f(x,a,b,c...) (使用 a,b,c 拟合的参数)并期望单个标量,但我必须评估 f(a, b,c...),它返回一个向量 y(x1),y(x2)...

现在,我想将我的数据拟合到我的模型中。但是 lsqcurvefit 需要一个 f(x) 形式的函数,我想它会评估每个 f(x)。我可以编写我的函数,以便每次调用它时都会评估向量结果,然后为给定的 x 返回 y,但这将非常低效......而且我确信必须有另一种方法。

有什么想法吗?

【问题讨论】:

  • 非常不清楚和不详细的模型............

标签: matlab vector data-fitting


【解决方案1】:

也许您可以对误差平方和进行 fminsearch?最好将所有拟合参数放入一个向量中。这里我称之为p

f = @(x,p) (p(3)+p(1)*x.^p(2)).^(1/p(4); %example function with four free parameters
sqerr = @(x,y,p) sum((y-f(x,p)).^2); %sum of squared errors
p = [1,1,1,1]; %four starting conditions
p = fminsearch(@(p) sqerr(x,y,p),p); %fit

然后您可以通过使用拟合参数调用函数来找到您的 y(x_i) 值

f(x,p)

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多