我有数据值y
,可以通过y=A x B x exp(C)
其中A
和C
为变量且B
为常数的函数来计算。y
给出了不同的数据值B
。我想确定变量A
和C
。
我的想法是定义给定数据y
与计算数据y
(y_calc
)之间的比率。y_calc
将使用和的值计算,这些值A
与C
实际变量A
和接近C
。因此,需要针对所有y_calc
不同情况使该比率最小化B
。-> ratio = ((y - y_calc)/(y + y_calc))^2
。
此外,存在用于约束A
和C
(例如A<10
,C>20
)。我还想为比率定义约束(例如ratio<1e-5
)
我想用MATLAB解决这个问题。不幸的是,我不知道我必须使用许多可用功能中的哪一个以及如何应用这些功能。
谁能帮我?这样甚至可以解决我的问题吗?谢谢你。
我假设您像其他用户建议的那样在OP中输入了错字。
您的入门思路朝着正确的方向发展,请查找“成本函数”。
您可以使用fminsearch函数。我在这方面不是那么有知识,因为我是最近才学到的,大部分时间都是将SVD方法(再次查找)用于此类工作。
这应该工作
clear all
close all
clc
B = [1,2,3,4,5]; % test values B
y = [3,5,7,9,15]; % test values y
vParam = [1,1]; % starting test value A and C
fct='fct';
options=optimset('TolX', 1.e-4, 'TolFun', 1.e-4, 'MaxFunEvals', 1500,'MaxIter', 500);
[vParam_optimized] = fminsearch(fct,vParam,options,B,y);
fit = vParam_optimized(1).*B.*exp(vParam_optimized(2));
plot(fit)
hold on
plot(y,'*')
function y=fct(vParam,B,y_meas)
% Parameters, x values, y result values
y=0;
for i=1:length(B)
y=y+(y_meas(i)-(vParam(1)*B(i)*exp(vParam(2)))).^2; % cost function
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句