[matlab曲线拟合]MATLAB的曲线拟合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[matlab 曲线拟合]MATLAB的曲线拟合篇一: MA TLAB的曲线拟合
MA TLAB软件提供了基本的曲线拟合函数的命令。

曲线拟合就是计算出两组数据之间的一种函数关系,由此可描绘其变化曲线及估计非采集数据对应的变量信息。

1.线性拟合函数:regress
调用格式:b =regress
[b,bint,r,rint,stats]= regress
[b,bint,r,rint,stats] =regress
x=[ones …];
y=x*[10;1]+normrnd;
[b,bint]=regress
结果得回归方程为:y=9.9213+1.0143x
x=1:20;
y=x+3*sin;
p=polyfit
xi=linspace;
z=polyval;% 多项式求值函数
plot
legend
function yy=model
a=beta0;
b=beta0;
yy=a+*exp);
拟合程序:
x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00 14.0014.00...
16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.0024.00...
24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.0032.00...
34.00 36.00 36.00 38.00 38.00 40.00 42.00]‟;
y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.430.44 0.43...
0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.400.41 0.41...
0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.390.39]‟;
beta0=[0.30 0.02];
betafit = nlinfit
结果:betafit =
0.3896 0.1011
即:a=0.3896 ,b=0.1011 拟合函数为:
x1 =[1150,1000,900,850,700,625,550,475,3350,3500,5900,
5800,5700,4600,4625,4725,11650,11200,11200 ]‟;
x2 =[175,100,25,0,75,100,150,200,50,600,500,
225,100,1225,1600,2000,1200,1000,1550 ]‟;
x = [x1,x2];
y
=[1.44E-02,1.80E-02,6.08E-02,5.59E-02,3.42E-02,7.74E-03,1.17E-03,
6.16E-03,1.91E-04,1.,res
plot3)
% 值的选取没有定法,与实际问题的模型有关。

线性的不行,用二次函数。

formatlong
A=[...
0.213.6850325127.4
7.79.9365831413.9
5.810.873074332
6.8
7.709.70671725723.8
7.59.8760928021.7
5.611.3427153314.6
6.2
7.65216948225
3.239.1616516804
4.1
0.3311.3173668554.1
0.149.5142459156.6
5.59.718184331.6
2.38.933612250114.9
3.3
4.6739275166
1.99.732175150107.5
0.69.933088242142.3
0.2211.71862056760.4
1.8811.762788526771.6
2.7810.9217807658.7]
x=A,Y=A
x11=x.*x;
x12=x.*x;
x13=x.*x;
x14=x.*x;
x22=x.*x;
x23=x.*x;
x24=x.*x;
x33=x.*x;
x34=x.*x;
x44=x.*x;
X=[x,x11,x12,x13,x14,x22,x23,x24,x33,x34,x44] [B,BINT,R]=REGRESS,1),X])
B就是系数,R就是预测值与实际值的差值。

clear
clc
x =[405060708090100110120135 150];
y =[0.00960.01450.01940.03480.05010.0751
0.10000.14970.19930.24960.2999];
z =[0.24000.28650.33300.36000.38700.4010
0.41500.43900.46300.48750.5120];
X0 = [1 1 11 1 1];
%只要这样写就可以了
f=@ + p*x + p*x +p*x
. +p*x.*x + p*x.);
p=lsqcurvefit;
5.稳健回归函数:robust
稳健回归是指此回归方法相对于其他回归方法而言,受异常值的影响较小。

调用格式:b =robustfit
[b,stats]= robustfit
[b,stats]= robustfit
说明:
b:系数估计向量;
stats:各种参数估计;
wfun:指定一个加权函数;
tune:为调协常数;
const:值为’on’时添加一个常数项,为’off’时忽略常数项。

例:演示一个异常数据点如何影响最小二乘拟合值与稳健拟合。

首先利用函数y=10-2x加上一些随机干扰的项生成数据集,然后改变一个y的值形成异常值。

调用不同的拟合函数,通过图形观查影响程度。

