24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1622  |  回复: 5

946528753

铜虫 (小有名气)

[求助] 在用nlinfit对非线性函数拟合时遇到的一些问题请教已有1人参与

我最近在看文献时,看到到作者在用nlinfit进行非线性函数参数识别(拟合参数),文献中的非线性函数是一个方程组,里面有微分方程。(图1就是作者要拟合的函数,需要拟合的参数是δ0,δ1,δ2,Fc, Fs, vs. 自变量是v,因变量是Ff,v是t的函数,是已知的,α和β都是已知的),不知作者处于何种考虑,在构建拟合函数时并不是采用常规的数学表达式,而是用的simulink模型,然后在定义拟合函数时用sim令来调用该模型。我尝试过用他的方法来拟合,可是一直不成功,不知错在哪里。这里我贴上一个简单的例子来,请各位给看看。


这个简单的例子是用来拟合非线性函数y=1+2*x+3*x^2的
下面是用nlinfit拟合的主函数:(其中通过for循环产生一组原始数据用于拟合,myfun是定义的含有未知参数的函数,这里我想了解用simulink模型来进行参数拟合的原理,所以就利用sim指令来定义myfun了)
clc,clear,clf;
global b;
global c;
global d;
for ii=1:1:100
    x(ii) = ii;
    y(ii) = 2 + 3*ii + 4*ii^2;
end
plot(x,y,'.');
hold on;
a0=[1,1.2,3.4];
beta=nlinfit(x',y',@myfun,a0);

下面是自定义的myfun函数:(其中参数a是需要拟合的参数b,c,d的集合,m就是自变量了)
function [yout] = myfun(a,m)
global b;
global c;
global d;
b=a(1);
c=a(2);
d=a(3);
[t,x,y]=sim('ex_3',100);
yout=y;
end

图2是用simulink构建的y=b+c*x+d*x^2的模型

在用nlinfit对非线性函数拟合时遇到的一些问题请教
图1.jpg


在用nlinfit对非线性函数拟合时遇到的一些问题请教-1
图2.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

此人很懒,什么也没留下!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
何不用常规的方法做拟合呢?在小木虫里搜索可以找到很多例子。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-06-25 15:41:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

946528753

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by 月只蓝 at 2014-06-25 15:41:47
何不用常规的方法做拟合呢?在小木虫里搜索可以找到很多例子。

常规的方法可能在写函数方程时比较困难,比如我在图1中给出的例子,有3个方程,其中第一个和第三个都还好说,唯独第二个是一个微分方程,如果用常规的方法,势必要将3个方程化为一个只有自变量v、因变量Ff和未知参数的方程。这样就涉及到求解第二个微风方程的问题了。
而如果用simulink就能很好的构建这个方程组所表达的函数了。
此人很懒,什么也没留下!
3楼2014-06-25 16:05:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
3楼: Originally posted by 946528753 at 2014-06-25 16:05:01
常规的方法可能在写函数方程时比较困难,比如我在图1中给出的例子,有3个方程,其中第一个和第三个都还好说,唯独第二个是一个微分方程,如果用常规的方法,势必要将3个方程化为一个只有自变量v、因变量Ff和未知参 ...

微分方程也可以拟合的,估计你的待拟合方程是代数方程和微分方程混合而成。小木虫里单独代数方程、微分方程拟合的例子已经很多。
此外,推荐你找有高版本1stopt的虫子跑一下,会快很多。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2014-06-25 16:09:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

946528753

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by 月只蓝 at 2014-06-25 16:09:49
微分方程也可以拟合的,估计你的待拟合方程是代数方程和微分方程混合而成。小木虫里单独代数方程、微分方程拟合的例子已经很多。
此外,推荐你找有高版本1stopt的虫子跑一下,会快很多。...

确实,那个需要拟合的函数中既有代数方程又有微分方程,我参考的文献中作者就是通过用sim调用simulink的方法来进行拟合的,可是我找了好久也没找到例子,所以说看能不能自己弄个简单的例子来试验下,结果还是不行。

不过还是谢谢你。
此人很懒,什么也没留下!
5楼2014-06-25 16:26:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

renhug

银虫 (小有名气)

楼主 你这个问题解决了吗 我也遇到同样的问题,要拟合的函数很复杂,想用simulink模型来表示该函数。
茫茫人海中的一枚小硕
6楼2014-11-27 10:29:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 946528753 的主题更新
信息提示
请填处理意见