需要找到一组系统的最优参数P = 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
或优化工具箱。
答案 0 :(得分: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-norm end为您提供了最佳参数。