欢迎来到千学网!
您现在的位置:首页 > 心得体会 > 其他心得体会

matlab实验心得体会

时间:2023-03-10 08:34:32 其他心得体会 收藏本文 下载本文

这里小编给大家分享一些matlab实验心得体会,本文共18篇,方便大家学习。

matlab实验心得体会

篇1:matlab实验心得体会

matlab实验心得体会

这个就是我自己做出来的,发现用soundsc听出来还行,但是用wavwrite就变的很难听。

后来发现PB写的很好,而且还能够把前面一段没有噪音的部分给保存下来,我就看了他的代码,有几点体会:

1.将代码写在.m文件里,这样只需要该文件里的就可以而不必每次都去敲命令;

2.PB对于vector使用的'比较熟,我一开始也想到能不能只将后面一段由噪声的给滤掉而保留以前的,但是没想到什么方法,看了PB的代码发现,他对于vector了解的比较深刻,我上面的想法最后只使用一句代码就搞定了

3.对于噪声频率,一定要选准确,PB对每一段噪声只使用的一个频率,就将噪声滤干净了,我用了每段噪声附近的几个波形还没有得到理想波形,最后我发现我选的中心频率和PB的只相差10~25赫兹,所以一定要精确,后来WH又试了一下,只发现改变5HZ的频率都不行

4.加入团队以来,尤其是加入种子班之后就一直告诫自己要时刻抱着一个学习的心态,对于任务不要只是敷衍,完成就好,而是自己一定要从中学到东西,而且在这个过程中一定要逐步掌握自己的学习方法,但是就是这个Matlab,我就是在敷衍了事,所以没有什么事情是可以敷衍的,学习发生在每时每刻,不能因为这是必上的课程而自己没有兴趣就蒙混过关,应该利用这个机会锻炼自己,积极起来,改变自己懒惰的弱点。

PS:附上修改后的代码

%get the samples rate and vector of the wave

[xx, fs] = wavread('SunshineSquare');

xx = xx';

specgram(xx, [], fs);

%^get the A from the frequencies of the noises

fnoise = [0 1575 3150 4725];

ww = 2*pi*fnoise/fs;

A = -2*cos(ww);

%seperate the wave based on the tone “du”

leng = length(xx);

du = floor((7.749/10.791)*leng);

%determine the h[n] of correspond noise

hh = [1 A(1) 1];

for i = 2:4

hh1 = [1 A(i) 1];

hh = conv(hh, hh1);

end

%filter the noise

yy = filter(hh, 1, xx);

%delete the tone “du”

yy(du - 65 : du + 65) = 0;

du = floor(10.751/10.791*leng);

yy(du - 100 : du + 80) = 0;

figure(2);

specgram(yy, [], fs);

wavwrite(yy,fs,32,'filter1');

%replace the wave which has been filtered with the good part

du = floor((7.749/10.791)*leng);

yy(1:du)=xx(1:du);

%delete the tone “du”

yy(du - 65 : du + 65) = 0;

du = floor(10.751/10.791*leng);

yy(du - 100 : du + 80) = 0;

%paint the picture and play it

figure(3);

specgram(yy, [], fs);

soundsc(yy,fs);

wavwrite(yy,fs,32,'filter2');

篇2:MatLab实习心得体会

MatLab实习心得体会

我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这里时我内心充满了激动和喜悦,对这个有着辉煌成绩的科研单位充满了期待。到了这里没多久我就参加培训中心组织的入院教育,对研究院的辉煌过去有了更深刻的了解,那时我就下定决心在研究院好好实习,多学习一些现场经验,为以后的工作打下良好的基础。

一个月的入院培训结束后,经过自己申请和中心安排我被分到了地震资料处理一室,实习期间地震一室的副主任陈志德是我的现场导师,陈主任有着丰富的理论知识和现场经验,能够成为他的学生我感到非常的高兴。最初他把我分到了高分辨率处理解释项目组,工作内容主要是跟着项目组成员用landmark做一些解释性的工作,期间我跟着张晶师傅学习到了如何加载地震数据和测井数据;如何应用测井数据做了合成地震记录,另外我还做了一些地层解释方面的工作。landmark实习大概进行了三个多月,从中我学习到了地震解释的一些基本流程,虽然以后从事的是地震资料处理方面的工作,但有解释方面的实习经历对于提高自己的能力也是很有好处的。

十二月份研究院举行了硕士研究生开题汇报,现场导师陈志德针对大庆地区扶扬油层中浅层高频噪声干扰严重的现状给我定出了小波阈值去噪的论文题目,并且小波变换也是我学校导师的研究方向。他根据我的研究方向给我的论文制定了如下三个目标:

1. 小波分解压制单频噪音

应用matlab设计一个含有随机噪音的一维正演模型,采用小波分解的方法压制噪音,最大程度的.保留有效信号。

2. 小波分解压制随机噪音

应用matlab 设计一个含有随机噪音的二维正演模型,并利用小波变换阈值方法压制噪音,然后对软、硬阈值去噪方法进行比较,最后得出结论。

3. 对实际地震记录的噪音压制

在对理论模型进行噪音压制的基础上,对实际的二维数据进行了噪音压制,对比分析噪音压制前后的结果。

经过这一年半的实习我基本上达到了上述目标,完成了论文的预期效果。论文中编制的程序加以优化后就可以在实际生产上进行应用。

下面我简单谈一下我论文的具体实现过程:

我首先做了两个正演模型:一个为楔状砂体正演模型,另外一个为砂泥岩透镜体正演模型。模型的生成均是以褶积理论为基础的,用标准雷克子波与给定反射系数进行褶积,最后得到合成记录。合成记录生成后我又在其上加上了均值为零的随机分布的高频白噪声,如何去掉这些噪声就是本次论文的重点。我采用的是小波阈值去噪的方法,该方法的理论基础为:属于besov空间的信号在小波域内其能量主要集中在有限的几个系数中,而噪声的能量却分布于整个小波小波域内,因此经过小波变换后,信号的小波变换系数大于噪声的小波变换系数,于是可以找到一个合适的数λ作为阈值。当小波变换系数w小于该阈值时,认为这是的w主要时由噪声引起的;当w大于该阈值时,认为这是的w主要是由信号引起的,从而实现信噪分离。在论文研究过程中对于小波基的选择、尺度参数的选择和阈值的选择都是经过了反复试验确定的,目的就是使论文能达到最好的效果,我也希望这次论文的试验工作能给从事小波去噪研究的人提供一些帮助。

除了完成自己的硕士论文之外,我还参与了科室的其他项目,从最初的用蓝马做地震合成记录到后来的用双狐软件画出产能的饼状图和油气水含量的柱状图,再到后来的用matlab画出野外地表的高程图。每次这样的工作经历都让我收获很多,使我受益匪浅。

篇3:matlab学习心得体会

matlab中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。他提供了一组绘制二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。matlab内部还包含丰富的数学函数和数据类型,使用方便且功能非常强大。

本学期通过对matlab的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了matlab的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用matlab,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。

matlab是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。

篇4:matlab学习心得体会

这是我在学习的过程中的一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。

1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的io是必须看的,因为任何一个程序都需要这几个基本的块。

2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的.时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。

3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。切记!!!

4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。

5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。

篇5:matlab学习心得体会

学习matlab是听说它是一个功能强大的数学软件,但是正被微积分的计算缠身,听说有一个高级的计算器当然高兴,以后可以偷懒了,当然现在不能偷懒。听说关于自动化的计算特别复杂,如果有一种软件能帮忙解题,那是一种极大的解脱,有益于缩短研究时间。目前我只知道有三种数学软件,都是国外的,没有国内的,差距挺大的。matlab学起来挺顺手的,比c语言简单。但是深入学习的时候却困难重重,因为很多知识都没有学习,就算知道那些函数,也没有什么用处。老师布置的作业难度大,写一篇实验,大一什么都不会,写一篇这种论文谈何容易。最多也就会一些数值计算、符号计算、简单绘图,根本不会什么实验。

学习matlab体会最多的是这个软件的功能强大,好多数学题都被轻易的解出。但是有一点遗憾,不知是我不会用,还是它没个功能,已知空间的电荷分布,求空间的电场分布。其中电场分布是无法用函数表达式表示。我知道计算机肯定可以实现,但是这个软件能不能实现就不知道了,我看过许多资料,但是在这方面没有提到相关信息。

总之,这个软件功能强大,不知什么时候国内才有类似的软件。

篇6:matlab实训心得体会

我从中国石油大学(北京)来到大庆油田勘探开发研究院实习,刚刚来到这里时我内心充满了激动和喜悦,对这个有着辉煌成绩的科研单位充满了期待。到了这里没多久我就参加培训中心组织的入院教育,对研究院的辉煌过去有了更深刻的了解,那时我就下定决心在研究院好好实习,多学习一些现场经验,为以后的工作打下良好的基矗

一个月的入院培训结束后,经过自己申请和中心安排我被分到了地震资料处理一室,实习期间地震一室的副主任陈志德是我的现场导师,陈主任有着丰富的理论知识和现场经验,能够成为他的学生我感到非常的高兴。最初他把我分到了高分辨率处理解释项目组,工作内容主要是跟着项目组成员用landmark做一些解释性的工作,期间我跟着张晶师傅学习到了如何加载地震数据和测井数据;如何应用测井数据做了合成地震记录,另外我还做了一些地层解释方面的工作。landmark实习大概进行了三个多月,从中我学习到了地震解释的一些基本流程,虽然以后从事的是地震资料处理方面的工作,但有解释方面的实习经历对于提高自己的能力也是很有好处的。

十二月份研究院举行了硕士研究生开题汇报,现场导师陈志德针对大庆地区扶扬油层中浅层高频噪声干扰严重的现状给我定出了小波阈值去噪的论文题目,并且小波变换也是我学校导师的研究方向。他根据我的研究方向给我的论文制定了如下三个目标:

1. 小波分解压制单频噪音

应用matlab设计一个含有随机噪音的一维正演模型,采用小波分解的方法压制噪音,最大程度的保留有效信号。

2. 小波分解压制随机噪音

