首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fminsearch Matlab (非线性回归)

Fminsearch Matlab (非线性回归)
EN

Stack Overflow用户
提问于 2016-02-12 11:54:01
回答 1查看 823关注 0票数 2

有人能向我解释一下,我怎样才能把非线性回归应用到这个方程上,而不是用matlab命令窗口找出K。

I= 10^-9(exp(38.68V/k)-1)。方程截图

我有如下数据值:

代码语言:javascript
复制
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作为另一种选择,出现了另一条错误消息。

代码语言:javascript
复制
Matrix dimensions must agree.

Error in @(k)sum((I(:)-Imodel(V(:),k)).^2)

Error in fminsearch (line 189)
fv(:,1) = funfcn(x,varargin{:});

我使用了这个fminsearch代码:

代码语言:javascript
复制
>> 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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-12 12:13:59

您想要找到参数k,它将最小化指数模型的平方误差之和(BTW,这是电流/电压特性吗?)给定当前数据I和电压数据V作为向量:

代码语言:javascript
复制
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开始;请将其更改为更合适的值(如果您对它有一个很好的猜测)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35361989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档