fminsearch 非线性回归 Matlab?
fminsearch for non linear regression Matlab?
任何人都可以向我解释如何使用 Matlab 命令 window.[=19 将 fminsearch
应用于此等式以找到 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
出现了错误信息:
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)
请解释这段代码中的问题是什么?
您似乎在继续 post:。链接的 post 试图在您的方程式中找到正确的系数 k
以最小化输入之间的平方误差之和,这是根据二极管的电流 - 电压关系预测的电流和输出,这是从二极管测得的电流。当前 post 只是试图让它脱离地面。
无论如何,这是一个非常简单的错误。您在当前数组 I
中缺少一个元素。它缺少一个 0。您可以通过在 V
和 I
上使用 numel
来验证这一点。基本上,V
和 I
的大小不匹配。 numel(V) == 11
和 numel(I) == 10
.
你在问题顶部的定义与你定义错误的方式相比,它缺少最后一个零:
I = [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29];
%// ^
当我 运行 使用这个新 I
的代码时,我得到:
>> kmodel
kmodel =
1.4999
任何人都可以向我解释如何使用 Matlab 命令 window.[=19 将 fminsearch
应用于此等式以找到 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
出现了错误信息:
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)
请解释这段代码中的问题是什么?
您似乎在继续 post:k
以最小化输入之间的平方误差之和,这是根据二极管的电流 - 电压关系预测的电流和输出,这是从二极管测得的电流。当前 post 只是试图让它脱离地面。
无论如何,这是一个非常简单的错误。您在当前数组 I
中缺少一个元素。它缺少一个 0。您可以通过在 V
和 I
上使用 numel
来验证这一点。基本上,V
和 I
的大小不匹配。 numel(V) == 11
和 numel(I) == 10
.
你在问题顶部的定义与你定义错误的方式相比,它缺少最后一个零:
I = [0, 0, 0, 0, 0, 0, 0, 0.07, 0.92, 12.02, 158.29];
%// ^
当我 运行 使用这个新 I
的代码时,我得到:
>> kmodel
kmodel =
1.4999