应用matlab 设计一个含有随机噪音的二维正演模型,并利用小波变换阈值方法压制噪音,然后对软、硬阈值去噪方法进行比较,最后得出结论。

3. 对实际地震记录的噪音压制

在对理论模型进行噪音压制的基础上,对实际的二维数据进行了噪音压制,对比分析噪音压制前后的结果。

经过这一年半的实习我基本上达到了上述目标,完成了论文的预期效果。论文中编制的程序加以优化后就可以在实际生产上进行应用。

下面我简单谈一下我论文的具体实现过程:

我首先做了两个正演模型:一个为楔状砂体正演模型,另外一个为砂泥岩透镜体正演模型。模型的生成均是以褶积理论为基础的,用标准雷克子波与给定反射系数进行褶积,最后得到合成记录。合成记录生成后我又在其上加上了均值为零的随机分布的高频白噪声,如何去掉这些噪声就是本次论文的重点。我采用的是小波阈值去噪的方法,该方法的理论基础为:属于besov空间的信号在小波域内其能量主要集中在有限的几个系数中,而噪声的能量却分布于整个小波小波域内,因此经过小波变换后,信号的小波变换系数大于噪声的小波变换系数,于是可以找到一个合适的数λ作为阈值。当小波变换系数w小于该阈值时,认为这是的w主要时由噪声引起的;当w大于该阈值时,认为这是的w主要是由信号引起的,从而实现信噪分离。在论文研究过程中对于小波基的选择、尺度参数的选择和阈值的选择都是经过了反复试验确定的,目的就是使论文能达到最好的效果,我也希望这次论文的试验工作能给从事小波去噪研究的人提供一些帮助。

除了完成自己的硕士论文之外,我还参与了科室的其他项目,从最初的用蓝马做地震合成记录到后来的用双狐软件画出产能的饼状图和油气水含量的柱状图,再到后来的用matlab画出野外地表的高程图。每次这样的工作经历都让我收获很多,使我受益匪浅。

时间过的真快,做为一名进站的实习研究生,我来到研究院实习也快圆满地结束了,在这里我学到了很多实际生产上的东西,但学到最多是研究员人身上那种对科研的一丝不苟和执着追求。这段实习经历是我一生中最宝贵的财富,无论今后我走到哪里,我都不会忘了在研究院的这段经历。在这里我非常感谢大庆油田勘探开发研究院能给我这次实习机会,另外我也要感谢培训中心易老师和陈老师的真诚付出,你们为我们组织了很多活动,进行了很多培训,使我们在这里实习感觉就像生活在一个大集体中。我还要感谢我的实习单位地震一室,地震一室的领导为我们的实习创造了很好的条件。刚刚来到科室,科室领导就为我们提供了电脑,给我们的论文工作提供了硬件支持。不仅如此,科室领导还对我们的生活方面予以关心,经常给我们发一些生活上的补助,使我的内心充满了温暖。最后我要真诚地感谢在我实习期间所有帮助过我的人,谢谢你们。同时我也要祝研究院的明天更加美好。

篇7:matlab实训心得体会

自己刚刚接触matlab有半个学期的时间,说实话我现在对MATLAB还是摸不着头脑,一方面是自己接触的时间太短,另一方面,就是自己在上机方面投入的时间有限,实践比较少。现在,我对MATLAB的印象仅仅在解决习题和绘制图形上,但是我很喜欢MATLAB的简单的语法,易于绘制图形,编程也非常容易, 并且具有功能强大的开放式的toolbox。 因此,尽管我一直没有这方面的应用,但是我还是对 它非常感兴趣,自己正打算暑假好好研究研究MATLAB。下面是我学习MATLAB在理论和实践方面的一点心得与体会,可能有些地方自己理解的不是很正确,但是随着学习的深入,我想我可以发现自己的错误所在。

首先我想说的是,在理论方面,在学习MATLAB过程中,我感觉到它和c语言有许多相似之处,他有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数学运算。但是MATLAB跟其他语言也有着很大的不同。现在用的比较多的编程语言,除了MATLAB就应该是c、c++、VHDL,VB和Delphi也接触过,如果自己抱着“把其他语言的思想运用在MATLAB里面”的话,那么我想,即使程序运行不出错,也很难把握MATLAB的精髓,也就很难发挥MATLAB的作用了。 众所周知MATLAB是一个基于矩阵运算的软件,但是,真正在运用的时候,特别是在编程的时候,许多人往往没有注意到这个问题。在使用MATLAB时,受到了其他编程习惯的`影响,特别是经常使用的C语言。因此,在MATLAB编程时,for循环(包括while循环)到处都是。.这不仅是没有发挥MATLAB所长,还浪费了宝贵的时间。我这里想说的一点是,往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++、C的思想。

MATLAB博大精深,涉及的内容很多,所以,我认为不要试图掌握MATLAB的每一个功能,熟悉和你专业最相关的部分就可以了,这也是老师在课堂上经常说的。学MATLAB并不难,难的是学会怎么用,所以经常上机实践是很必要的。我自己感觉学习MATLAB和以前的编程能力没有太多的关系,所以不要担心自己编程能力差,自己一定用不好MATLAB,只要自己肯在这上面花费时间和精力,就一定能有所收获。在学习MATLAB的过程中,不要只问不学,并且学MATLAB要有耐心,要大胆的去试,哪怕只有一丁点儿可能,只有自己动手去实践了才能发现错误的所在,利用这个解决问题的方法要试着解决类似的问题,要举一反三,要学会变通。多读MATLAB高手写的程序,找到一个高手多向他请教这方面的问题,在几个大的论坛可以搜索出一大堆的帖子,然后慢慢去看吧,从中可以学到很多东西。善于总结,学习过的知识,看过好的经验介绍可以收藏起来,过段时间再复习一下,一段时间的积累,你会发现你的水平在慢慢提高(这属于实践方面的体会)还有一点比较重要多用help,see also, lookfor, get, set 等常用命令,尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓。

(1) help: 最有效的命令。其实,可以这样说吧,一遇 到什么问题,通常可以从 help 中找到答案。就先说说对help的一些常用方法。

1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。

2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入 help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。

3)知道函数名,直接用help funname就可以得到相应的帮助信息。

在用help命令的时候,可能因为我们开始估计的方向不一定完全正确,在列出的帮助信息中没有直接给出我们要找的东西,但是我们一定不要忽略了在帮助的最后列出的see also。譬如:曾经遇到一个画椭球的问题。刚开始我以为这个命令函数应该在graph3d中给出的。只用help的时候我们就可以看到matlabgraph3d - Three dimensional graphs. 没有这个函数。 但是我发现在see also中有SPECGRAPH.,这次在 Solid modeling

中找到了ellipsoid - Generate ellipsoid。

(2) lookfor:可以说是 matlab中的google

当我们很多什么头绪都没有的时候,我们可以求助于它,往往会收到意想不到的效果。譬如:曾经在gui编程的时候,遇到过这样一个问题:想拖动鼠标时,要出现一个方框,就像你在桌面上拖动鼠标,会出现虚线框一样。 当初我也刚开始一定都不知道该查找什么东西,后来想起用它了。于是,

>>lookfor Rectangle。这样一条信息:GETRECT Select rectangle with mouse. get,set: GUI object 属性的帮手在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。这时,可以用 get(handles得到此对象的所有的属性及其当前值。用set(handles)可以得到对象所有可以设置的属性及其可能的取值找到我们需要的属性名字和可能的取值之后,就意义用 get(handles,‘propertyname’)取得此属性的值, 用set(handles,‘propertyname’,values)设置此对象此属性的值。 Edit: 查看m源文件的助手在应用matlab过程中,可能我们想看看它的m源文件,当然用editor定位打开也行,但是我经常采用的式直接在command窗口中用edit funname.m,就省去了定位的麻烦。

以上就是我学习MATLAB几个月以来的心得与体会,我自己感觉在理论方面自己理解的还是可以的,但是在实践中会经常遇到一些问题,而恰恰自己又束手无策。但是我经常上一些贴吧,那里有不少是使用MATLAB的高手,可以帮我解决不少问题,同时自己也学到了不少东西。

篇8:MATLAB实验报告

MATLAB实验报告模板

[摘要]大学物理力学中涉及许多复杂的数值计算问题,例如非线性问题,对其手工求解较为复杂,而MATLAB语言正是处理非线性问题的很好工具,既能进行数值求解,又能绘制有关曲线,非常方便实用。另外,利用其可减少工作量,节约时间,加深理解,同样可以培养应用能力 。

[关键词]力学 重力场 阻尼振动 MATLAB语言 图形绘制

一、问题的提出

MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的.功能。MATLAB 语言在各国高校与研究单位起着重大的作用.它是一种集数值计算、符号运算、可视化建模、仿真和图形处理等多种功能……

二、重力场中小球落点问题

在物理课程的学习中我们可以明确的得到解决落体运动的方程:

d2ym2??mg(1) dt

例:一弹性球,初始高度 h=10m,向上初速度 v0=15m/s, 与地相碰的速度衰减系数 k=0.8,计算任意时刻球的速度和位置。

分析:用传统计算方法解决时我们需要列出传统方程,

我们明显可以感觉到,这样的计算不仅繁琐费时,而且没有图示很难给以直观的感受,现在我们用MATLAB语言来对此例题做以下解析:

MATLAB程序如下:

clear all %有衰减弹性小球运动程序

v0=15; h=10; %初速度、高度

g=-9.8; k=0.8; % 重力加速度 衰减系数

通过以上程序对小球落地速度、位置以及运动过程的坐标描述,我们就会发现其在此

类问题中直观的表述,那么现在我们来解决另外一个问题。

三、解决阻尼振动与受迫震动图像问题

1、阻尼振动方程

红线—简谐振动,蓝线?2??2的阻尼振动,绿线?2??02的阻尼振动,阻尼振动周期

比自由振动要长,当?2?0.99?02 时,振幅按指数迅速缩减。

四、结论

从以上利用MATLAB语言对3种基本力学模型的分析我们不难的出以下结论:

五、课程体会

经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂,……

[参考文献]

[1] 刘卫国.MATLAB程序设计与应用(第二版)[M].北京:高等教育出版社,.

[2] 马文蔚.物理学(上册)(第四版)[M],北京:高等教育出版社,.

说明:

1.页面为A4,页边距上下均为2.5厘米,左右均为2.2厘米。

2.行距为单倍行距。

3.页码不显示首页。

4.注意参考文献的格式。

篇9: matlab学习心得

这是我在学习的过程中的`一些技巧,或许对你有帮助,可能字数不你能满足你的要求,但是绝对是精华。

