国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

半導(dǎo)體熱敏電阻溫度曲線的Matlab曲線擬合

2019-10-30 09:28董慶瑞
教育教學(xué)論壇 2019年37期
關(guān)鍵詞:最小二乘法曲線擬合

董慶瑞

摘要:為了便于快速地找到適用的曲線擬合方法,以半導(dǎo)體熱敏電阻實(shí)驗(yàn)中溫度曲線的曲線擬合為例,全面地總結(jié)了利用Matlab程序進(jìn)行曲線擬合的基本理論和具體方法,演示了lsqcurvefit、nlinfit和fit三個非線性擬合指令的具體程序格式與操作步驟。這些Matlab指令程序可以有效地應(yīng)對實(shí)驗(yàn)數(shù)據(jù)處理中各種復(fù)雜的曲線擬合問題。

關(guān)鍵詞:曲線擬合;Matlab;非線性擬合;最小二乘法

中圖分類號:G642.0? ? ?文獻(xiàn)標(biāo)志碼:A? ? ?文章編號:1674-9324(2019)37-0066-03

在實(shí)驗(yàn)數(shù)據(jù)處理過程中,經(jīng)常需要選擇曲線類型來擬合原始數(shù)據(jù),并以所得曲線方程來反映變量間的函數(shù)關(guān)系[1]。隨著計(jì)算機(jī)性能的提高和數(shù)值計(jì)算方法的發(fā)展,計(jì)算機(jī)軟件在實(shí)驗(yàn)數(shù)據(jù)曲線擬合工作中發(fā)揮了越來越大的作用。目前利用計(jì)算機(jī)數(shù)值計(jì)算進(jìn)行曲線擬合是實(shí)驗(yàn)數(shù)據(jù)曲線擬合工作的必然選擇。雖然計(jì)算機(jī)語言或曲線擬合軟件在實(shí)驗(yàn)數(shù)據(jù)的曲線擬合過程中得到了廣泛運(yùn)用,但對其具體操作知識的系統(tǒng)總結(jié)卻不全面。本文以半導(dǎo)體熱敏電阻實(shí)驗(yàn)中實(shí)驗(yàn)數(shù)據(jù)的曲線擬合為例,總結(jié)了各種Matlab擬合指令的具體用法。

一、半導(dǎo)體熱敏電阻實(shí)驗(yàn)

半導(dǎo)體材料具有顯著的熱電特性,半導(dǎo)體熱敏電阻的溫度系數(shù)為負(fù)值,近似滿足下式:

二、曲線擬合的理論方法

函數(shù)近似通常采用兩種方法:插值法和擬合法。插值方法要求所求得的近似函數(shù)通過所有數(shù)據(jù)點(diǎn),由于實(shí)驗(yàn)所給出的數(shù)據(jù)本身存在誤差,因此要求插值曲線通過所有的插值點(diǎn)必定會使插值函數(shù)保留這個誤差。擬合方法并不要求擬合曲線必須通過所有的數(shù)據(jù)點(diǎn),只要求擬合的近似函數(shù)能夠反映實(shí)驗(yàn)數(shù)據(jù)的整體趨勢,并使擬合數(shù)據(jù)整體的誤差最小。

2.多項(xiàng)式擬合。曲線擬合中的多項(xiàng)式擬合屬于線性最小二乘問題,關(guān)鍵步驟是求解聯(lián)立線性方程組,具體數(shù)學(xué)理論推導(dǎo)可參看相關(guān)文獻(xiàn)[2]。在實(shí)際物理問題中,這些方程組是無解的,但可以通過數(shù)值計(jì)算方法獲得其近似解。

3.非線性擬合。因?yàn)閿M合函數(shù)是非線性的,所以無法如線性最小二乘法一樣用求函數(shù)極值法來得到擬合參數(shù),而需要在最小二乘法的基礎(chǔ)上采用復(fù)雜的優(yōu)化算法來求解,常用的算法是搜索算法和迭代算法[1]。搜索算法是按一定的規(guī)則選擇若干組參數(shù)值,計(jì)算它們的目標(biāo)函數(shù)值并比較大小,選出使目標(biāo)函數(shù)值最小的參數(shù)值。不同的參數(shù)值選擇規(guī)則構(gòu)成不同的搜索算法。迭代算法的原則是從參數(shù)的一個初始猜測值出發(fā),然后產(chǎn)生一系列的參數(shù)點(diǎn),若這個參數(shù)序列收斂到使目標(biāo)函數(shù)極小的參數(shù)點(diǎn),則認(rèn)為參數(shù)的收斂值就是所求參數(shù)點(diǎn)。

