simulink仿真实验心得体会
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
竭诚为您提供优质文档/双击可除simulink仿真实验心得体会
篇一:matlab与simulink仿真学习心得
matlab与simulink仿真学习心得
班级:07610学号:0720xx姓名:吕天雄
一matlab学习心得体会与编程实践
学习matlab的心得体会
真正开始接触matlab是大二上就开始了,到现在已经一年多了,在此之间,matlab的确为我提供了很多便利。matlab的确不愧成为是草稿纸上的语言。我们不必去为很简单的显示效果图形去找一些什么其他软件或者研究比较复杂的计算机图形学,一个plot或者别的函数往往就可以得到很满意的效果。
其实最初开始学习matlab的时候感觉这个东西和c没什么两样,但是后来具体到一些东西,比如信号处理和数学建模上以后才感觉到使用matlab编写程序去验证结果比c 要节省很多时间,而且matlab写东西基本都是按照自己的
思路平铺直叙很少去考虑什么函数的嵌套调用或者指针等
等很头疼的东西。
关于matlab的学习,我感觉其实百度和matlab自带的help基本能够解决绝大数问题,而且一些比较好的论坛比如都会为你产生很大的帮助,关键是在于多动手实践,多思考。但是matlab毕竟只是一个工具,原理和一些基本的编程素
质还是必须有的,否则matlab最多也只能是验证一些别人
的东西而已,根本帮不上什么忙的。
遇到的一些问题的思考方式与解决办法
最开始用matlab的时候是在大物实验,实验要求去根
据测量得到的数据作出图。但是手动用铅笔去画确实很麻烦,所以用matlab确实可以省去很大的麻烦。但是第一次遇到
问的时候是有关极化坐标下的曲线拟合。
首先是一个物理实验的问题;在做一个关于光的偏振的实验的时候,最后的结果要在一个极化坐标下显示出来;因为数据是离散的,所以显示出来的图像是一个折来折去的一个东东;然后很自然的想法是对这个曲线进行插值处理。
但是极化坐标下matlab并未提供插值处理的函数,interp1这个函数只能在笛卡尔坐标系,也就是直角坐标系
下使用。
然后就想到把极坐标的数据转换的直角坐标系下,
pol2cart可以实现这个想法,但是随后而来,也就是最后导
致整个问题失败的关键也在这里。
pol2cart以后产生的一串数据中出现了重复的数据,那么interp1这个东西也就无能为力了,因为interp1不能处理一串数据中有重复出现的情况。最后的处理办法是把这些数据cos,sin这些东西变换一下后,使其大致规则,然后再用polar
画出极坐标下的图形。
接下来这个问题就有点超过我的范围了,可能会有点叙述不清楚。问题可以概要为:人脸网格插值。
这是一个用三角形网格表示的一个人脸模型。需要通过插值使其变得光滑,当然问题的复杂之处在于,插值会改变原本的网格结构。
对于这个问题许多人都给出了解决的办法,当然是一些关于人脸识别技术和运动图像处理的范畴之内的。
主要有两种,第一种是face—ls算法。这种算法是基于RbF(径向插值函数)和loop细分原则的一种算法,当然其精确程度比较差点。但是速度挺好。原理是:基于网格上的点,产生出顶点的迭代函数,从而产生出新的定点,进行细化。然后进行插值。也就是引进新的顶点。分为两个过程内部插值和边缘插值。具体可以去看兰州大学信息工程学院的学报。第二种也就是基本的老办法RbF。首先解释一下什么叫做径向插值径向基函数
主要是考虑多维空间的数据插值问题,径向基函数在三维图形的变形中常常被采用,用其来变分三维人脸的时候还应结合人脸的固有特征。确定该方法来实现三维人脸变形是可行的,但要构造好的基函数,以及解这些高维方程的解仍是难点。插值方法:
假设大多数人脸的形状都可以由一个拓扑原型变化得来,那么,通过调整一个一般模型的构造参数可以建立不同的面部模型。但是,这种参数模型仅仅局限于那些构造参数已知的情况,并且对特定人脸参数的调整非常困难。在离散数据的多变量插值问题方面,径向基函数(radialbasisfunction,RbF)插值方法是一个行之有效的工具,所以也适用于类似人脸这样高维曲面的近似或平滑插值。现有的许多方法使用了基于RbF的插值技术,将一般人脸网格变化到特定人脸的形状。这种方法的优点在于:(1)通过插值可以得到丢失的数据点,所以源网格和目标网格不需要相同数目的结点;(2)如果选择了合适的匹配点,数学上可以保证能够将源网格变形到目标网格。
当然我也不是很懂,只是理解了部分。这种方法的关键是找到一个很好的核函数来计算出新的顶点。
最后问题解决的方式是查着了一些图书馆的学报。然后而且在网上找到了部分代码。然后做出来的。这是我校大四一个同学毕设中的一个东西。
其实这个事件最好的解决办法是在3d-max中,不过因为没能找到matlab与3d-max是怎么接口的,所以作罢了。
第三次遇到的问题是我在数学建模课上遇到的一个关
于矩阵lu分解的问题:
matlab作出的结果和手算的结果竟然不一样。
1011
1u=一个矩阵a=经过三角分解为l=0111
因为1/为一个极大数则1—1/可以看成—1/;
设=0.000000000000000000000001%10的负24次方
从而l*u=
则最后一位1没有了变成了0
其中l=
u=
matlab程序为
epusino=0.000000000000000000000001;u=[epusino1;0-1/ epusino];l=[10;1/epusino1];l*uans=
0.0000000000000001.0000000000000001.000000000000000 0
而直接用lu函数对矩阵a分解的结果为
a=[epusino1;11]a=