1,如果你要是不是计算机转业的,只是为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的io是必须看的,因为任何一个程序都需要这几个基本的块。

2,你最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进(亲身体会,编完一个程序,小的例子可以运行出结果,但是大例子需要很长时间,所以必须要改进一下)。

3,你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间(亲身体会)。切记!!!

4,你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充(这一条是别人教我的,很管用),编程是一点一点积累的,所以你要需做一些随手笔记什么的。

5,编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强。

随笔写了这么多,可能不全,希望对你有帮助!!

篇10:matlab线性规划

matlab线性规划

MATLAB 优化问题

1 线性规划问题

线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB6.0解决的线性规划问题的标准形式为:

min f(x)x?R

sub.to:A?x?b

Aeq?x?beq

lb?x?ub n

其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵。

其它形式的线性规划问题都可经过适当变换化为此标准形式。

在MATLAB6.0版中,线性规划问题(Linear Programming)已用函数linprog取代了函数 linprog

格式 x = linprog(f,A,b) %求min f ' *x sub.to A?x?b线性规划的最优解。

x = linprog(f,A,b,Aeq,beq) %等式约束Aeq?x?beq,若没有不等式约束

A?x?b,则A=[ ],b=[ ]。

x = linprog(f,A,b,Aeq,beq,lb,ub) %指定x的范围lb?x?ub,若没有等式约束

Aeq?x?beq ,则Aeq=[ ],beq=[ ]

x = linprog(f,A,b,Aeq,beq,lb,ub,x0) %设置初值x0

x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数

[x,fval] = linprog(?) % 返回目标函数最优值,即fval= f ' *x。

[x,lambda,exitflag] = linprog(?) % lambda为解x的Lagrange乘子。

[x, lambda,fval,exitflag] = linprog(?) % exitflag为终止迭代的错误条件。

[x,fval, lambda,exitflag,output] = linprog(?) % output为关于优化的一些信息

说明 若exitflag>0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflag

例5-1 求下面的优化问题

min ?5x1?4x2?6x3

sub.to x1?x2?x3?20

3x1?2x2?4x3?42

3x1?2x2?30

.

0?x1,0?x2,0?x3

解:

>>f = [-5; -4; -6];

>>A = [1 -1 1;3 2 4;3 2 0];

>>b = [20; 42; 30];

>>lb = zeros(3,1);

>>[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb)

结果为:

x = %最优解

0.0000

15.0000

3.0000

fval = %最优值

-78.0000

exitflag = %收敛

1

output =

iterations: 6 %迭代次数

cgiterations: 0

algorithm: 'lipsol' %所使用规则

lambda =

ineqlin: [3x1 double]

eqlin: [0x1 double]

upper: [3x1 double]

lower: [3x1 double]

>>lambda.ineqlin

ans =

0.0000

1.5000

0.5000

>>lambda.lower

ans =

1.0000

0.0000

0.0000

表明:不等约束条件2和3以及第1个下界是有效的

2 非线性规划问题

2.1 有约束的一元函数的最小值

单变量函数求最小值的标准形式为minf(x) sub.to x1?x?x2 x

在MATLAB中使用fmin函数求其最小值。

函数 fminbnd

格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间x1?x?x2上函数fun取最小值

时x值,fun为目标函数的表达式字符串或MATLAB

自定义函数的函数柄。

x = fminbnd(fun,x1,x2,options) % options为指定优化参数选项

[x,fval] = fminbnd(?) % fval为目标函数的最小值

[x,fval,exitflag] = fminbnd(?) %xitflag为终止迭代的条件

[x,fval,exitflag,output] = fminbnd(?) % output为优化信息

说明 若参数exitflag>0,表示函数收敛于x,若exitflag=0,表示超过函数估计值或迭代的最大数字,exitflag

例5-2 计算下面函数在区间(0,1)内的最小值。

x3?cosx?xlogx f(x)?e解:>>[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)

x =

0.5223

fval =

0.3974

exitflag =

1

output =

iterations: 9

funcCount: 9

algorithm: 'golden section search, parabolic interpolation'

例5-3 在[0,5]上求下面函数的最小值f(x)?(x?3)3?1

解:先自定义函数:在MATLAB编辑器中建立M文件为:

function f = myfun(x)

f = (x-3).^2 - 1;

保存为myfun.m,然后在命令窗口键入命令:

>>x=fminbnd(@myfun,0,5)

则结果显示为:

x =

3

2.2 无约束多元函数最小值

多元函数最小值的标准形式为minf(x) x

其中:x为向量,如x?[x1,x2,?,xn]

在MATLAB中使用fmins求其最小值。

命令 利用函数fminsearch求无约束多元函数最小值

函数 fminsearch

格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或

MATLAB自定义函数的函数柄。

x = fminsearch(fun,x0,options) % options查optimset

.

[x,fval] = fminsearch(?) %最优点的函数值

[x,fval,exitflag] = fminsearch(?) % exitflag与单变量情形一致

[x,fval,exitflag,output] = fminsearch(?) %output与单变量情形一致

注意:fminsearch采用了Nelder-Mead型简单搜寻法。

32例5-4 求y?2x1?4x1x32?10x1x2?x2的最小值点

解:>>X=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2', [0,0])

结果为

X =

1.0016 0.8335

或在MATLAB编辑器中建立函数文件

function f=myfun(x)

f=2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2;

保存为myfun.m,在命令窗口键入

>>X=fminsearch ('myfun', [0,0]) 或 >>X=fminsearch(@myfun, [0,0])

结果为:

X =

1.0016 0.8335

命令 利用函数fminunc求多变量无约束函数最小值

函数 fminunc

格式 x = fminunc(fun,x0) %返回给定初始点x0的最小函数值点

x = fminunc(fun,x0,options) % options为指定优化参数

[x,fval] = fminunc(?) %fval最优点x处的函数值

[x,fval,exitflag] = fminunc(?) % exitflag为终止迭代的条件,与上同。

[x,fval,exitflag,output] = fminunc(?) %output为输出优化信息

[x,fval,exitflag,output,grad] = fminunc(?) % grad为函数在解x处的梯度值

[x,fval,exitflag,output,grad,hessian] = fminunc(?) %目标函数在解x处的海赛

(Hessian)值

注意:当函数的阶数大于2时,使用fminunc比fminsearch更有效,但当所选函数高度不连续时,使用fminsearch效果较好。

2?2x1x2?x2例5-5 求f(x)?3x12的最小值。

>>fun='3*x(1)^2+2*x(1)*x(2)+x(2)^2';

>>x0=[1 1];

>>[x,fval,exitflag,output,grad,hessian]=fminunc(fun,x0)

结果为:

x =

1.0e-008 *

-0.7591 0.2665

fval =

1.3953e-016

exitflag =

1

output =

iterations: 3

funcCount: 16

stepsize: 1.2353

firstorderopt: 1.6772e-007

algorithm: 'medium-scale: Quasi-Newton line search'

grad =

1.0e-006 *

-0.1677

0.0114

hessian =

6.0000 2.0000

2.0000 2.0000

或用下面方法:

>>fun=inline('3*x(1)^2+2*x(1)*x(2)+x(2)^2')

fun =

Inline function:

fun(x) = 3*x(1)^2+2*x(1)*x(2)+x(2)^2

>>x0=[1 1];

>>x=fminunc(fun,x0)

x =

1.0e-008 *

-0.7591 0.2665

2.3 有约束的多元函数最小值

非线性有约束的多元函数的标准形式为:

minf(x) x

sub.to C(x)?0

Ceq(x)?0

A?x?b

Aeq?x?beq

lb?x?ub

其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数。

在MATLAB5.x中,它的求解由函数constr实现。

函数 fmincon

格式 x = fmincon(fun,x0,A,b)

x = fmincon(fun,x0,A,b,Aeq,beq)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval] = fmincon(?)

[x,fval,exitflag] = fmincon(?)

[x,fval,exitflag,output] = fmincon(?)

[x,fval,exitflag,output,lambda] = fmincon(?)

.

[x,fval,exitflag,output,lambda,grad] = fmincon(?)

[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(?)

参数说明:fun为目标函数,它可用前面的方法定义;

x0为初始值;

A、b满足线性不等式约束A?x?b,若没有不等式约束,则取A=[ ],b=[ ];

Aeq、beq满足等式约束Aeq?x?beq,若没有,则取Aeq=[ ],beq=[ ];

lb、ub满足lb?x?ub,若没有界,可设lb=[ ],ub=[ ];

nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式

约束Ceq(x)?0分别在x处的估计C和Ceq,通过指定函数柄来使用,

如:>>x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非

线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)

C = ? % 计算x处的非线性不等约束C(x)?0的函数值。

Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的函数值。

lambda是Lagrange乘子,它体现哪一个约束有效。

output输出优化信息;

grad表示目标函数在x处的梯度;

hessian表示目标函数在x处的Hessiab值。

例5-6 求下面问题在初始点(0,1)处的最优解

2min x1?x22?x1x2?2x1?5x2

sub.to ?(x1?1)2?x2?0

2x1?3x2?6?0

解:约束条件的标准形式为

sub.to (x1?1)2?x2?0

?2x1?3x2?6

先在MATLAB编辑器中建立非线性约束函数文件:

function [c, ceq]=mycon (x)

c=(x(1)-1)^2-x(2);

ceq=[ ]; %无等式约束

然后,在命令窗口键入如下命令或建立M文件:

>>fun='x(1)^2+x(2)^2-x(1)*x(2)-2*x(1)-5*x(2)'; %目标函数

>>x0=[0 1];

