0

需要找到系统的一组最优参数 P y = P(1)*exp(-P(2)*x) - P(3)*x 其中 x 和 y 是实验值。我定义了我的功能

f = @(P) P(1)*exp(-P(2)*x) - P(3)*x

guess = [1, 1, 1]

并尝试过

P = fminsearch(f,guess)

根据帮助。我收到一个错误

下标分配尺寸不匹配。

fminsearch 中的错误(第 191 行) fv(:,1) = funfcn(x,varargin{:});

我不太明白我的 y 值会落在哪里,以及函数从哪里获取 P。不幸的是,我无法访问nlinfit或优化工具箱。

4

1 回答 1

0

您应该尝试 matlab 函数lsqnonlin(@testfun,[1;1;1]) 但首先创建一个函数并保存在一个包含所有数据点的 m 文件中,假设您的 y 是 A 并且 x 是 x 就像这里以下:

function F = testfun(P)
A = [1;2;3;7;30;100];
x = [1;2;3;4;5;6];
F = A-P(1)*exp(-P(2)*x) - P(3)*x;

这最小化了 2 范数端为您提供了最佳参数。

于 2013-12-07T13:55:13.933 回答