matlab自定义函数拟合

x=[0.30.3138245760.3282862140.3434142730.3592394610.3757939050.3931112090.4112265280.... x=[0.3 0.313824576 0.328286214 0.343414273 0.359239461 0.375793905 0.393111209 0.411226528 0.430176635 0.45
]
y=[0.25 0.4375 0.59375 0.78125 0.875 0.9375 0.96875 0.96875 1 1
]
用 f(x) = (1-0.02)-(1-0.25-0.02)*2^(-(x/a)^b)拟合并求y=0.75时x的值
先谢谢了
展开
 我来答
themanisjimmy
推荐于2016-01-16 · TA获得超过2757个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:237万
展开全部
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,这两个函数可以求出参数与预测值的拟合误差。
化学工程
推荐于2018-02-27 · TA获得超过8900个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3362万
展开全部
clc;clear
x=[0.3 0.313824576 0.328286214 0.343414273 0.359239461 0.375793905 0.393111209 0.411226528 0.430176635 0.45]
y=[0.25 0.4375 0.59375 0.78125 0.875 0.9375 0.96875 0.96875 1 1 ]
fx =inline('(1-0.02)-(1-0.25-0.02)*2.^(-(x./a(1)).^a(2))','a','x')%拟合并求y=0.75时x的值
a=nlinfit(x,y,fx,[1 1])
x1=min(x):0.001:max(x);
y1=(1-0.02)-(1-0.25-0.02)*2.^(-(x1./a(1)).^a(2));
f=vpa(subs(fx,'[a(1),a(2)]',[a(1),a(2)])-0.75,6)
x75=solve(f)
plot(x,y,'o',x1,y1)
grid

结果:
fx =

Inline function:
fx(a,x) = (1-0.02)-(1-0.25-0.02)*2.^(-(x./a(1)).^a(2))

a =

0.33229 16.846

f =

.230000-.73*2.^(-.114971e9*x^(4741802551867469/281474976710656))

x75 =

.34251812790298161188357974505310
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式