>>A=[-2 3]; %线性不等式约束

>>b=6;

>>Aeq=[ ]; %无线性等式约束

>>beq=[ ];

>>lb=[ ]; %x没有下、上界

>>ub=[ ];

>>[x,fval,exitflag,output,lambda,grad,hessian]

=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,@mycon)

则结果为

x =

3 4

fval =

-13

exitflag = %解收敛

1

output =

iterations: 2

funcCount: 9

stepsize: 1

algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'

firstorderopt: [ ]

cgiterations: [ ]

lambda =

lower: [2x1 double] %x下界有效情况,通过lambda.lower可查看。

upper: [2x1 double] %x上界有效情况,为0表示约束无效。

eqlin: [0x1 double] %线性等式约束有效情况,不为0表示约束有效。

eqnonlin: [0x1 double] %非线性等式约束有效情况。

ineqlin: 2.5081e-008 %线性不等式约束有效情况。

ineqnonlin: 6.1938e-008 %非线性不等式约束有效情况。

grad = %目标函数在最小值点的梯度

1.0e-006 *

-0.1776

hessian = %目标函数在最小值点的Hessian值

1.0000 -0.0000

-0.0000 1.0000

例5-7 求下面问题在初始点x=(10, 10, 10)处的最优解。

Min f(x)??x1x2x3

Sub.to 0?x1?2x2?2x3?72

解:约束条件的标准形式为

sub.to ?x1?2x2?2x3?0 x1?2x2?2x3?72

>>fun= '-x(1)*x(2)*x(3)';

>>x0=[10,10,10];

>>A=[-1 -2 -2;1 2 2];

>>b=[0;72];

>>[x,fval]=fmincon(fun,x0,A,b)

结果为:

x =

24.0000 12.0000 12.0000

fval =

-3456

2.4 二次规划问题

二次规划问题(quadratic programming)的标准形式为:

minx?Hx?f?x sub.to A?x?b

?x?beq Aeq

lb?x?ub

其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量

.

其它形式的二次规划问题都可转化为标准形式。

MATLAB中二次规划应用函数quadprog。

函数 quadprog

格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小

值。

x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件Aeq?x?beq。

x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x的下界与上界。

x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %x0为设置的初值

x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数

[x,fval] = quadprog(?) %fval为目标函数最优值

[x,fval,exitflag] = quadprog(?) % exitflag与线性规划中参数意义相同

[x,fval,exitflag,output] = quadprog(?) % output与线性规划中参数意义相同

[x,fval,exitflag,output,lambda] = quadprog(?) % lambda与线性规划中参数意义

相同 例5-8 求解下面二次规划问题

min

sub.to 2f(x)?x1?x22?x1x2?2x1?6x2 x1?x2?2

?x1?2x2?2

2x1?x2?3

0?x1,0?x2

解:f(x)?x?Hx?f?x ?1?1??x1???2?f?x?则H??,,???6??x? ?12???2???

在MATLAB中实现如下:

>>H = [1 -1; -1 2] ;

>>f = [-2; -6];

>>A = [1 1; -1 2; 2 1];

>>b = [2; 2; 3];

>>lb = zeros(2,1);

>>[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[ ],[ ],lb)

结果为:

x = %最优解

0.6667

1.3333

fval = %最优值

-8.2222

exitflag = %收敛

1

output =

iterations: 3

algorithm: 'medium-scale: active-set'

firstorderopt: [ ]

cgiterations: [ ]

lambda =

lower: [2x1 double]

upper: [2x1 double]

eqlin: [0x1 double]

ineqlin: [3x1 double]

>>lambda.ineqlin

ans =

3.1111

0.4444

>>lambda.lower

ans =

说明 第1、2个约束条件有效,其余无效。

例5-9 求二次规划的最优解

max f (x1, x2)=x1x2+3

sub.to x1+x2-2=0

解:化成标准形式:

?0?1??x1??x1?minf(x1x2)??x1x2?3?(x1x2)?????(0,0)???3 ??10??x2??x2?

sub.to x1+x2=2

在Matlab中实现如下:

>>H=[0,-1;-1,0];

>>f=[0;0];

>>Aeq=[1 1];

>>b=2;

>>[x,fval,exitflag,output,lambda] = quadprog(H,f,[ ],[ ],Aeq,b)

结果为:

x =

1.0000

1.0000

fval =

-1.0000

exitflag =

1

output =

firstorderopt: 0

iterations: 1

cgiterations: 1

algorithm: [1x58 char]

lambda =

eqlin: 1.0000

ineqlin: [ ]

lower: [ ]

upper: [ ]

.

3 “半无限”有约束的多元函数最优解

“半无限”有约束多元函数最优解问题的标准形式为

minxf(x)

sub.to C(x)?0

Ceq(x)?0

A?x?b

Aeq?x?beq

K1(x,w1)?0

K2(x,w2)?0

?

Kn(x,wn)?0

其中:x、b、beq、lb、ub都是向量;A、Aeq是矩阵;C(x)、Ceq(x)、Ki(x,wi)是返回向量的函数,f(x)为目标函数;f(x)、C(x)、Ceq(x)是非线性函数;Ki(x,wi)为半无限约束,w1,w2,?,wn通常是长度为2的向量。

在MTALAB5.x中,使用函数seminf解决这类问题。

函数 fseminf

格式 x = fseminf(fun,x0,ntheta,seminfcon)

x = fseminf(fun,x0,ntheta,seminfcon,A,b)

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq)

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub)

x = fseminf(fun,x0,ntheta,seminfcon,A,b,Aeq,beq,lb,ub,options)

[x,fval] = fseminf(?)

[x,fval,exitflag] = fseminf(?)

[x,fval,exitflag,output] = fseminf(?)

[x,fval,exitflag,output,lambda] = fseminf(?)

参数说明:x0为初始估计值;

fun为目标函数,其定义方式与前面相同;

A、b由线性不等式约束A?x?b确定,没有,则A=[ ],b=[ ];

Aeq、beq由线性等式约束Aeq?x?beq确定,没有,则Aeq=[ ],beq=[ ]; Lb、ub由变量x的范围lb?x?ub确定;

options为优化参数;

ntheta为半无限约束的个数;

seminfcon用来确定非线性约束向量C和Ceq以及半无限约束的向量K1,

K2,?,Kn,通过指定函数柄来使用,如:

x = fseminf(@myfun,x0,ntheta,@myinfcon)

先建立非线性约束和半无限约束函数文件,并保存为myinfcon.m:

function [C,Ceq,K1,K2,?,Kntheta,S] = myinfcon(x,S)

%S为向量w的采样值

% 初始化样本间距

if isnan(S(1,1)),

S = ? % S 有ntheta行2列

end

w1 = ? %计算样本集

w2 = ? %计算样本集

?

wntheta = ? % 计算样本集

K1 = ? % 在x和w处的第1个半无限约束值

K2 = ? %在x和w处的第2个半无限约束值

?

Kntheta = ? %在x和w处的第ntheta个半无限约束值

C = ? % 在x处计算非线性不等式约束值

Ceq = ? % 在x处计算非线性等式约束值

如果没有约束,则相应的值取为“[ ]”,如Ceq=[]

fval为在x处的目标函数最小值;

exitflag为终止迭代的条件;

output为输出的优化信息;

lambda为解x的Lagrange乘子。

例5-10 求下面一维情形的最优化问题

minxf(x)?(x1?0.5)2?(x2?0.5)2?(x3?0.5)2

sub.to

K1(x,w1)?sin(w1x1)cos(w1x2)?(w1?50)2?sin(w1x3)?x3?1 K2(x,w2)?sin(w2x2)cos(w2x1)?(w2?50)2?sin(w2x3)?x3?1 1?w1?100

1?w2?100

解:将约束方程化为标准形式:

K1(x,w1)?sin(w1x1)cos(w1x2)?(w1?50)2?sin(w1x3)?x3?1?0 K2(x,w2)?sin(w2x2)cos(w2x1)?(w2?50)2?sin(w2x3)?x3?1?0 先建立非线性约束和半无限约束函数文件,并保存为mycon.m:

function [C,Ceq,K1,K2,S] = mycon(X,S)

% 初始化样本间距:

.

if isnan(S(1,1)),

S = [0.2 0; 0.2 0];

end

% 产生样本集:

w1 = 1:S(1,1):100;

w2 = 1:S(2,1):100;

% 计算半无限约束:

K1 = sin(w1*X(1)).*cos(w1*X(2)) - 1/1000*(w1-50).^2 -sin(w1*X(3))-X(3)-1;

K2 = sin(w2*X(2)).*cos(w2*X(1)) - 1/1000*(w2-50).^2 -sin(w2*X(3))-X(3)-1;

% 无非线性约束:

C = [ ]; Ceq=[ ];

% 绘制半无限约束图形

plot(w1,K1,'-',w2,K2,':'),title('Semi-infinite constraints')

然后在MATLAB命令窗口或编辑器中建立M文件:

fun = 'sum((x-0.5).^2)';

x0 = [0.5; 0.2; 0.3]; % Starting guess

[x,fval] = fseminf(fun,x0,2,@mycon)

结果为:

x =

0.6673

0.3013

0.4023

fval =

0.0770

>>[C,Ceq,K1,K2] = mycon (x,NaN); % 利用初始样本间距

>>max(K1)

ans =

-0.0017

>>max(K2)

ans =

-0.0845

图5-1

例5-11 求下面二维情形的最优化问题

minxf(x)?(x1?0.2)2?(x2?0.2)2?(x3?0.2)2

sub.to

K1(x,w)?sin(w1x1)cos(w2x2)?(w1?50)2?sin(w1x3)?x3??

sin(w2x2)cos(w1x1)?(w2?50)2?sin(w2x3)?x3?1.5 1?w1?100

1?w2?100

初始点为x0=[0.25, 0.25, 0.25]。

解:先建立非线性和半无限约束函数文件,并保存为mycon.m:

function [C,Ceq,K1,S] = mycon(X,S)

% 初始化样本间距:

if isnan(s(1,1)),

s = [2 2];

end

