如何利用matlab将数值拟合成函数
比如说x和y都各自由一组数值组成,现在想得到一个拟合函数F,y=F(x)...如何利用matlab来获得F呀。。谢谢。。...
比如说x和y都各自由一组数值组成,现在想得到一个拟合函数F,y=F(x)...如何利用matlab来获得F呀。。谢谢。。
展开
展开全部
首先你得估计你的数据的走向 大致与那个函数像就用那个函数
matlab里有多项式拟合函数polyfit
t=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
ni=19 43 59 82 92 113 138 148 151 157 158 155 137 109 89 79 60 53 92 45;
t
目标函数Ni=10^(A-B*t)*加和Ni
i=1
求A、B的值
t=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
ni=19 43 59 82 92 113 138 148 151 157 158 155 137 109 89 79 60 53 92 45;
p=polyfit(t,log10(Ni),1)
%由目标函数知,log10(Ni)与t成一次线形回归,求出其系数
p =
0.0058 1.8802
所以A=1.8802,B=-0.0058
和自定义拟合函数lsqcurvefit
matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)
已知数据点:xdata=(xdata1,xdata2,…,xdatan)
ydata=(ydata1,ydata2,…,ydatan)
lsqcurvefit用以求含参量x(向量)的向量值函数
F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T
中的参变量x(向量),使得1/2*∑[a+b*exp(-0.02*k*t(i))-c(i)]^2最小
1.先定义个函数fun
function y=fun(x,tdata)
y=x(1)*gamma(1-x(2))*gamma(x(2))*cos(x(2)*pi/2)*(x(3)*tdata).^x(2);
保存一下
2调用解题
clc
x0=[0.05 0.1 0.05];
tdata=[0.06283 0.08118 0.1048 0.13534 0.17486 0.22581 0.29166];
ydata=[0.02797 0.04477 0.06839 0.101 0.145 0.2 0.27];
x=lsqcurvefit('fun',x0,tdata,ydata)
结果x =0.1163 1.3353 4.1766 即分别是A,n,B
matlab里有多项式拟合函数polyfit
t=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
ni=19 43 59 82 92 113 138 148 151 157 158 155 137 109 89 79 60 53 92 45;
t
目标函数Ni=10^(A-B*t)*加和Ni
i=1
求A、B的值
t=1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20;
ni=19 43 59 82 92 113 138 148 151 157 158 155 137 109 89 79 60 53 92 45;
p=polyfit(t,log10(Ni),1)
%由目标函数知,log10(Ni)与t成一次线形回归,求出其系数
p =
0.0058 1.8802
所以A=1.8802,B=-0.0058
和自定义拟合函数lsqcurvefit
matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin。这里用lsqcurvefit(lsqnonlin一样做),先介绍下lsqcurvefit(原理是最小二乘法)
已知数据点:xdata=(xdata1,xdata2,…,xdatan)
ydata=(ydata1,ydata2,…,ydatan)
lsqcurvefit用以求含参量x(向量)的向量值函数
F(x,xdata)=(F(x,xdata1),…,F(x,xdatan))T
中的参变量x(向量),使得1/2*∑[a+b*exp(-0.02*k*t(i))-c(i)]^2最小
1.先定义个函数fun
function y=fun(x,tdata)
y=x(1)*gamma(1-x(2))*gamma(x(2))*cos(x(2)*pi/2)*(x(3)*tdata).^x(2);
保存一下
2调用解题
clc
x0=[0.05 0.1 0.05];
tdata=[0.06283 0.08118 0.1048 0.13534 0.17486 0.22581 0.29166];
ydata=[0.02797 0.04477 0.06839 0.101 0.145 0.2 0.27];
x=lsqcurvefit('fun',x0,tdata,ydata)
结果x =0.1163 1.3353 4.1766 即分别是A,n,B
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询