完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位前辈大家好,我是刚学用matlab编程不久,想用最小二乘拟合性能退化数据的程序,根据以前的一个大致模板编了一个小程序,调试的时候总是类似“未定义变量或函数”等的报错,但是内联函数inline不是不需要定义变量吗?难道需要用function提前定义一下?且我程序中的fun2为要拟合的函数。。
我用M文件写的程序及说明如下,还望求各位前辈多加指点,帮晚辈看一下该程序,争取能让调试成功,晚辈不胜感激!: %与指数退化模型Y=b*exp(a*T)拟合 T=1; f2=feval(fun2, b, T); [b, resnorm2]=Isqcurvefit(fun2, [0 0], T, Y); fun2=inline('b(1)*exp(b(2)*T)', 'b', 'T'); Z=[14 17 21 17 20 15310 18 15300 15210 15200 15 18 22 19 19 20 20 20 15310 15330 15 18 20 20 20 17 15 20 18 19 15 15 20 16 22 20 20 12 11 13 14 15 20 20 20 20 673 15110 19290 19870 14 14 19 20 20 20 19 1690 2293 2727 15 15 21 19 19 20 19 16 18 3519 15 16 15 19 20 20 19 946 2030 18840 14 15 19 20 20 20 19 15320 17 19890] i=1; while i<=9 i=i+1; Y=Z(:,i); %函数的拟合值 F2(:,i)=resnorm2; R2(:,i)=resnorm2; para21=b(1,1); A2(:,i)=para21; para22=b(1,2); B2(:,i)=para22; end disp('拟合的函数为:'); fun2 以上程序中,内联函数inline的输入部分:第一项为表达被拟合退化模型的函数表达式,此处的表达式是指数退化模型;b为指数退化模型的参数矢量,注:b(1)表示第一个参数,b(2)表示第二个参数;T表示测量时刻矢量,形式为1*N,N为测量时间点个数。内联函数inline的输出部分:fun2为被拟合模型函数。函数lsqcurvefit的输入部分:fun2为被拟合模型函数;[0 0]为函数初值,自定义,初值可以试探;Y表示Z的第i列(Z表示退化数据M*N阶的矩阵,其中M为样本 量,N为测量时间点个数:i表示进行拟合的第i个样品(i≤M))。 函数lsqcurvefit的输出部分:b为退化模型的参数矢量;resnorm2为输出的误差平方和。 函数reval的输入部分:fun2为被拟合模型函数,b为指数退化模型的参数矢量, T表示测量时刻矢量;函数feval的输出部分:亿为内联函数所表示的退化模型在该时刻的拟合值。 其他说明:F2表示拟合值矩阵;R2表示误差平方和矩阵;para21表示退化模型 参数1的值;para22表示退化模型参数2;A2表示退化模型参数矩阵。 |
|
相关推荐 |
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1606 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1887 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2707 浏览 0 评论
3043 浏览 0 评论
4095 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:40 , Processed in 0.500266 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号