% 设置样本集

w1x = 1:s(1,1):100;

w1y = 1:s(1,2):100;

[wx, wy] = meshgrid(w1x,w1y);

% 计算半无限约束函数值

K1 = sin(wx*X(1)).*cos(wx*X(2))-1/1000*(wx-50).^2 -sin(wx*X(3))-X(3)+…

sin(wy*X(2)).*cos(wx*X(1))-1/1000*(wy-50).^2-sin(wy*X(3))-X(3)-1.5;

% 无非线性约束

C = [ ]; Ceq=[ ];

%作约束曲面图形

m = surf(wx,wy,K1,'edgecolor','none','facecolor','interp');

camlight headlight

title('Semi-infinite constraint')

drawnow

然后在MATLAB命令窗口下键入命令:

>>fun = 'sum((x-0.2).^2)';

>>x0 = [0.25, 0.25, 0.25];

>>[x,fval] = fseminf(fun,x0,1,@mycon)

结果为(如图)

x =

0.2926 0.1874 0.2202

fval =

0.0091

>>[c,ceq,K1] = mycon(x,[0.5,0.5]); % 样本间距为0.5

>>max(max(K1))

ans =

-0.0027 图5-2

4 极小化极大(Minmax)问题

极小化极大问题的标准形式为

minmaxx{Fi}{Fi(x)}

sub.to C(x)?0

Ceq(x)?0

A?x?b

.

Aeq?x?beq

lb?x?ub

其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)和F(x)是返回向量的函数,F(x)、C(x)、Ceq(x)可以是非线性函数。

在MATLAB5.x中,它的求解由函数minmax实现。

函数 fminimax

格式 x = fminimax(fun,x0)

x = fminimax(fun,x0,A,b)

x = fminimax(fun,x0,A,b,Aeq,beq)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval,maxfval] = fminimax(?)

[x,fval,maxfval,exitflag] = fminimax(?)

[x,fval,maxfval,exitflag,output] = fminimax(?)

[x,fval,maxfval,exitflag,output,lambda] = fminimax(?)

参数说明:fun为目标函数;

x0为初始值;

A、b满足线性不等约束A?x?b,若没有不等约束,则取A=[ ],b=[ ];

Aeq、beq满足等式约束Aeq?x?beq,若没有,则取Aeq=[ ],beq=[ ];

lb、ub满足lb?x?ub,若没有界,可设lb=[ ],ub=[ ];

nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式约束

Ceq(x)?0分别在x处的值C和Ceq,通过指定函数柄来使用,如:>>x =

fminimax(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon),先建立非线性约束函数,

并保存为mycon.m:function [C,Ceq] = mycon(x)

C = ? % 计算x处的非线性不等约束C(x)?0的函数值。

Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的函数值。

options为指定的优化参数;

fval为最优点处的目标函数值;

maxfval为目标函数在x处的最大值;

exitflag为终止迭代的条件;

lambda是Lagrange乘子,它体现哪一个约束有效。

output输出优化信息。

例5-12 求下列函数最大值的最小化问题

[f1(x), f2(x), f3(x), f4(x), f5(x)]

2?x2其中:f1(x)?2x12?48x1?40x2?304

2f2(x)??x22?3x2

f3(x)?x1?3x2?18

f4(x)??x1?x2

f5(x)?x1?x2?8

解:先建立目标函数文件,并保存为myfun.m:function f = myfun(x)

f(1)= 2*x(1)^2+x(2)^2-48*x(1)-40*x(2)+304;

f(2)= -x(1)^2 - 3*x(2)^2;

f(3)= x(1) + 3*x(2) -18;

f(4)= -x(1)- x(2);

f(5)= x(1) + x(2) - 8;

然后,在命令窗口键入命令:

x0 = [0.1; 0.1]; % 初始值

[x,fval] = fminimax(@myfun,x0)

结果为:

x =

4.0000

4.0000

fval =

0.0000 -64.0000 -2.0000 -8.0000 -0.0000

例5-13 求上述问题的绝对值的最大值最小化问题。

目标函数为:[|f1(x)|, |f2(x)|, |f3(x)|, |f4(x)|, |f5(x)|]

解:先建立目标函数文件(与上例相同)

然后,在命令窗口或编辑器中建立M文件:

>>x0 = [0.1; 0.1]; % 初始点

>>options = optimset('MinAbsMax',5); % 指定绝对值的最小化

>>[x,fval] = fminimax(@myfun,x0,[ ],[ ],[ ],[ ],[ ],[ ],[ ],options)

则结果为

x =

4.9256

2.0796

fval =

37.2356 -37.2356 -6.8357 -7.0052 -0.9948

5 多目标规划问题

多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为

min[f1(x),f2(x),?,fm(x)]

j?1,2,?,p sub.to gj(x)?0

其中:x?(x1,x2,?,xn)。

在同一约束下,当目标函数处于冲突状态时,不存在最优解x使所有目标函数同时达到最优。此时,我们使用有效解,即如果不存在x?S,使得fi(x)?fi(x*),i=1,2,?m, 则称x*为有效解。

在MATLAB中,多目标问题的标准形式为

.

minimize? x,?

sub.to F(x)?weight???goal

C(x)?0

Ceq(x)?0

A?x?b

Aeq?x?beq

lb?x?ub

其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;?为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。

在MATLAB5.x中,它的最优解由attgoal函数实现。

函数 fgoalattain

格式 x = fgoalattain(fun,x0,goal,weight)

x = fgoalattain(fun,x0,goal,weight,A,b)

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq)

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon)

x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval] = fgoalattain(?)

[x,fval,attainfactor] = fgoalattain(?)

[x,fval,attainfactor,exitflag] = fgoalattain(?)

[x,fval,attainfactor,exitflag,output] = fgoalattain(?)

[x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(?)

参数说明:

x0为初始解向量;

fun为多目标函数的文件名字符串,其定义方式与前面fun的定义方式相同;

goal为用户设计的目标函数值向量;

weight为权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;

A、b满足线性不等式约束A?x?b,没有时取A=[ ],b=[ ];

Aeq、beq满足线性等式约束Aeq?x?beq,没有时取Aeq=[ ],beq=[ ];

lb、ub为变量的下界和上界:lb?x?ub;

nonlcon的作用是通过接受的向量x来计算非线性不等约束C(x)?0和等式约束

Ceq(x)?0分别在x处的值C和Ceq,通过指定函数柄来使用。

如:>>x = fgoalattain(@myfun,x0,goal,wei

ght,A,b,Aeq,beq,lb,ub,@mycon),

先建立非线性约束函数,并保存为mycon.m:function [C,Ceq] = mycon(x)

C = ? % 计算x处的非线性不等式约束C(x)?0的函数值。

Ceq = ? % 计算x处的非线性等式约束Ceq(x)?0的'函数值。

options为指定的优化参数;

fval为多目标函数在x处的值;

attainfactor为解x处的目标规划因子;

exitflag为终止迭代的条件;

output为输出的优化信息;

lambda为解x处的Lagrange乘子

例5-14 控制系统输出反馈器设计。

设如下线性系统

??Ax?Bu x

y?Cx

0???o.50?10??100??210? B???22? C??其中:A??0? ????001????1?2??0??01??

要求设计输出反馈控制器K,使闭环系统

??(A?BKC)x?Bu x

y?Cx

在复平面实轴上点[-5,-3,-1]的左侧有极点,并要求 ?4?Kij?4(i,j?1,2)

解:上述问题就是要求解矩阵K,使矩阵(A+BKC)的极点为[-5,-3,-1],这是一个多目标规划问题。

先建立目标函数文件,保存为eigfun.m:

function F = eigfun(K,A,B,C)

F = sort(eig(A+B*K*C)); % 估计目标函数值

然后,输入参数并调用优化程序:

A = [-0.5 0 0; 0 -2 10; 0 1 -2];

B = [1 0; -2 2; 0 1];

C = [1 0 0; 0 0 1];

K0 = [-1 -1; -1 -1]; % 初始化控制器矩阵

goal = [-5 -3 -1]; % 为闭合环路的特征值(极点)设置目标值向量

weight = abs(goal) % 设置权值向量

lb = -4*ones(size(K0)); % 设置控制器的下界

ub = 4*ones(size(K0)); % 设置控制器的上界

options = optimset('Display','iter'); % 设置显示参数:显示每次迭代的输出

[K,fval,attainfactor] = fgoalattain(@eigfun,K0,goal,weight,[],[],[],[],lb,ub,[],options,A,B,C)

结果为:

weight =

5 3 1

Attainment Directional

Iter F-count factor Step-size derivative Procedure

1 6 1.885 1 1.03

2 13 1.061 1 -0.679

3 20 0.4211 1 -0.523 Hessian modified

4 27 -0.06352 1 -0.053 Hessian modified twice 5 34 -0.1571 1 -0.133

.

6 41 -0.3489 1 -0.00768 Hessian modified

7 48 -0.3643 1 -4.25e-005 Hessian modified

8 55 -0.3645 1 -0.00303 Hessian modified twice 9 62 -0.3674 1 -0.0213 Hessian modified

10 69 -0.3806 1 0.00266

11 76 -0.3862 1 -2.73e-005 Hessian modified twice 12 83 -0.3863 1 -1.22e-013 Hessian modified twice Optimization terminated successfully:

Search direction less than 2*options. TolX and maximum constraint violation is less than options.TolCon

Active Constraints:

1

2

4

9

10

K =

-4.0000 -0.2564

-4.0000 -4.0000

fval =

-6.9313

-4.1588

-1.4099

attainfactor =

-0.3863

6 最小二乘最优问题

6.1 约束线性最小二乘

有约束线性最小二乘的标准形式为

minCx?dxsub.to A?x?b

Aeq?x?beq

lb?x?ub 22

其中:C、A、Aeq为矩阵;d、b、beq、lb、ub、x是向量。

在MATLAB5.x中,约束线性最小二乘用函数conls求解。

函数 lsqlin

格式 x = lsqlin(C,d,A,b) %求在约束条件A?x?b下,方程Cx = d的最小二乘解x。

x = lsqlin(C,d,A,b,Aeq,beq) %Aeq、beq满足等式约束Aeq?x?beq,若没有不

等式约束,则设A=[ ],b=[ ]。

x = lsqlin(C,d,A,b,Aeq,beq,lb,ub) %lb、ub满足lb?x?ub,若没有等式约束,

则Aeq=[ ],beq=[ ]。

x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0) % x0为初始解向量,若x没有界,则lb=[ ],

