Fminsearch Matlab(非线性回归)
有人能给我解释一下我如何用非线性回归法来计算这个方程吗?用matlab命令窗口来计算K I=10^-9(exp(38.68V/k)-1)。 我的数据值如下:Fminsearch Matlab(非线性回归),matlab,math,regression,linear-regression,fminsearch,Matlab,Math,Regression,Linear Regression,Fminsearch,有人能给我解释一下我如何用非线性回归法来计算这个方程吗?用matlab命令窗口来计算K I=10^-9(exp(38.68V/k)-1)。 我的数据值如下: Voltage := [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]: Current:= [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29]: [新]:现在我使用FminSearch作为另一种选择,出现了另一条错误消息 Matr
Voltage := [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]:
Current:= [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29]:
[新]:现在我使用FminSearch作为另一种选择,出现了另一条错误消息
Matrix dimensions must agree.
Error in @(k)sum((I(:)-Imodel(V(:),k)).^2)
Error in fminsearch (line 189)
fv(:,1) = funfcn(x,varargin{:});
我使用了以下fminsearch代码:
>> V = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];
>> I = [0, 0, 0, 0, 0, 0, 0.07 ,0.92 ,12.02 ,158.29];
>> Imodel = @(V,k) 1E-9*(exp(38.68*V/k)-1);
>> k0 = 1;
>> kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0)
>> kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0);
考虑到当前数据
I
和电压数据V
作为向量,您希望找到将指数模型的平方误差之和最小化的参数k
(顺便说一句,这是电流/电压特性吗?):
Imodel = @(V,k) 1E-9*(exp(38.68*V/k)-1);
k0 = 1;
kmodel = fminsearch(@(k) sum((I(:)-Imodel(V(:),k)).^2), k0);
plot(V(:), I(:), 'ok', V(:), Imodel(V(:),kmodel), '-r');
匿名函数计算误差平方和。搜索将最小化模型误差的参数
k
,从值1开始;请将其更改为一个更合适的值(如果您对此有很好的猜测)。您是否可以发布一张该公式的LaTeX格式版本的图像?你是说有嵌套的超能力吗?不管是哪种方式,您是否考虑过进行对数线性回归(即,获取两边的日志,然后进行线性回归)?相关:@Dan,我已附上实际方程的屏幕截图。@Dan:我正在考虑进行对数线性回归。当前的测量是否会给线性回归增加误差?如果我忽略这些值,它会提高准确性吗:?我有这些值,我需要找到k;电压:=[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]:电流:=[0,0,0,0,0,0,0,0,0.07,0.92,12.02,158.29]:@Saavin抱歉,我已经给出了解决方案。你试过了吗?在如何将其应用于您的案例方面,您是否需要更多帮助?我查看了您的个人资料,得知您精通MATLAB,因此我认为您可以根据自己的需要调整解决方案。@Saavin我更改了代码,使其更具可读性,并添加了数据与模型的关系图。我尝试过这一点,但仍然出现错误,>>f=(电压,k)1E-9*(exp((36.68.*电压)/k)-1);>>nlinfit(电压、电流、f,[1 0.15829])@Saavin我使用了fminsearch
(这是一个通用的MATLAB函数)而不是nlinfit
(统计工具箱附带)。我想问的是:你试过我发布的代码了吗?