




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
膆莄蝿羃肂莃葿螆羈莂蚁羂莇莁螃袄芃莁袆肀腿莀薅袃肅荿蚈肈羁蒈螀袁芀蒇蒀肆膆蒆薂衿肂蒅螄肅肈蒅袇羈莆蒄薆螀节蒃虿羆膈蒂螁蝿肄薁蒁羄羀薀薃螇艿蕿蚅羂芅蕿袇螅膁薈薇肁肇薇虿袄莅薆螂聿芁薅袄袂膇蚄薄肇肃芁蚆袀罿芀螈肆莈艿薈袈芄芈蚀膄膀芇螃羇肆芇袅蝿莅芆薅羅芀莅蚇螈膆莄蝿羃肂莃葿螆羈莂蚁羂莇莁螃袄芃莁袆肀腿莀薅袃肅荿蚈肈羁蒈螀袁芀蒇蒀肆膆蒆薂衿肂蒅螄肅肈蒅袇羈莆蒄薆螀节蒃虿羆膈蒂螁蝿肄薁蒁羄羀薀薃螇艿蕿蚅羂芅蕿袇螅膁薈薇肁肇薇虿袄莅薆螂聿芁薅袄袂膇蚄薄肇肃芁蚆袀罿芀螈肆莈艿薈袈芄芈蚀膄膀芇螃羇肆芇袅蝿莅芆薅羅芀莅蚇螈膆莄蝿羃肂莃葿螆羈莂蚁羂莇莁螃袄芃莁袆肀腿莀薅袃肅荿蚈肈羁蒈螀袁芀蒇蒀肆膆蒆薂衿肂蒅螄肅肈蒅袇羈莆蒄薆螀节蒃虿羆膈蒂螁蝿肄薁蒁羄羀薀薃螇艿蕿蚅羂芅蕿袇螅膁薈薇肁肇薇虿袄莅薆螂聿芁薅袄袂膇蚄薄肇肃芁蚆袀罿芀螈肆莈艿薈袈芄芈蚀膄膀芇螃羇肆芇袅蝿莅芆薅羅芀莅蚇螈膆莄蝿羃肂莃葿螆羈莂蚁羂莇莁螃袄芃莁袆肀腿莀薅袃肅荿蚈肈羁蒈螀袁芀蒇蒀 螇莃蒂螃衿膆莈螂羁莂芄螁肃膄蚃螁袃羇蕿螀羅芃蒅蝿肈肅莁螈螇芁芇螇袀肄薆袆羂艿蒂袅肄肂莈袅螄芈芄袄羆肀蚂袃聿莆薈袂膁腿蒄袁袁莄莀蒈羃膇芆薇肅莂薅薆螅膅蒁薅袇莁蒇薄聿膄莃薃膂肆蚁薂袁节薇薂羄肅蒃薁肆芀荿蚀螆肃芅虿袈芈薄蚈羀肁薀蚇膃莇蒆蚇袂腿莂蚆羅莅芈蚅肇膈薆蚄螇莃蒂螃衿膆莈螂羁莂芄螁肃膄蚃螁袃羇蕿螀羅芃蒅蝿肈肅莁螈螇芁芇螇袀肄薆袆羂艿蒂袅肄肂莈袅螄芈芄袄羆肀蚂袃聿莆薈袂膁腿蒄袁袁莄莀蒈羃膇芆薇肅莂薅薆螅膅蒁薅袇莁蒇薄聿膄莃薃膂肆蚁薂袁节薇薂羄肅蒃薁肆芀荿蚀螆肃芅虿袈芈薄蚈羀肁薀蚇膃莇蒆蚇袂腿莂蚆羅莅芈蚅肇膈薆蚄螇莃蒂螃衿膆莈螂羁莂芄螁肃膄蚃螁袃羇蕿螀羅芃蒅蝿肈肅莁螈螇芁芇螇袀肄薆袆羂艿蒂袅肄肂莈袅螄芈芄袄羆肀蚂袃聿莆薈袂膁腿蒄袁袁莄莀蒈羃膇芆薇肅莂薅薆螅膅蒁薅袇莁蒇薄聿膄莃薃膂肆蚁薂袁节薇薂羄肅蒃薁肆芀荿蚀螆肃芅虿袈芈薄蚈羀肁薀蚇膃莇蒆蚇袂腿莂蚆羅莅芈蚅肇膈薆蚄螇莃蒂螃衿膆莈螂羁莂芄螁肃膄蚃螁袃羇蕿螀羅芃蒅蝿肈肅莁螈螇芁芇螇袀肄薆 蚁芈莇薈螄肁芃薇袆芆腿蚆羈聿蒈蚅蚈袂莄蚅袀肈莀蚄羃羀芆蚃蚂膆膂蚂螅罿蒁蚁袇膄莇螀罿羇芃蝿虿膂膈蝿螁羅蒇螈羄膁蒃螇肆肄荿螆螅艿芅莃袈肂膁莂羀芇蒀莁蚀肀莆蒀螂芆节葿袄肈膈蒈肇袁薆蒇螆膇蒂蒇衿羀莈蒆羁膅芄蒅蚁羈膀蒄螃膃葿薃袅羆莅薂羈膂芁薁蚇羄芇薁袀芀膃薀羂肃蒁蕿蚁芈莇薈螄肁芃薇袆芆腿蚆羈聿蒈蚅蚈袂莄蚅袀肈莀蚄羃羀芆蚃蚂膆膂蚂螅罿蒁蚁袇膄莇螀罿羇芃蝿虿膂膈蝿螁羅蒇螈羄膁蒃螇肆肄荿螆螅艿芅莃袈肂膁莂羀芇蒀莁蚀肀莆蒀螂芆节葿袄肈膈蒈肇袁薆蒇螆膇蒂蒇衿羀莈蒆羁膅芄蒅蚁羈膀蒄螃膃葿薃袅羆莅薂羈膂芁薁蚇羄芇薁袀芀膃薀羂肃蒁蕿蚁芈莇薈螄肁芃薇袆芆腿蚆羈聿蒈蚅蚈袂莄蚅袀肈莀蚄羃羀芆蚃蚂膆膂蚂螅罿蒁蚁袇膄莇螀罿羇芃蝿虿膂膈蝿螁羅蒇螈羄膁蒃螇肆肄荿螆螅艿芅莃袈肂膁莂羀芇蒀莁蚀肀莆蒀螂芆节葿袄肈膈蒈肇袁薆蒇螆膇蒂蒇衿羀莈蒆羁膅芄蒅蚁羈膀蒄螃膃葿薃袅羆莅薂羈膂芁薁蚇羄芇薁袀芀膃薀羂肃蒁蕿蚁芈莇薈螄肁芃薇袆芆腿蚆羈聿蒈蚅蚈袂莄蚅袀肈莀蚄羃羀芆蚃蚂膆膂蚂螅罿蒁 误差理论与数据处理实验指导书编写 盛洪江审核 王君瑞校对 杨 艺北方民族大学电气信息工程学院二八年三月24目 录MATLAB及误差数据处理部分应用程序简介1实验一 双电阻(电容)非线性测量的阻值(容值)估算实验4实验二 应变片灵敏度的标定、估计其非线性误差8附录一 MATLAB操作入门21附录二 非线性最小二乘处理程序清单23MATLAB及误差数据处理部分应用程序简介MATLAB(Matrix Laboratory的缩写)是Mathworks公司开发的一种集计算、图形可视化和编辑功能于一体的功能强大、操作简便、易于扩充的语言,是目前国际上公认的优秀的数学应用软件之一。MATLAB以矩阵作为基本编程单元,它提供了各种矩阵的运算与操作,并有较强的绘图功能,有良好的用户界面和帮助功能。MATLAB系统的强大功能是由其核心(语言系统、开发环境、图形系统、数学函数库、应用程序接口等)和工具箱(符号计算、图象处理、优化、统计和控制等工具箱)两大部分构成。由于MATLAB功能的不断扩展,现在的MATLAB已不仅仅局限于现代控制系统分析和综合应用,现已是一种包罗众多学科的功能强大的“技术计算语言(The Language of Technical Computing)”基于MATLAB的强大的功能,笔者在该平台上将教材误差理论与数据处理涉及的数据处理方法编制成MATLAB程序软件包,本实验就是应用其中的两个程序完成实验设计的。考虑实验课时的要求,本实验指导书暂安排两个实验,每个实验3小时。内容分别是:实验一:双电阻(电容)非线性测量的阻值(容值)估算测出双电阻单个测量、串联及并联测量的测量值。将测量值输入四组非线性方程组输入界面,在非线性最小二乘处理界面调用非线性组合测量处理程序给出电阻的估算值及其精度,并与真实值作出比对。实验二:应变片灵敏度的标定、估计其非线性误差在称重台获取应变片经惠斯通电桥的电压值,应用一元线性回归分析原理编制MATLAB程序估算出应变片的灵敏度,并进行方差分析及显著性检验。由于编者水平有限,指导书中肯定有许多错误的地方,希望使用本册子的同学们指出来,帮助我进步。 电气自动化系:盛洪江 二七年二月一日实验一 双电阻(电容)非线性测量的阻值(容值)估算(验证性实验)一、实验目的 l. 通过实验验证标定的电阻阻值及精度是否准确。 2. 熟悉非线性组合测量的方法。3. 学会使用非线性二乘处理程序的使用。二、实验仪器与器材 1. 计算机一台,内装MATLAB软件5.3及其以上版本 2. 精密电阻或电容若干 3. 精密电阻或电容测量仪一台三、实验基本原理在精密测试工作中,组合测量占有很重要的地位。例如,作为标准量的多面棱体、度盘、砝码、电容器及其他标准器的检定等,为了减小随机误差的影响,提高测量精度,可采用组合测量的方法。所谓组合测量是指通过测量待测参数的各种组合量(一般是等精度测量),然后求得这些测量数据进行处理,从而求得待测参数的估计量,并给出其精度估计。通常组合测量是用最小二乘法原理进行处理的,这是最小二乘法在精密测试中的重要应用。在一般情况下,函数 ,(i=1,2,n)为非线性函数,测量的误差方程为:下面对其进行线性化:取为的近似值,即只要求得偏差则可求得估计量。将非线性方程在平衡点()处进行Taylor展开: i=1,2,,n令,误差方程由非线性转化为线性的:对于等精度测量有准则函数:对于不等精度测量有准则函数:其余按线性最小二乘法原理处理。下面以双电阻的非线性测量为准进行说明:本实验应用到的双电阻的非线性测量以估算其值及精度,相应的非线性方程是:其中分别是两电阻单个测量、串联及并联测量的测量值。将测量值输入四组非线性方程组输入界面,按非线性最小二乘处理界面Estimate按钮调用非线性组合测量处理程序给出电阻的估算值及其精度,并做出比对。四、实验内容及步骤内容: 1. 二电阻的非线性组合测量。2. 理解非线性方程组线性化过程、读懂MATLAB程序并上机解算出结果。3. 给出被测电阻的精度并进行比对。步骤:1. 应用高精度电阻测量仪测量二电阻单值、串联及并联值。2. 上机操作:(1)打开MATLAB程序;(2)输入命令LinearOrNonlinearParamsEstimate,打开线性和非线性参数估计的总界面;(3)选择单选按钮NonlinearLS,打开非线性最小二乘处理界面:(4)输入非线性方程数目4,按Estimate打开四组非线性方程组输入界面:输入相应的非线性测量方程及测量值,按OK按钮,关闭该界面,回到非线性最小二乘处理界面,该界面将给出非线性组合测量结果。3.记住程序给出的精度是68.3%置信度下的精度,即方差,将其转化成99.73%置信度下的相对误差,方可与电阻标定的精度进行比较,即:五、实验要求1.预习第四章第三、四、五节的内容;2.记录五次测量二电阻非线性组合测量的测量值,填入下表:测量次数电阻一阻值电阻二阻值串联阻值并联阻值123453.实验结果误差分析,填入下表:测量次数电阻一估算值电阻二估算值电阻一方差电阻二方差12345综合误差4.给出二电阻的总估算值:电阻一: 欧姆电阻二: 欧姆5.给出电阻的比对结果:电阻一的估算精度是: ,电阻一的标定精度是: ;电阻二的估算精度是: ,电阻二的标定精度是: ;注:给出综合误差可手动计算,也可使用笔者编写的程序BasicProcessGUI.m计算之。六、实验思考题1.为什么程序给出的精度是68.3%置信度下的精度?2.本实验是双电阻的非线性组合测量,共有四个方程,请问三电阻的非线性组合测量可列出多少个方程?四电阻的呢?实验二 应变片灵敏度的标定、估计其非线性误差(综合性实验)一、实验目的 l. 通过实验掌握传感器灵敏度标定的方法。2. 熟悉一元线性回归原理、方差分析及显著性检验。3. 编制MATLAB程序实现一元线性回归。二、实验仪器与器材 1. 计算机一台,内装MATLAB软件5.3及其以上版本 2. 信号检测与处理实验室提供的DRCZ-A型称重台一台及DRVI虚拟仪器平台一套 3. 砝码若干三、实验基本原理所谓一元线性回归,即是指通过试验,分析所得数据,找出两者之间关系的经验公式。设因变量y与自变量x之间有如下的关系:式中表示随机因素对的影响的总和,而且是一组相互独立、并服从同一正态分布的随机变量,自变量x是一般变量,可以精确测量。这样变量y是服从的随机变量。现在我们应用最小二乘原理确定的经验公式,即求得的估计量。对每一个可以精确测量的,可以确定一个回归值,实测值与之间的差值即有残余误差:令 误差方程为: 应用最小二乘原理,可得 因 (1-5)这样 式中: 下面给出一元线性回归方程的方差分析及显著性检验。已知观测数据对,应用最小二乘法均可拟合出一条直线,但拟合得好与坏,需要应用回归方程的显著检验来回答。而显著性检验是数理统计的范畴,该名词是与方差分析分不开的。所谓方差分析就是对N个观测值与其算术平均值之差的平方和进行分析,将对N个观测值的诸个影响因素从数量上区别开(因素分析法),然后应用F检验法对所求回归方程进行显著性检验。是观测值y与算术平均值之差的平方和,称为总的离差平方和。是回归值与算术平均值之差的平方和,称之为回归平方和。是观测值与回归值之差的平方和,称之为残余平方和。这些数值在回归直线上的表示如图所示:回归平方和U反映了y的总的离差平方和中由于x、y的线性关系而引起的y的变化部分,是考虑了x、y的线性关系在总的离差平方和中所占的部分,使回归因素部分。残余平方和Q反映了除了x、y线性关系影响之外的一切因素(包括测量误差、x对y的非线性影响以及其他未加控制的因素)对y的总的离差平方和的影响部分。因 各个平方和都组成一个分布,S是由N项组成的,但有一个约束条件,即,自由度是N-1;U受控于两个变量,两变量有一个约束条件,自由度是1;又,则Q的自由度为N-1-1=N-2。现在我们已经知道总的离差平方和S,回归平方和U及残余平方和Q都是分布,且它们的自由度分别是:。这样我们就可以用F分布来看U和Q在S中所占的比例是否较大,即是否显著的影响,如愈大,说明U相对Q来讲占的比例大,即所求回归是显性的。这当然是在一定的显著水平上来说的,一般取0.10,0.05,0.01等几种数值,对应概率是90%,95%,99%,当时,就说回归方程99%的概率是显著的、成立的,有三种可能性:,回归在=0.01水平上显著,是高显著的。,回归在=0.05水平上显著,是显著的。,回归在=0.10水平上显著,是一般显著。当,则说明回归是不显著的。残余方差为: 残余标准差为: 信号检测与处理实验室提供的DRCZ-A型称重台由应变式力传感器、底座、支架和托盘构成。其中,力传感器由测力环和4个应变片构成的全桥电路组成。当物料加到载物台后,4个应变片会发生变形,通过电桥放大后产生电压输出。图12 称重实验台结构示意图为提高测量精度,称重实验台使用前可用标准砝码对其进行标定,即得到其回归方程,也即得到灵敏度及零位误差:四、实验内容及步骤实验思路: 1.利用砝码真值及电桥输出值建立下列矩阵:利用关系式:,直接求出待估量。利用该法需进行矩阵求逆的运算,这正是MATLAB的长处,可设计一元线性回归程序解算出应变片的灵敏度。2.利用公式:式中:这些都是些简单的算术运算,应用MATLAB进行运算也是容易的,可直接在MATLAB的命令行下完成,也可编程完成,不过相对上法可能程序要长些。步骤: 1.实验前,学生完成上述某一法MATLAB程序编写,并经过目视检查通过。 2.在DRCZ-A型称重台上获取某一砝码下的电桥的输出电压值,即测量值。(1)关闭DRDAQ-USB型数据采集仪电源,将需使用的传感器连接到采集仪的数据采集通道上。(2)开启DRDAQ-USB型数据采集仪电源。(3)运行DRVI主程序,点击DRVI快捷工具条上的“联机注册”图标,选择其中的“DRVI采集仪主卡检测”或“网络在线注册”进行软件注册。(4)在DRVI打开称重台及其标定(服务器)VBScript脚本,建立称重台仪器面板,依据图中步骤可得到电桥输出电压,即面板中当前转换值,在称重台上放置不同的砝码,即得到不同的电桥输出电压值。图13 称重台仪器面板3.取得十对测量数据,并按下述格式记录之。实验提示:1.编程时,建议考虑设计数据录入及结果输出界面。2.程序调试最好在medit环境下进行,运算结果所见即所得。五、参考程序及程序界面1.参考程序:1、AnOrderRegressionEquation.m:一元线性回归参数估计处理回调函数function AnOrderRegressionEquation()%AnOrderRegressionEquation call OneOrderRegressionAnalysis%get the regression function and %simple analysis result %-%get the data string.hX=findobj(tag,X);hY=findobj(tag,Y);XString=get(hX,String);YString=get(hY,String);%-%kick out the item which dont relate the above.h=findobj(Style,edit);houtXY=setdiff(h,hX;hY);set(houtXY,String,);hcheckbox=findobj(Style,checkbox);set(hcheckbox,Value,0);%-%get the input and output variable and their value.Xl=length(XString);Yl=length(YString);for ii=1:Xl if XString(ii)= FirstPosition=ii+1; endendif XString(end)=; x=eval(XString(FirstPosition:end-1);else x=eval(XString(FirstPosition:end);endx=changetocolumn(x);XStr=XString(1:FirstPosition-2);for ii=1:Yl if YString(ii)= FirstPosition=ii+1; endendif YString(end)=; y=eval(YString(FirstPosition:end-1);else y=eval(YString(FirstPosition:end);endYStr=YString(1:FirstPosition-2);r,c=size(y);if r=1 y=changetocolumn(y); if (c=length(x) errordlg(InVariable and OutVariable should be equal.); endelse if (r=length(x) if c=length(x) y=y; else errordlg(OutVariable isnt right!); return; end endend%-%construct the string function.hdir=findobj(String,DirecFlag);DirVal=get(hdir,Value);if DirVal b=OneOrderRegressionAnalysisExt(x,y);else b=OneOrderRegressionAnalysis(x,y);endif b(2)=0 Result=YStr = num2str(b(1) + num2str(b(2);else Result=YStr = num2str(b(1) num2str(b(2);endResult=Result * XStr;ResidualDeviationStr=num2str(b(3) (ResidualDeviation);hfun=findobj(tag,RegFunction);hres=findobj(tag,SimpAnalysis);set(hfun,String,Result);set(hres,String,ResidualDeviationStr);%-%change the row or column vector to the column vector;function y=changetocolumn(x)r,c=size(x);if r=1 y=x;else y=x;end2、AnOrderRegressionAnalysis.m:一元线性回归分析处理回调函数function AnOrderRegressionAnalysis()%AnOrderRegressionAnalysis call OneOrderRegressionAnalysis%get regression analysis result %-%get the data string.hX=findobj(tag,X);hY=findobj(tag,Y);XString=get(hX,String);YString=get(hY,String);%-%kick out the item which dont relate the above.hfun=findobj(tag,RegFunction);hres=findobj(tag,SimpAnalysis);set(hfun,String,);set(hres,String,);%-%get the input and output variable and their value.Xl=length(XString);Yl=length(YString);for ii=1:Xl if XString(ii)= FirstPosition=ii+1; endendif XString(end)=; x=eval(XString(FirstPosition:end-1);else x=eval(XString(FirstPosition:end);endx=changetocolumn(x);XStr=XString(1:FirstPosition-2);for ii=1:Yl if YString(ii)= FirstPosition=ii+1; endendif YString(end)=; y=eval(YString(FirstPosition:end-1);else y=eval(YString(FirstPosition:end);endYStr=YString(1:FirstPosition-2);r,c=size(y);if r=1 y=changetocolumn(y); if (c=length(x) errordlg(InVariable and OutVariable should be equal.); endelse if (r=length(x) if c=length(x) y=y; else errordlg(OutVariable isnt right!); return; end endend%-%construct the string function.hdir=findobj(String,DirecFlag);DirVal=get(hdir,Value);if DirVal b S U Q=OneOrderRegressionAnalysisExt(x,y);else b S U Q=OneOrderRegressionAnalysis(x,y);end%-%get the notable level.hnote=findobj(tag,NotableLevel,style,edit);alphastr=get(hnote,String);if isempty(alphastr) errordlg(Input the notable level,please.); return;else alpha=str2num(alphastr);end%determine the freedom.N=length(x);N,m=size(y);h1=findobj(Tag,TatalError);h2=findobj(Tag,NonliError);h3=findobj(Tag,RegError);hUtoQ=findobj(String,UtoQ Greater?);hUtoE=findobj(String,UtoE Greater?);hLtoE=findobj(String,LtoE Greater?);%nonrepeating status.if length(Q)=1 nuU=1; nuQ=N-2; nuS=nuU+nuQ; F=(U/nuU)/(Q/nuQ); Falpha=finv(1-alpha,nuU,nuQ); if F=Falpha set(hUtoQ,value,1); else set(hUtoQ,value,0); end set(h1,String,num2str(S); set(h2,String,num2str(Q); set(h3,String,num2str(U); %repeating status. else nuE=N*(m-1); nuL=N-2; nuQ=nuE+nuL; nuU=1; nuS=N*m-1; QE=Q(2);QL=Q(1); Q=Q(2)+Q(1); F=(U/nuU)/(QE/nuE); F1=(QL/nuL)/(QE/nuE); F2=(U/nuU)/(Q/nuQ); Falpha=finv(1-alpha,nuU,nuE); F1alpha=finv(1-alpha,nuL,nuE); F2alpha=finv(1-alpha,nuU,nuQ); set(h1,String,num2str(S); set(h2,String,num2str(QL); %stuff the result. set(h3,String,num2str(U); if F=Falpha set(hUtoE,value,1); else set(hUtoE,value,0); end if F1=F1alpha set(hLtoE,Value,1) else set(hLtoE,Value,0); end if F2=F2alpha set(hUtoQ,Value,1); else set(hUtoQ,Value,0); endend%-%change the row or column vector to the column vector;function y=changetocolumn(x)r,c=size(x);if r=1 y=x;else y=x;end2.程序界面:(1)回归分析处理程序总界面:(2)一元线性回归分析分界面:六、实验要求1.预习第五章第二节有关一元线性回归分析方面的内容2.测量数据记录格式:测量次数砝码重量(g)当前转换值(电桥输出mV)123456789103.写出回归方程:y= x+ 。离差平方和S= ;回归平方和U= ;残差平方和Q= ;检验结果是:回归在= 水平上显著,是 显著的。七、实验思考题1.传感器原理与检测技术实验指导书上提供的实验三称重实验台应用实验对应变片的标定方法采用二点进行的,本实验采用一元线性回归的方法,为什么?2. 本实验考虑砝码是精确测量的,如果有误差,怎么办?附录一 MATLAB操作入门一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。具有FORTRAN和C等高级语言知识的读者可能已经注意到,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用FORTRAN和C这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用MATLAB编写以上两个小程序的具体过程。MATLAB求解下列方程,并求解矩阵A的特征值。Ax=b只需在MATLAB命令行中输出A=32 13 45 67;23 79 85 12;43 23 54 65;98 34 71 35;b=1;2;3;4;x=Ab;方程的解就求得了。可见,MATLAB的程序极其简短。更为难能可贵的是,MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。9)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。10)学习MATLAB软件最好的教材是它的帮助文件。只要硬盘容量够大,极力推荐安装完整的帮助文档,即使你对阅读英文不是很有信心,但我相信其足够的实例还是能让你对要查询的命令函数有一定的了解的。有两种方法取得帮助信息:一是直接在命令窗口输入help 函数名;如help imread,会得到相应函数的有关帮助信息。二是在帮助窗口中查找相应信息。不同版本的帮助菜单界面有所不同,这只能依赖于你自己去熟悉了。但总体上都和windows的界面具有相似的处理过程。附录二 非线性最小二乘处理程序清单1、ParamEstimating.m:某个数目的非线性方程的输入界面function ParamEstimating%This is preface of the nonlinear equation;the input parameter n is%the number of the equations.The output parameter equations is the %string of the nonlinear equations.hn=findobj(Tag,Edit1);n=str2num(get(hn,String);if isempty(n) errordlg(Input the number of the nonlinear equations.); return;endh0 = figure(Units,points, .Color,0.8 0.8 0.8, .Position,385 50 338 57+42+n*37+14, . Tag,Fig1, . WindowStyle,modal,.ToolBar,none);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0.8 0.8 0.8, .FontSize,14, .ListboxTop,0, .Position,71 57+9+n*37+14 230 20, .String,非线性方程的输入, .Style,text, . Tag,StaticText1);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0.8 0.8 0.8, .ListboxTop,0, .Position,20 47+14 59 14, . String,Initiao Value:, .Style,text .);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,1 1 1, .ListboxTop,0, . Position,102 47+14 204 14, . HorizontalAlignment,left,. ForegroundColor,0 0 1, . Style,edit, .Tag,taginitial);for i=1:n tempstr=num2str(n+1-i); equationstring=equation tempstr :; tagstring=tag,tempstr;h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0.8 0.8 0.8, .ListboxTop,0, .Position,20 47+(i)*37+14 59 14, . String,equationstring, .Style,text .);h1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,1 1 1, .ListboxTop,0, . Position,102 47+(i)*37+14 204 14, . HorizontalAlignment,left,. ForegroundColor,0 0 1, . Style,edit, .Tag,tagstring);endh1 = uicontrol(Parent,h0, .Units,points, .BackgroundColor,0.9 0.9 0.8, .ListboxTop,0, . Position,148 21 62 17, . String,OK, . CallBack,ProcessData,. Tag,Pushbutton1);2、ProcessData.m:读取界面文本信息、进行非线性方程的线性化并最小二乘处理的回调函数function ProcessDatahn=findobj(Tag,Edit1);n=str2num(get(hn,String);if isempty(n) errordlg(Input the number of the nonlinear equations.); return;endhinp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模型制作工劳动纪律考核试卷及答案
- 声学计量员岗位职业健康及安全技术规程
- 分割协议书怎么写
- 锻压模具工轮岗适应性考核试卷及答案
- 制冷空调设备装配工持续学习与知识更新考核试卷及答案
- 隧道工岗位责任履行考核试卷及答案
- 水泥生产中控员岗位安全技术规程
- 2025蚌埠市劳动合同范本
- 益生菌知识讲座课件
- 林芝2026届八年级数学第一学期期末学业质量监测试题含解析
- XX园项目销售手册
- 锅炉工安全培训知识课件
- GB 46031-2025可燃粉尘工艺系统防爆技术规范
- 消化内科护理进修汇报
- 人类辅助生殖技术质量监测与评价规范
- 青年上香行为的社会文化动机与影响研究
- 2024年中国建设银行招聘笔试真题
- 《多相催化反应原理》课件
- 灌注桩施工的合同范本
- 当代世界经济心得体会
- 2024版人教版八年级上册英语单词表(含音标完整版)
评论
0/150
提交评论