4.擬合方式比較。前面部分介紹的方法可以通過計(jì)算機(jī)語言進(jìn)行編程來實(shí)現(xiàn)。Matlab也內(nèi)置了現(xiàn)成的相關(guān)指令,在使用中無需花費(fèi)時間去編程,只需要按照規(guī)定的格式調(diào)用即可。Matlab曲線擬合工具箱和Origin也集成了進(jìn)行曲線擬合的軟件,將數(shù)據(jù)導(dǎo)入軟件后,可以通過操作界面對擬合過程進(jìn)行設(shè)置。

程序擬合可以實(shí)現(xiàn)軟件擬合的全部功能,相較而言軟件擬合的功能有所限制。在需要進(jìn)行多次重復(fù)擬合的場合,軟件擬合要求對操作界面進(jìn)行多次重復(fù)操作,而程序擬合卻可避免這種重復(fù)操作,從而提高效率。除了處理單純的曲線擬合工作外,擬合程序還可以嵌入復(fù)雜的數(shù)據(jù)處理程序中去發(fā)揮作用。

三、用Matlab指令進(jìn)行曲線擬合

常用的Matlab曲線擬合指令有多項(xiàng)式擬合指令polyfit、非線性擬合指令nlinfit、非線性擬合指令lsqcurvefit、曲線擬合指令fit。下面以半導(dǎo)體熱敏電阻溫度曲線的擬合過程為例來說明這些指令的用法。

半導(dǎo)體熱敏電阻溫度曲線是一個指數(shù)函數(shù),屬于非線性擬合問題,但可以經(jīng)過數(shù)學(xué)推導(dǎo)化簡成線性擬合問題,并利用多項(xiàng)式擬合指令polyfit處理。本文的目的是介紹實(shí)驗(yàn)數(shù)據(jù)曲線擬合的普遍方法,所以仍將其按非線性擬合問題來處理,下面具體給出lsqcurvefit、nlinfit和fit三個指令的擬合過程。

1.外部數(shù)據(jù)的輸入。首先需要讀取實(shí)驗(yàn)儀器生成的Excel數(shù)據(jù)文件并保存到Matlab的變量中,具體程序如下:

t=xlsread('data.xls',1,'A2:A62');

V=xlsread('data.xls',1,'B2:B62');

T=t+273.16;? %調(diào)整溫度單位。

R=V*e-3/(20*e-6);? ?%由電壓計(jì)算電阻。

2.指令lsqcurvefit擬合。指令lsqcurvefit屬于Matlab的優(yōu)化工具箱,利用最小二乘法,從初始猜測值開始求參數(shù),將原始數(shù)據(jù)點(diǎn)擬合到非線性函數(shù),具體格式為:x=lsqcurvefit(fun,x0,xdata,ydata),其中:xdata、ydata是原始數(shù)據(jù)點(diǎn);fun(x,xdata)是擬合函數(shù),也就是公式(1);x是擬合函數(shù)系數(shù);x0是系數(shù)初始猜測值,其初始設(shè)置可能會影響結(jié)果。如擬合結(jié)果不理想,可以改變初始值x0后再重新擬合。具體Matlab程序如下:

x0=[2600,1000];

fun=@(x,T)x(1)*exp(x(2)*(1./T-1/300));

x=lsqcurvefit(fun,x0,T,R);

R0=x(1);B=x(2);

disp(['R=',num2str(R0),'*exp(',num2str(B),…

'*(1./T-1/T0))']);

計(jì)算結(jié)果如下:

R=2230.4327*exp(3407.2165*(1/T-1/T0))

擬合曲線和原始數(shù)據(jù)的對比如圖2所示,結(jié)果顯示擬合曲線與原始數(shù)據(jù)完全一致。如果對擬合效果要求較高,可以通過Matlab幫助系統(tǒng),查閱表征擬合效果的具體參數(shù)。

3.指令nlinfit擬合。指令nlinfit屬于Matlab的統(tǒng)計(jì)和機(jī)器學(xué)習(xí)工具箱,采用迭代最小二乘法估算擬合系數(shù)。函數(shù)nlinfit是非線性擬合的通用函數(shù),適用面比函數(shù)lsqcurvefit更廣,例如可以做加權(quán)最小二乘擬合。具體格式如下:

x=nlinfit(xdata,ydata,fun,x0)

與指令lsqcurvefit類似,不同的x0可能會得到不同的結(jié)果。具體Matlab程序如下:

x0=[2000,100];

