matlab怎么调用工具箱里的函数,Matlab调用cftool工具的函数方法

师弟有一堆实验数据要拟合,MATLAB调用cftool工具箱,采用GUI模式显然会让人吐血,而用函数调用的方法就比较方便了。当然origin等软件可以批量弄,线性方程时matlab可以调用[p,e]=polyfit(x,y,n)完成。对于方程需要自定义时,个人认为Matlab的效率就更高了。

下面举个简化的拟合简单无温度系数形式的Arrhenius方程 K=A*exp(-E/RT) 例子:

1.原始数据:

T=[1000 1200 1400 1600 1800 2000];

K=[1.30E-04 1.60E-01 26 1.20E+03 2.30E+04 2.50E+05];

拟合方程形式 y=a*exp(b*x) 的Exponential形式

对T做一下基本转换:

Tr=-1./T;

2.先调用cftool,进行相关设置

a. Data中设置x_data,y_data后Create data set

b. Fitting中设置New Fit,Type of

fit: Exponential--->a*exp(b*x),后Apply

c. Curve Fitting

Tool中File-->Generate M-file

3.修改 第一行 function createFit(Tr,K)为function [cf_,gof] =

createFit(Tr,K)

找到 % Fit

this model using new data

cf_= fit(Tr(ok_),K(ok_),ft_,'Startpoint',st_);

修改为:

% Fit this model using new data

[cf_,gof]

= fit(Tr(ok_),K(ok_),ft_,'Startpoint',st_);

4. 保存该M文件为createFit.m

5. 调用函数方法:

[c,g]=createFit(Tr,K)

根据系数的结构用"."运算符取出拟合系数等,如

a=c.a

b=c.b

RMSE=g.rmse

6. cftool可自定义函数,如果拟合数据不理想需要设置系数范围,如拟合含温度系数形式的Arrhenius方程

K=A*exp(-E/RT)*(T)^n 时:

st_ =

[abc(i,1) abc(i,2) abc(i,3)

]; �c为预测系数矩阵,i为循环的列号

ft_ =

fittype('a*exp(b*x)*(-1/x)^c',...

'dependent',{'y'},'independent',{'x'},...

'coefficients',{'a', 'b', 'c'});

7. 将拟合系数写入解的矩阵中:

factor(i,:)=[c.a

c.b g.rmse];

自编程序需要调用 data文件中的T,K然后把

factor写入data文件中。由于拟合不能保证100%有解,所以需要人工干涉运行,Good Luck!

个人认为拟合含温度系数的Arrhenius方程的n时,是有些困难的。因为当n!=0时,根据曲线走势要先给出a,b的预测值,限定一下预测范围,然后再通过循环调整c值得到温度系数n.数据量小的话这个过程需要一定的人工参与,但当数据量比较大时,就需要循环判断得出残差值小的系数矩阵。这个在Matlab里面实现还是比较方便的。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值