程序:x=’;
y=10-2*x+randn;
y=0;
bls=regress x]); % 线性拟合
brob=robustfit; % 稳健拟合
scatter+bls*x,’:’);
plot+brob*x,’r‘);
结果:bls =8.4452-1.4784
brob=10.2934-2.0006
篇二: Matlab非线性拟合
有两列数字,需要用自定义的复杂函数拟合
[x, y]=[0.6833333331.552133333
1.0666666671.610833333
2.1666666671.702533333
3.3333333331.757483333
6.3666666671.825533333
12.466666671.890833333
43.883333331.99507451
58.533333332.016733333
118.7 2.066433333
138.75 2.077583333
479.61666672.160233333
499.66666672.163333333];
用自定义的复杂函数拟合,除了cftool之外,还有什么其他办法完成呢?
step1:自定义拟合函数,例如:
function yfit=kyf %这个函数单独存成一个m文件
x=x;
yfit=a*log./*log)+a;
end;
step2:开始拟合:
a0=[0.1 0.1 0.1];%与拟合参数a对应,这是初始猜测值
options=statset;
[a,r,J,~,msE]=nlinfit;%拟合
[ypred,delta]=nlpredci;%计算预测值和预测区间
step3:查看计算结果
figure
subplot;
plot;hold on;
plot;
plot;
legend;
subplot;
plot;hold on;
stem
legend; 运行结果图示
扩展:matlab 非线性拟合/ matlab多元非线性拟合/ matlab非线性拟合函数
篇三: matlab曲线拟合怎么做
[matlab 曲线拟合]matlab曲线拟合怎么做——简介
Matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。

一般我们做社会调研或科学研究时,会得到很多实验数据。

当需要研究两个变量之间的关系时,经常要用到曲线拟合。

曲线拟合不
仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。

其实用matlab做曲线拟合很便捷,下面将以两个变量)为例详细介绍:
[matlab 曲线拟合]matlab曲线拟合怎么做——知识点
MA TLAB软件,实验数据[matlab 曲线拟合]matlab曲线拟合怎么做——详细知识
[matlab 曲线拟合]matlab曲线拟合怎么做一
运行Matlab软件。

在工作空间中存入变量的实验数据。

具体如下:
可以直接用矩阵来存放数据,直接在命令窗口输入
x=[数据x1,数据x2,...,数据xn];
y=[数据y1,数据y2,...,数据yn];
当数据较多时,可以从excel,txt等文件中导入。

[matlab 曲线拟合]matlab曲线拟合怎么做二
把数据存入工作空间后,在命令窗口中输入cftool,回车运行。

[matlab 曲线拟合]matlab曲线拟合怎么做三
在这个拟合工具窗口的左边,选择变量,即分别选择x,y。

[matlab 曲线拟合]matlab曲线拟合怎么做四
选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。

选择完后会自动完成拟合,并且给出拟合函数表达式。

[matlab 曲线拟合]matlab曲线拟合怎么做五
点击菜单栏中的“file”,选择“print to figure”进行画图。

[matlab 曲线拟合]matlab曲线拟合怎么做六
在图形窗口中,可以对图形显示模式进行修改,如添加标题,坐标名称等。

[matlab 曲线拟合]matlab曲线拟合怎么做七
最后得到比较完整的图形曲线。

点击”file”中的“save”进行保存。

[matlab 曲线拟合]matlab曲线拟合怎么做——注意事项
x和y的数据个数应该一致。

希望对您有帮助!篇四: MA TLAB曲线拟合
曲线拟合实例:温度曲线问题
气象部门观测到一天某些时刻的温度变化数据为:
t
1
2
3
4
5
6
7
8
9
10
T
13
15
17
14
16
19
26
24
26
27
29
试描绘出温度变化曲线。

曲线拟合就是计算出两组数据之间的一种函数关系,由此可描
绘其变化曲线及估计非采集数据对应的变量信息。

曲线拟合有多种方式,下面是一元函数采用最小二乘法对给定数据进行多项式曲线拟合,最后给出拟合的多项式系数。

1.线性拟合函数:regress
调用格式:b=regress
[b,bint,r,rint,stats]= regress
[b,bint,r,rint,stats]= regress
说明:b=regress返回X与y的最小二乘拟合值,及线性模型的参数值β、ε。

该函数求解线性模型:
y=Xβ+ε
β是p´1的参数向量;ε是服从标准正态分布的随机干扰的n´1的向量;y为n´1的向量;X为n´p矩阵。

bint返回β的95%的置信区间。

r中为形状残差,rint中返回每一个残差的95%置信区间。

Stats向量包含R2统计量、回归的F值和p值。

例1:设y的值为给定的x的线性函数加服从标准正态分布的随机干扰值得到。

即y=10+x+ε;求线性拟合方程系数。

程序:x=[ones …];
y=x*[10;1]+normrnd;
[b,bint]=regress
结果:x =
11
12
13
14
15
16
17
18
19
110
y =
10.9567
11.8334
13.0125
14.0288 14.8854
16.1191
17.1189 17.9962
19.0327
20.0175
b =
9.9213
1.0143
bint =
9.788910.0537
0.99301.0357
即回归方程为:y=9.9213+1.0143x
2.多项式曲线拟合函数:polyfit
调用格式:p=polyfit
[p,s]= polyfit
说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。

矩阵s用于生成预测值的误差估计。

例2:由离散数据
x
.1
.2
.3
.4
.5
.6
.7
.8
.9
1
y
.3
.5
1
1.4
1.6
1.9
.6
.4
.8
1.5
2
拟合出多项式。

程序:
x=0:.1:1;
y=[.3.5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2]; n=3;
p=polyfit
xi=linspace;
z=polyval;%多项式求值
plot
legend
结果:
p =
16.7832-25.745910.9802-0.0035
多项式为:16.7832x3-25.7459x2+10.9802x-0.0035 曲线拟合图形:
如果是n=6,则如下图:
也可由函数给出数据。

例3:x=1:20,y=x+3*sin
程序:
x=1:20;
y=x+3*sin;
p=polyfit
xi=linspace;
z=polyval;%多项式求值函数
plot
legend
结果:
p =
0.0000-0.00210.0505-0.59713.6472-9.729511.3304
再用10阶多项式拟合
程序:x=1:20;
y=x+3*sin;
p=polyfit
xi=linspace;
z=polyval;
plot
legend
结果:p =
Columns 1 through 7
0.0000-0.00000.0004-0.01140.1814-1.806511.2360
Columns 8 through 11
-42.086188.5907-92.815540.2671
可用不同阶的多项式来拟合数据,但也不是阶数越高拟合的越好。

3.多项式曲线求值函数:polyval
调用格式:y=polyval
[y,DEL TA]=polyval
说明:y=polyval为返回对应自变量x在给定系数P的多项式的值。

[y,DEL TA]=polyval 使用polyfit函数的选项输出s得出误差估计YDEL TA。

它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。

则Y DEL TA将至少包含50%的预测值。

4.多项式曲线拟合的评价和置信区间函数:polyconf
调用格式:[Y,DEL TA]=polyconf
[Y,DEL TA]=polyconf
说明:[Y,DEL TA]=polyconf使用polyfit函数的选项输出s给出Y的95%置信区间YDEL TA。

它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。

1-alpha为置信度。

例4:给出上面例1的预测值及置信度为90%的置信区间。

程序:x=0:.1:1;
y=[.3.5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2]
n=3;
[p,s]=polyfit
alpha=0.05;
[Y,DEL TA]=polyconf
结果:
p =
16.7832-25.745910.9802-0.0035
s =
R:[4x4 double]
df: 7
normr: 1.1406
Y =
Columns 1 through 9
-0.00350.85381.29701.42661.34341.14800.94130.82380.8963
Columns 10 through 11
1.2594
2.0140
5.稳健回归函数:robust
稳健回归是指此回归方法相对于其他回归方法而言,受异常值的影响较小。

调用格式:b=robustfit
[b,stats]=robustfit
[b,stats]=robustfit
说明:b返回系数估计向量;stats返回各种参数估计;’wfun’指定一个加权函数;tune为调协常数;’const’的值为’on’时添加一个常数项;为’off’时忽略常数项。

例5:演示一个异常数据点如何影响最小二乘拟合值与稳健拟合。

首先利用函数y=10-2x加上一些随机干扰的项生成数据集,然后改变一个y的值形成异常值。

调用不同的拟合函数,通过图形观查影响程度。

程序:x=’;
y=10-2*x+randn;
y=0;
bls=regress x]) %线性拟合
brob=robustfit %稳健拟合
scatter
hold on
plot+bls*x,’:’)
plot+brob*x,’r‘)
结果:bls =
8.4452
-1.4784
brob =
10.2934
-2.0006
分析:稳健拟合对数据的拟合程度好些,忽略了异常值。

最小二乘拟合则受到异常值的影响,向异常值偏移。

6.向自定义函数拟合
对于给定的数据,根据经验拟合为带有待定常数的自定义函数。

所用函数:nlinfit
调用格式:[beta,r,J]=nlinfit
说明:beta返回函数’fun’中的待定常数;r表示残差;J表示雅可比矩阵。

X,y为数据;‘fun’自定义函数;beta0待定常数初值。

例6:在化工生产中获得的氯气的级分y随生产时间x下降,假定在x≥8时,y与x之间有如下形式的非线性模型:
现收集了44组数据,利用该数据通过拟合确定非线性模型中的待定常数。

xyxyxy
80.49160.43280.41
80.49180.46280.40
100.48180.45300.40
100.47200.42300.40
100.48200.42300.38
100.47200.43320.41
120.46200.41320.40
120.46220.41340.40
120.45220.40360.41
120.43240.42360.36
140.45240.40380.40
140.43240.40380.40
140.43260.41400.36
160.44260.40420.39
160.43260.41
首先定义非线性函数的m文件:fff6.m
function yy=model
a=beta0;
b=beta0;
yy=a+*exp);
程序:
x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.0014.00 14.00...
16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.0024.00...
24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.0032.00...
34.00 36.00 36.00 38.00 38.00 40.00 42.00]‟;
y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.430.44 0.43...
0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.400.41 0.41...
0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.390.39]‟;
beta0=[0.30 0.02];
betafit = nlinfit
结果:betafit =
0.3896
0.1011
即:a=0.3896 ,b=0.1011 转自飞扬youth的博客。

相关文档
最新文档