ub=[ ]。

x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) % options为指定优化参数

[x,resnorm] = lsqlin(?) % resnorm=norm(C*x-d)^2,即2-范数。

[x,resnorm,residual] = lsqlin(?) %residual=C*x-d,即残差。

[x,resnorm,residual,exitflag] = lsqlin(?) %exitflag为终止迭代的条件

[x,resnorm,residual,exitflag,output] = lsqlin(?) % output表示输出优化信息

[x,resnorm,residual,exitflag,output,lambda] = lsqlin(?) % lambda为解x的

Lagrange乘子

例5-15 求解下面系统的最小二乘解

系统:Cx=d

约束:A?x?b;lb?x?ub

先输入系统系数和x的上下界:

C = [0.9501 0.7620 0.6153 0.4057;…

0.2311 0.4564 0.7919 0.9354;…

0.6068 0.0185 0.9218 0.9169;…

0.4859 0.8214 0.7382 0.4102;…

0.8912 0.4447 0.1762 0.8936];

d = [ 0.0578; 0.3528; 0.8131; 0.0098; 0.1388];

A =[ 0.2027 0.2721 0.7467 0.4659;…

0.1987 0.1988 0.4450 0.4186;…

0.6037 0.0152 0.9318 0.8462];

b =[ 0.5251; 0.2026; 0.6721];

lb = -0.1*ones(4,1);

ub = 2*ones(4,1);

然后调用最小二乘命令:

[x,resnorm,residual,exitflag,output,lambda] = lsqlin(C,d,A,b,[ ],[ ],lb,ub);

结果为:

x =

-0.1000

-0.1000

0.2152

0.3502

resnorm =

0.1672

residual =

0.0455

0.0764

-0.3562

0.1620

0.0784

exitflag =

1 %说明解x是收敛的

output =

iterations: 4

algorithm: 'medium-scale: active-set'

firstorderopt: []

cgiterations: []

lambda =

lower: [4x1 double]

upper: [4x1 double]

.

eqlin: [0x1 double]

ineqlin: [3x1 double]

通过lambda.ineqlin可查看非线性不等式约束是否有效。

6.2 非线性数据(曲线)拟合

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得下式成立:

minF(x,xdata)?ydatax2

2??(F(x,xdatai)?ydatai)2 i

在MATLAB5.x中,使用函数curvefit解决这类问题。

函数 lsqcurvefit

格式 x = lsqcurvefit(fun,x0,xdata,ydata)

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)

[x,resnorm] = lsqcurvefit(?)

[x,resnorm,residual] = lsqcurvefit(?)

[x,resnorm,residual,exitflag] = lsqcurvefit(?)

[x,resnorm,residual,exitflag,output] = lsqcurvefit(?)

[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(?)

[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(?)

参数说明:

x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;

lb、ub为解向量的下界和上界lb?x?ub,若没有指定界,则lb=[ ],ub=[ ]; options为指定的优化参数;

fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),

其中myfun已定义为 function F = myfun(x,xdata)

F = ? % 计算x处拟合函数值fun的用法与前面相同;

resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;

residual=fun(x,xdata)-ydata,即在x处的残差;

exitflag为终止迭代的条件;

output为输出的优化信息;

lambda为解x处的Lagrange乘子;

jacobian为解x处拟合函数fun的jacobian矩阵。

例5-16 求解如下最小二乘非线性拟合问题

已知输入向量xdata和输出向量ydata,且长度都是n,拟合函数为

ydata(i)?x(1)?xdata(i)2?x(2)?sin(xdata(i))?x(3)?xdata(i)3

即目标函数为min?(F(x,xdatai)?ydatai)2 xi?1

其中:F(x,xdata)?x(1)?xdata2?x(2)?sin(xdata)?x(3)?xdata3

n

初始解向量为x0=[0.3, 0.4, 0.1]。

解:先建立拟合函数文件,并保存为myfun.m

function F = myfun(x,xdata)

F = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;

然后给出数据xdata和ydata

>>xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];

>>ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];

>>x0 = [10, 10, 10]; %初始估计值

>>[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)

结果为:

Optimization terminated successfully:

Relative function value changing by less than OPTIONS.TolFun

x =

0.2269 0.3385 0.3021

resnorm =

6.2950

6.3 非线性最小二乘

非线性最小二乘(非线性数据拟合)的标准形式为

minf(x)?f1(x)2?f2(x)2???fm(x)2?L x

其中:L为常数

在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。

?f1(x)??f(x)?2? 设F(x)???????f(x)m??

则目标函数可表达为minF(x)x2

2??fi(x)2 i

其中:x为向量,F(x)为函数向量。

函数 lsqnonlin

格式 x = lsqnonlin(fun,x0) %x0为初始解向量;fun为fi(x),i=1,2,?,m,fun返回向

量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。

x = lsqnonlin(fun,x0,lb,ub) %lb、ub定义x的下界和上界:lb?x?ub。

x = lsqnonlin(fun,x0,lb,ub,options) %options为指定优化参数,若x没有界,则

lb=[ ],ub=[ ]。

[x,resnorm] = lsqnonlin(?) % resnorm=sum(fun(x).^2),即解x处目标函数值。

[x,resnorm,residual] = lsqnonlin(?) % residual=fun(x),即解x处fun的值。

[x,resnorm,residual,exitflag] = lsqnonlin(?) %exitflag为终止迭代条件。

[x,resnorm,residual,exitflag,output] = lsqnonlin(?) %output输出优化信息。

[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(?) %lambda为Lagrage

.

乘子。

[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqnonlin(?) %fun在解x

处的Jacobian矩阵。

例5-17 求下面非线性最小二乘问题?(2?2k?ekx1?ekx2)2初始解向量为x0=[0.3,

k?110

0.4]。

解:先建立函数文件,并保存为myfun.m,由于lsqnonlin中的fun为向量形式而不是平方和形式,因此,myfun函数应由fi(x)建立:

fk(x)?2?2k?ekx1?ekx2 k=1,2,…,10

function F = myfun(x)

k = 1:10;

F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));

然后调用优化程序:

x0 = [0.3 0.4];

[x,resnorm] = lsqnonlin(@myfun,x0)

结果为:

Optimization terminated successfully:

Norm of the current step is less than OPTIONS.TolX

x =

0.2578 0.2578

resnorm = %求目标函数值

124.3622

6.4 非负线性最小二乘

非负线性最小二乘的标准形式为:

minCx?dxsub.to x?0 22

其中:矩阵C和向量d为目标函数的系数,向量x为非负独立变量。

在MATLAB5.x中,用函数nnls求解这类问题,在6.0版中则用函数lsqnonneg。 函数 lsqnonneg

格式 x = lsqnonneg(C,d) %C为实矩阵,d为实向量

x = lsqnonneg(C,d,x0) % x0为初始值且大于0

x = lsqnonneg(C,d,x0,options) % options为指定优化参数

[x,resnorm] = lsqnonneg(?) % resnorm=norm (C*x-d)^2

[x,resnorm,residual] = lsqnonneg(?) %residual=C*x-d

[x,resnorm,residual,exitflag] = lsqnonneg(?)

[x,resnorm,residual,exitflag,output] = lsqnonneg(?)