fun=@(x,T)x(1)*exp(x(2)*(1./T-1/300));

x=nlinfit(T,R,fun,x0);

R0=x(1);B=x(2);

disp(['R=',num2str(R0),'*exp(',num2str(B),…

'*(1/T-1/T0))']);

計(jì)算結(jié)果如下:

R=2230.4327*exp(3407.2165*(1/T-1/T0))

這與指令lsqcurvefit的擬合結(jié)果完全一致。初始值x0設(shè)為[2000,100],初始值的改變沒有影響擬合結(jié)果。

4.指令fit擬合。指令fit屬于Matlab的曲線擬合工具箱,其功能與曲線擬合工具箱軟件cftool類似。具體格式如下:

fitobject=fit(xdata,ydata,afitType)

aFittype=fittype(expression,Name,Value)

其中參數(shù)具體含義可查看Matlab幫助系統(tǒng)。與指令lsqcurvefit和nlinfit不同,指令fit不必設(shè)置擬合系數(shù)初始值。具體Matlab程序如下:

X=fittype('R0*exp(B*(1/T-1/300))',…

'independent','T','coefficients',{'R0','B'});

Y=fit(T,R,X);

disp(['R=',num2str(Y.R0),…

'*exp(',num2str(Y.B),'*(1/T-1/T0))']);

計(jì)算結(jié)果如下:

R=2230.4328*exp(3407.2159*(1/T-1/T0))

擬合結(jié)果與前面兩個指令的擬合結(jié)果幾乎一致。

四、結(jié)論

采用計(jì)算機(jī)數(shù)值計(jì)算方法,可以進(jìn)行高精度、高效率的實(shí)驗(yàn)數(shù)據(jù)曲線擬合工作。本文以半導(dǎo)體熱敏電阻實(shí)驗(yàn)的曲線擬合過程為例,全面總結(jié)了利用Matlab程序進(jìn)行數(shù)據(jù)曲線擬合的基本理論和具體方法。具體介紹三個Matlab指令的使用方法和程序格式。應(yīng)用Matlab程序進(jìn)行曲線擬合,不但可以將數(shù)據(jù)擬合成各種函數(shù),而且便于將其代碼集成到復(fù)雜的實(shí)驗(yàn)數(shù)據(jù)處理程序中去,從而有助于完成高效、精確的實(shí)驗(yàn)數(shù)據(jù)處理工作。

參考文獻(xiàn):

[1]劉金遠(yuǎn),段萍,鄂鵬.計(jì)算物理學(xué)[M].科學(xué)出版社,2012.

[2]彭芳麟.計(jì)算物理基礎(chǔ)[M].北京:高等教育出版社,2010.

Curve Fitting of Temperature Curve of Semiconductor Thermistor Based on Matlab

DONG Qing-rui

(School of Physics and Electronics,Shandong Normal University,Ji'nan,Shandong 250014,China)

Abstract:To find an appropriate curve-fitting method quickly,taking the curve fitting of the temperature curve of a semiconductor thermistor as an example,the basic theory and method of curve fitting using Matlab programs are summarized comprehensively.The program format and operation steps of three non-linear fitting instructions,lsqcurvefit,nlinfit and fit,are demonstrated.These MATLAB instruction programs can effectively deal with various complex curve fitting problems in experimental data processing.

Key words:curve fitting;Matlab;nonlinear fitting;least-square method

猜你喜歡
最小二乘法曲線擬合
葉輪類零件多軸數(shù)控機(jī)床加工的誤差控制與優(yōu)化——基于NURBS曲線擬合優(yōu)化方案
基于曲線擬合的投棄式剖面儀電感量算法
手動求解線性回歸方程的方法和技巧
Matlab曲線擬合工具箱在地基沉降預(yù)測模型中的應(yīng)用
Matlab曲線擬合法在地基沉降預(yù)測中的應(yīng)用
基于曲線擬合的線條狀工具痕跡自動比對方法研究
柳州市| 河南省| 甘孜| 逊克县| 鹰潭市| 浦北县| 醴陵市| 七台河市| 米泉市| 明溪县| 图木舒克市| 高邑县| 资兴市| 隆德县| 会同县| 荆门市| 吴堡县| 新平| 梨树县| 阳东县| 桂阳县| 南阳市| 鄂州市| 云梦县| 固镇县| 梅河口市| 信丰县| 澄迈县| 哈尔滨市| 乌兰察布市| 卓资县| 若尔盖县| 苏尼特右旗| 旅游| 焦作市| 乐亭县| 和平县| 广西| 兴隆县| 平顶山市| 马关县|