matlab自定义函数拟合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab自定义函数拟合相关的知识,希望对你有一定的参考价值。
matlab中的非线性拟合函数nonlinfit具有强大的用自己定义的一个任意函数来拟合数据的功能。最常见的调用形式为
BETA
=
nlinfit(X,Y,MODELFUN,BETA0)
BETA为待拟合的参数,X为自变量(矩阵),Y为应变量(向量),MODELFUN为自定义的拟合函数(function
handle
型数据),BETA0为BETA的初始值(向量)。
X可以是矩阵,当有多列时,每一列均为一个自变量。
MODELFUN有特定的格式。MODELFUN接受2个参数,第一个是待拟合的参数矢量,第二个是自变量矩阵。
模板函数定义案例:
模型:y=ax^2+bx+c
定义模型函数代码:f_model=@(b,x)b(1)*x.^2+b(2)*x+b(3);
%定义时要注意x是一个矢量
BETA0是迭代算法的参数初始值,当模型函数复杂时,拟合的好坏会受初始值的影响。
扩展:
matlab还提供了配套的函数nlparci与nlpredci,这两个函数可以求出参数与预测值的拟合误差。 参考技术A 使用cftool计算即可
General
model:
f(x)
=
a*(x-b)+c*(sin(x)-d)
Coefficients
(with
95%
confidence
bounds):
a
=
0.6337
(0.5866,
0.6808)
b
=
198
(-4.701e+008,
4.701e+008)
c
=
0.7741
(-3.443,
4.991)
d
=
-229.9
(-3.849e+008,
3.849e+008)
这分别是四个系数 参考技术B 简单
自己就可以解决的啊!
x=t;
y;
f=@(p,x)你的自定义函数函数
p=fminsearch(@(p)sum(y-f(p,x)).^2,p0)
不想写了
要是看了这个还不会
再写吧
想用matlab确定拟合函数的最佳次数?
我想用matlab找到拟合函数的最佳次数,通常拟合方程的次数是我自己设定,或者用cftool工具箱,虽然看图像好像拟合得很好,但是还是不知道方程的次数是否是最佳的,请问各位高手在用polyfit 和 polyval 对数据进行进行拟合、求拟合曲线时,如何确定最佳的拟合次数,或者检验自己拟合的次数是否是最好的。
拟合效果一般是不看次数,是在于关注拟合误差,一般拟合的都是根据最小二乘法实现的,首先你可以根据拟合优度R^2判断拟合效果(越接近1越好),其次就是看拟合误差,至于怎么查看,你可以help polyfit调用拟合误差。祝好运 参考技术A 确定参数的初始值是比较繁琐的工作,一般可以用随机函数rand()来初定初始值,再根据plot()的散点图的曲线趋势,再调整初始值,直到试验数据曲线与拟合函数曲线基本吻合,即r²≈
1(相关系数),此时得到的系数为最佳值。(前提,拟合模型符合试验数据) 参考技术B 判断拟合次数的好坏一是看最后的标准差是否最小,而是看看有没有过拟合
以上是关于matlab自定义函数拟合的主要内容,如果未能解决你的问题,请参考以下文章