[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(?)

例5-18 一个最小二乘问题的无约束与非负约束解法的比较。

先输入数据:

>>C = [ 0.0372 0.2869; 0.6861 0.7071; 0.6233 0.6245; 0.6344 0.6170];

>>d = [0.8587; 0.1781; 0.0747; 0.8405];

>>[C\d, lsqnonneg(C,d)]

ans =

-2.5627 0

3.1108 0.6929

注意:1。当问题为无约束线性最小二乘问题时,使用MATLAB下的“”运算即可以解决。2.对于非负最小二乘问题,调用lsqnonneg(C,d)求解。

7 非线性方程(组)求解

7.1 非线性方程的解

非线性方程的标准形式为f(x)=0

函数 fzero

格式 x = fzero (fun,x0) %用fun定义表达式f(x),x0为初始解。

x = fzero (fun,x0,options)

[x,fval] = fzero(?) %fval=f(x)

[x,fval,exitflag] = fzero(?)

[x,fval,exitflag,output] = fzero(?)

说明 该函数采用数值解求方程f(x)=0的根。

例5-19 求x3?2x?5?0的根

解:>>fun='x^3-2*x-5';

>>z=fzero(fun,2) %初始估计值为2

结果为

z =

2.0946

7.2 非线性方程组的解

非线性方程组的标准形式为:F(x) = 0

其中:x为向量,F(x)为函数向量。

函数 fsolve

格式 x = fsolve(fun,x0) %用fun定义向量函数,其定义方式为:先定义方程函数

function F = myfun (x)。

F =[表达式1;表达式2;?表达式m] %保存为myfun.m,并用下面方式调用:

x = fsolve(@myfun,x0),x0为初始估计值。

x = fsolve(fun,x0,options)

[x,fval] = fsolve(?) %fval=F(x),即函数值向量

[x,fval,exitflag] = fsolve(?)

[x,fval,exitflag,output] = fsolve(?)

.

[x,fval,exitflag,output,jacobian] = fsolve(?) % jacobian为解x处的Jacobian阵。 其余参数与前面参数相似。

例5-20 求下列系统的根

2x1?x2?e?x1

?x1?2x2?e?x2

解:化为标准形式

2x1?x2?e?x1?0

?x1?2x2?e?x2?0

设初值点为x0=[-5 -5]。

先建立方程函数文件,并保存为myfun.m:

function F = myfun(x)

F = [2*x(1) - x(2) - exp(-x(1));

-x(1) + 2*x(2) - exp(-x(2))];

然后调用优化程序

x0 = [-5; -5]; % 初始点

options=optimset('Display','iter'); % 显示输出信息

[x,fval] = fsolve(@myfun,x0,options)

结果为

Norm of First-order

Iteration Func-count f(x) step optimality CG-iterations 1 4 47071.2 1 2.29e+004 0

2 7 6527.47 1.45207 3.09e+003 1

3 10 918.372 1.49186 418 1

4 13 127.74 1.55326 57.3 1

5 16 14.9153 1.57591 8.26 1

6 19 0.779051 1.27662 1.14 1

7 22 0.00372453 0.484658 0.0683 1

8 25 9.21617e-008 0.0385552 0.000336 1

9 28 5.66133e-017 0.000193707 8.34e-009 1

Optimization terminated successfully:

Relative function value changing by less than OPTIONS.TolFun

x =

0.5671

0.5671

fval =

1.0e-008 *

-0.5320

-0.5320

?12?例5-21 求矩阵x使其满足方程x?x?x???,并设初始解向量为x=[1, 1; 1, 1]。 34??

解:先编写M文件:

function F = myfun(x)

F = x*x*x-[1,2;3,4];

然后调用优化程序求解:

>>x0 = ones(2,2); %初始解向量

>>options = optimset('Display','off'); %不显示优化信息 >>[x,Fval,exitflag] = fsolve(@myfun,x0,options) 则结果为

x =

-0.1291 0.8602

1.2903 1.1612

Fval =

1.0e-003 *

0.1541 -0.1163

0.0109

exitflag =

1

. -0.0243

篇11:基于Matlab仿真的联合变换相关器实验

基于Matlab仿真的联合变换相关器实验

利用Matlab软件平台对JTC进行了图像识别仿真实验,得到了二维及三维相关输出图像,显示出尖锐的相关峰.仿真实验表明:联合变换进行图像识别中存在强烈的零级干扰,干扰信号是有用信号的7.14倍,输出结果不理想;采用功率谱相减法可以消除零级强干扰,进而提高了图像的.识别能力.

作 者:黄富瑜 李刚 张雏 沈洪斌 吴健 邹昌帆 HUANG Fu-yu LI Gang ZHANG Chu SHEN Hong-bin WU Jian ZOU Chang-fan  作者单位:黄富瑜,李刚,张雏,沈洪斌,HUANG Fu-yu,LI Gang,ZHANG Chu,SHEN Hong-bin(军械工程学院,光学与电子工程系,河北,石家庄,050003)

吴健,WU Jian(66267部队,81分队,河北,石家庄,050081)

邹昌帆,ZOU Chang-fan(总装驻扬州地区军代室,江苏,扬州,225009)

刊 名:物理实验  PKU英文刊名:PHYSICS EXPERIMENTATION 年,卷(期): 29(9) 分类号:O439 关键词:联合相关变换器   相关识别   联合功率谱   功率谱相减法   Matlab  

篇12:实验心得体会

分子生物学实验室本科生第一次接触到了真正培养实验能力的实验课,它不同于我们在大二开的植物、动物、微生物等实验课。在这些课上,主要以制备样品并观察样品的形态、结构特征为主,这是由于我们当时正值大二,专业知识还远不够。

随着以后理论课学习的深入,我们开始了分子生物学实验的学习,这无疑对于深刻巩固我们理论课上学到的知识是有帮助的,也进一步加深了对原有知识的理解,如启动子的概念、类型、PCR的原理等。另外,在实验课中,我们掌握并学会如何运用分子生物学研究中的一些基本实验技术,如质粒的提娶总RNA的制备、PCR技术等。

我们的实验动手能力通过亲身接触实验过程并亲自设计一些实验得到了提高,使我们不再象刚开始做分子生物学实验的时候照搬实验指导上的实验步骤,而是通过我们自己的思考,根据现有的实验条件,对原有的步骤作必要的改进。

此外,通过这门实验课的学习,我们形成了严谨的态度,如有时得出的实验结果与理论不符,我们渐渐养成了仔细分析实验结果的习惯,查找在实验设计或操作过程中出现的问题,同时对理论知识认识得更清楚。

总之,我认为,分子生物学实验课,是称得上实用、精彩、有意思的好实验,对于今后我的研究或工作很有价值。

篇13:实验心得体会

化学是一门以实验为基础与生活生产息息相关的课程。化学知识的实用性很强,因此实验就显得十分重要。

刚开始做实验的时候,由于学生的理论知识基础不好,在实验过程遇到了许多的难题,也使学生们感到了理论知识的重要性。让学生在实验中发现问题,自我看书,独立思考,最终解决问题,从而也就加深了学生对课本理论知识的明白,到达了“双赢”的效果。在做实验前,务必要将课本上的知识吃透,正因这是做实验的基础,实验前理论知识的准备,也就是要事前了解将要做的实验的有关资料,如:实验要求,实验资料,实验步骤,最重要的是要记录实验现象等等。否则,老师讲解时就会听不懂,这将使做实验的难度加大,浪费做实验的宝贵时刻。比如用电解饱和食盐水的方法制取氯气的的实验要清楚各实验仪器的接法,如果不清楚,在做实验时才去摸索,这将使你极大地浪费时刻,会事倍功半。虽然做实验时,老师会讲解一下实验步骤,但是如果自我没有一些基础知识,那时是很难作得下去的,惟有胡乱按老师指使做,其实自我也不明白做什么。做实验时,务必要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,印象才深刻,记得才牢固,否则,过后不久就会忘得一干二净,这还不如不做。做实验时,老师会根据自我的亲身体会,将一些课本上没有的知识教给学生,拓宽学生的眼界,使学生认识到这门课程生活中的应用是那么的广泛。

学生做实验绝对不能人云亦云,要有自我的看法,这样就要有充分的准备,若是做了也不明白是个什么实验,那么做了也是白做。实验总是与课本知识相关的在实验过程中,我们就应尽量减少操作的盲目性提高实验效率的保证,有的人一开始就赶着做,结果却越做越忙,主要就是这个原因。在做实验时,开始没有认真吃透实验步骤,忙着连接实验仪器、添加药品,结果实验失败,最后只好找其他同学帮忙。个性是在做实验报告时,正因实验现象出现很多问题,如果不解决的话,将会很难的继续下去,对于思考题,有不懂的地方,能够互相讨论,请教老师。

我们做实验不好一成不变和墨守成规,就应有改良创新的精神。实际上,在弄懂了实验原理的基础上,我们的时刻是充分的,做实验就应是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。比如说,在做金属铜与浓硫酸反应的实验中,我们能够透过自制装置将实验改善。

在实验的过程中要培养学生独立分析问题和解决问题的潜质。培养这种潜质的前题是学生对每次实验的态度。如果学生在实验这方面很随便,等老师教怎样做,拿同学的报告去抄,尽管学生的成绩会很高,但对将来工作是不利的。

实验过程中培养了学生在实践中研究问题,分析问题和解决问题的潜质以及培养了良好的探究潜质和科学道德,例如团队精神、交流潜质、独立思考、实验前沿信息的捕获潜质等;提高了学生的动手潜质,培养理论联系实际的作风,增强创新意识。

篇14:实验心得体会

通过分子生物学实验课的学习,我们首先了解了分子生物学常用的载体,即质粒载体的制备及宿主细胞的感受态的制备。这些都让我们在学过书本状的知识以后有了一个亲手操作,更深一步所学的知识的机会。

生物学以及分子生物学本身就是一门实验性的学科,如果只有单纯的理论课上的讲解而没有与之相配套的实验操作,跟的无法使我们深刻体会到我们所学的那些如转导转化之类究竟是怎样操纵的。

至于PCR基因扩增、RT-PCR、蛋白质印迹这些实验操作技术的学习对我们以后生物化学大实验、生化技术原理、基因工程、蛋白质工程的学习都奠定了一个很坚实的基础,帮助我们对这一系列等分子生物学技术有了很好的了解和掌握的。

相配套的理论课的学习与实验操作上是非常必要,我觉得分子实验课的时间安排就相当合理,在我们学理论课的同时就进行实验课的操作,这样相辅相承的学习,才能促进我们的进一步提高。

篇15:实验心得体会精选

化学是一门以实验为基础与生活生产息息相关的课程。化学知识的实用性很强,因此实验就显得非常重要。

刚开始做实验的时候,由于学生的理论知识基础不好,在实验过程遇到了许多的难题,也使学生们感到了理论知识的重要性。让学生在实验中发现问题,自己看书,独立思考,最终解决问题,从而也就加深了学生对课本理论知识的理解,达到了“双赢”的效果。在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,实验前理论知识的准备,也就是要事前了解将要做的实验的有关资料,如:实验要求,实验内容,实验步骤,最重要的是要记录实验现象等等.否则,老师讲解时就会听不懂,这将使做实验的难度加大,浪费做实验的宝贵时间。比如用电解饱和食盐水的方法制取氯气的的实验要清楚各实验仪器的接法,如果不清楚,在做实验时才去摸索,这将使你极大地浪费时间,会事倍功半。

虽然做实验时,老师会讲解一下实验步骤,但是如果自己没有一些基础知识,那时是很难作得下去的,惟有胡乱按老师指使做,其实自己也不知道做什么。做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,印象才深刻,记得才牢固,否则,过后不久就会忘得一干二净,这还不如不做.做实验时,老师会根据自己的亲身体会,将一些课本上没有的知识教给学生,拓宽学生的眼界,使学生认识到这门课程在生活中的应用是那么的广泛。

学生做实验绝对不能人云亦云,要有自己的看法,这样就要有充分的准备,若是做了也不知道是个什么实验,那么做了也是白做。实验总是与课本知识相关的在实验过程中,我们应该尽量减少操作的盲目性提高实验效率的保证,有的人一开始就赶着做,结果却越做越忙,主要就是这个原因。在做实验时,开始没有认真吃透实验步骤,忙着连接实验仪器、添加药品,结果实验失败,最后只好找其他同学帮忙。特别是在做实验报告时,因为实验现象出现很多问题,如果不解决的话,将会很难的继续下去,对于思考题,有不懂的地方,可以互相讨论,请教老师。

我 们做实验不要一成不变和墨守成规,应该有改良创新的精神。实际上,在弄懂了实验原理的基础上,我们的时间是充分的,做实验应该是游刃有余的,如果说创新对于我们来说是件难事,那改良总是有可能的。比如说,在做金属铜与浓硫酸反应的实验中,我们可以通过自制装置将实验改进。

在实验的过程中要培养学生独立分析问题和解决问题的能力。培养这种能力的前题是学生对每次实验的态度。如果学生在实验这方面很随便,等老师教怎么做,拿同学的报告去抄,尽管学生的成绩会很高,但对将来工作是不利的。

篇16: 实验心得体会

在成功的道路上,免不了失败。一次小小的实验,就可以证明,失败乃成功之母.

那是风和日丽的一天早上,我坐在家里悠然自在的看报纸。几个黑体大字引人注目:一条细线可以钓起冰块!不是吧?我不敢相信自己的眼睛,便试做起来。

我从冰箱里拿出冰块,放在杯子里,撒点盐,边开始我的“钓鱼”了。我满怀信心地把细线放进撒了盐的冰块上,往上一提,只见冰块刚粘在线上就掉下来了,我反复试了几次,都是毫无收获。我真的想放弃了。正当我气馁的时候,姐姐看了看我,却说:“我想不是报纸作的假,而是你不会做,你要放弃,你就是缩头乌龟!”我生气极了,说:“我不要做缩头乌龟,最多我再做一次!”我拿起报纸有认认真真的看一遍。哦!原来是顺序搞错了。报纸上说“先把细线放在杯子里,再撒上盐,冰块就会像与般轻而易举地钓上来了。”而我却先把盐撒在冰块上再把细线放在杯子里。

我得意扬扬,重新做起防盐的步骤。我先把细线放在杯子里,再撒上盐,然后把细线往上一提。啊!简直就像千万吨钢铁系在一根头发上一样。细线把所有的冰块都钓上来了。顿时,我感觉到细线上的不是冰块,而是成功。我终于成功了!

通过这次的钓冰块实验,我知道了:做每一件事,无论遇到什么困难,都不要半途而废,到最后就能尝到甜的滋味,酸、苦和辣只是成功的调和剂。

“纸能托住水!”这句话不可思议吧?一张普通上午纸竟能托住一杯水。这是怎么回事呢?这还得从头说起。

一天,我正在看一本有关科学制作的书,忽然一个标题吸引了我的眼球:“能托住水了纸”。这怎么可能呢?纸一碰水就会破的啊?于是我怀着不解的心情,按照书上的做法去做。首先我准备材料:一只玻璃杯、一张平整的纸还有水,然后往杯子里灌了些水,将平整的纸慢慢地盖在瓶口上,并让纸紧紧地与瓶口粘合在一起,再拿起杯子,将杯子迅速地倒转过来。这时,意想不到的事情发生了,水竟然“毫不客气”地流了出来。这是怎么回事?我明明按照书上的去做的啊?我不解地去问妈妈,妈妈听了以后,就把我那书翻来看,妈妈看完,好像无奈地对我说:“说你平时做事认真点你就不听,你看,书上明明说要灌满水了,你只灌了约半杯水,水当然会流出来了。”原来是这样啊!都怪自己马虎。于是我连忙重新做了实验,这次我更仔细了,。果然,这次实验成功了,水并没有流出来,而是被纸稳稳地托住了。这是什么原因呢?我上网查了查,网上解释说:在瓶口放纸,由于在杯中装满了水,已经没有了空气,所以不存在大气压。然而,把杯子倒过来的时候,纸的另一侧依然受到大气的压力,所以水不会流出来。

啊!这次的科学实验太有趣了,这不仅让我尝到成功的甜头,同时也激励着我要多去探索科学。我永远也忘不了这次有趣的科学实验。

篇17: 实验心得体会

为期一周的电子工艺实习终于结束了,实验过程中,大家都在忙碌自己的事,紧张而又有序,时间过得很快,实验中遇到不少问题,通过自己的努力最终都解决了,以下是我的电工实习心得:

刚开始时我并不清楚电子工艺实习到底要做些什么的,以为像以前的金工实习那样这做做那做做。后来得知要每个人做一个波形发生器。听起来真的很有趣,做起来应该也挺好玩的吧!就这样,我抱着极大的兴趣和认真的心态开始这次的实习战役。

第一天上午,主要是实验老师给我们讲解实验的要求任务,如何焊接元件,及一些主要元器件的识别等。下午,也并不是学制作,而是做一些基本工的练习,练习如何用电烙铁去焊接元件。电烙铁对我来说并不陌生,我以前在电子协会时用过很多,算得上会用但谈不上是熟练那个,所以我也很认真地对待这练习的机会。焊接看起来很简单但个中有很多技巧要讲究的,在焊的过程中时间要把握准才行,多了少了都不行!练习时最好边做边想想老师教的动作技巧这样学得比较快一点。

第二天的主要任务是做个一简易的电子彩灯,并将波形发送器电路板钻好孔,其实也是为波形发生器做准备的。电路很简单,元件也比较,很快就焊接完毕,但是当接上电源时,才发现彩灯两个都只亮着,却不交替闪烁(实验要求),没办法,继续找问题所在,换了几次元件,始终都是那样,我静下心,仔细的想问题究竟在哪呢?最后我觉得是否电路有问题,就重新检查了遍,果然,有个地方接错了,马上改正,结果令人很兴奋,成功了。

第三天,我们要把插好的每个元件焊接上去。由于昨天打好孔了,接下来就是焊接了,汲取昨天的教训,做事应心细,稳定,不能过于急躁。所以过程比较缓慢,直到下午4点左右才完全焊接完,做完后,给老师接查,调试后发现我的

制作有点小问题,但老师说基本通过了!检查时,挺紧张的,因为那么多元器件,如果出了点小问题,还真不知从何查起。看着自己的劳动成果,很开心。

这次实习很有趣很轻松,通过老师的讲解我懂得了波形发生器的基本原理,同时也学到了很多有关电子的专业知识。在实习过程中不断提高自己的动手能力之余,也体会到了实践的乐趣。因为在实践时往往会遇到很多问题,遇到问题后要细心检查才能发现其中的错误,最后就要想办法去解决这些问题。这样的一个过程不知不觉地使我的实践能力提高,为以后学习、做实验打下基础!

篇18: 实验心得体会

大学是一个全面发展的时期,只学习课本的知识已经不能满足社会发展的需要。为了拓展自己的专业知识,提高自己专业水平,我在大三第一学期参加了大学生创新实验,在为期一年的实验中,我学到了很多。值此大创结题的时刻,我说说这一年的心得体会。

首先,通过一年的实验,我学到了更多专业课上不能学到的知识及技能,同时,我的实验动手能力也得到了进一步地提高。通过阅读了大量的文献,特别是部分英文文献的学习,大大开拓了我的视野、拓宽了我的知识面。在大量文献和实际操作的基础之上,认真思考,进行实验的设计和规划、策划,这锻炼了我的独立思考能力。平时,我还不断的向老师、学长请教,与同学、朋友交流,无形中增强了我的学习能力和交流能力。它不仅是课堂教学的延伸和补充,而且对于激发我的学习兴趣,开阔我的视野,培养我的探究精神,了解最新的科技动态,提高我的动手能力和分析、解决问题的能力,都是十分有意义的。通过半年多的实验工作,使我对从事科学研究和实验操作有了较为深刻和清晰的认识:首先通过查阅大量的资料,对本课题有了一个整体的、清晰的认识,在指导老师热心帮助下,主动参与确定具体实验方案、进程,并亲自动手进行实验操作,在实验过程中不断地思考和分析、解决实验中出现的各种问题,取得了一定的成绩。 其次,在这次大创实验中,这次让我深刻明白了许多做人道理,

向他人虚心求教,与人文明友好交往等一些做人处世的基本原则都要在实际生活中认真的贯彻,好的习惯也要在实际生活中不断培养。在工作中和其他成员保持良好的关系是很重要的。对于自己在校大学生,面临踏入社会的人来说,需要学习的东西还很多,他们就是最好的老师,正所谓“三人行,必有我师。”这次所学到的经验和知识大多来自老师和小组成员的教导。我们每完成一项工作都会向老师征询意见,总结以前的工作并且计划接下来的工作,所以与老师的有效配合也是我们结题的重要的一个方面。我们以后还要争取更多的这样的训练来完善自己充实自己。在实验室的浓厚实验氛围内,在这个温暖欢快的大家庭里,我们在思想和心理上不断的成长。

第三,在实验过程中也培养了我良好的实验素养,不违反实验操作,不损坏仪器,不浪费药品的,在不影响实验的前提下尽量节约资源,每次实验完毕,要清洗、清点和摆好实验用品,遇到困难也会根据自己所学的理论知识寻找解决方法,而不是一味的问别人。这也是我作为学生该具有的基本素质。

最后我深深的感受到所学知识的肤浅和在实际运用中的专业知识的匮乏。刚开始的一段时间里,对一些工作感到无从下手,茫然不知道所措,总以为自己学的不错,一旦接触到实际,才发现自己知道的是多么少,这些与实践还有一段距离。老师常说理论要和实践相结合才能发挥我们自身最大的价值。当我真正独立

去实践,去体验的时候,我才突然发现:原来那也不是一件很难的事情。

“千里之行,始于足下”, 在这为期一年的课题研究过程当中,我感觉收获颇多,受益匪浅。这次创新实验,我认为是一次成功的有用的实践。它是我大学期间的一段重要的经历,也是我一生中的一笔宝贵财富。在此感谢学校给了我这次锻炼的机会,最后,我用几句话来总结我的实践心得体会:道路是曲折的,但前途是光明的。我们要积极地面对困难,挑战自我。

实验心得体会

实验心得体会

计算机实验心得体会

软件实验心得体会

实验感想心得体会

嵌入式实验心得体会

生物实验心得体会

陶瓷实验心得体会

工程实验心得体会

管理实验心得体会

《matlab实验心得体会(锦集18篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

点击下载本文文档