matlab实习报告
仿真条件:电机空载下,输入为阶跃信号,仿真时间为0.4S。
阶跃信号,仿真时间为0.4S。
图二 磁链图
实验结果:开始时有摩擦转矩,在短时间内能够快速形成圆形转矩。
图1 速度响应曲线 实际结果:时间与电机负载转矩为0时的电机响应速度曲线,速度响应误差为0。
仿真条件:电机空载下,输入为
仿真条件:d轴电流设置为0,输入为阶跃信号,电机空载运行响应时间为0.4秒。
图三 速度电流响应曲线
实际结果:在0.02秒时间达到目标转速,iq达到稳定。
实验三
实验目的:验证比列系数对稳态跟踪误差的影响。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为169,KPD为200.8,kpi为0
图四 速度 EP的响应曲线
试验目的:验证比例系数对稳态跟踪误差的关系ESS=V/K稳态跟踪误差越来越小。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为500,KPD为200.8,kpi为0。
图五 速度 EP的响应曲线
试验目的:验证比例系数对稳态跟踪误差的关系。
仿真条件:修改KVFF为0,KAFF为0,负载为0,KPP为5000,KPD为200.8,kpi为0。
图六 速度 EP的响应曲线
实验结果:Ep=V/K,随着K的增加,V不变,EP渐渐减小,前馈=1,完全补偿误差,稳定位置跟踪误差=0.试验目的:修改前馈系数观察稳态跟踪误差关系。
仿真条件:使KVFF为0.5电机负载为0使电机的摩擦系数为0。
图七 速度 EP的响应曲线
试验结论:修改前馈系数观察稳态跟踪误差关系。仿真条件:使KVFF为1电机负载为0使电机的摩擦系数为0。
图八 速度 EP的响应曲线
实验结果:由稳态跟踪误差=速度/比列系数(ess=v/k)得,比列系数越大,速度不变,稳态跟踪误差越大。
实验二
条件:电流给定信号(iq=500HZF方波),Id=0。电机的摩擦系数为无穷大,看Iq的响应波形。
实验结果:电机的摩擦系数为1000时,TL会反向转动。
条件:电流环达到速度环输出,还原参数速度还比列信号改成正弦波,继续增加频率。
正弦波频率为100HZ
正弦波频率为200HZ
正弦波频率为500HZ
正弦波频率为700HZ
实验四
关键词:matlab,工程力学专业,课程实习
MATLAB软件集数值分析、矩阵运算、信号处理和图形显示于一体, 构成一个功能强大、方便、界面友好的用户环境。MAT-LAB软件作为数学类科技应用软件在求解数学模型及仿真分析中具有不可替代的优势和作用, 成为众多理工科专业学生必须掌握的应用软件, 如自动化控制专业、通讯工程专业、工程力学专业、应用数学专业等。
我校工程力学专业2006秋学期开设MATLAB与工程应用课程, 该课程的开设对工程力学专业学生毕业论文质量的提高有促进作用, 同时还存在不足【1】。为了加强工程力学专业学生应用MATLAB软件的能力, 从2008年秋学期开始, 工程力学专业开设MATLAB与工程应用课程实习课, 学时两周。
1、MATLAB与工程应用课程实习的主要内容
MATLAB与工程应用的两周实习在MATLAB与工程应用课程讲授完之后进行。主要内容包括选题-选择具体的课程实习任务书, 按任务书要求查阅相关资料, 编制相应的MATLAB程序或应用相应的MATLAB工具箱求解问题, 分析得到的结果, 最后撰写课程实习说明书。选题集中在强度和振动两个方面, 也有运动学的内容。课程实习的目的是培养学生综合应用力学理论、MATLAB软件解决问题的能力。学生学习过的力学理论包括理论力学、材料力学、结构力学、弹性力学、塑性力学、振动力学等, 学习过的计算机课程有计算机技术基础、工程制图与CAD基础、MATLAB与工程应用、ANSYS程序应用等。在完成MAT-LAB与工程应用实习时, 通过建立力学模型、数学模型、编程求解、结果分析, 学生可以综合应用所学知识解决实习题目中的问题。实习题目以基本力学问题为主, 振动方向如两自由度、三自由度振动系统求解, 集中质量法求简支梁的模态及响应, 两自由度车辆悬挂系统振动分析, 三层、五层钢筋混凝土结构地震反应求解等;强度方向如MATLAB有限元法求解平面钢架结构等。平面钢架结构可以有多种形式, 可以求解内力图、应力、应变等。有的问题需要编制MATLAB程序求解, 有的问题需要应用MATLAB工具箱求解, 有的问题两种方法都可以解决【234】。课程实习说明书要求详述求解过程, 得出必要的结论, 附录程序或框图。教师在指导过程中, 随时掌握学生的工作进度, 逐个让学生演示程序或框图, 确保实习质量。
2、MATLAB与工程应用课程实习教学实践的心得
通过MATLAB与工程应用课程实习的教学实践, 对工程力学专业学生前期学习状况有了比较全面的认识, 对学生后面完成与MATLAB相关的毕业论文, 提供了很好的支撑。
从力学基础来看, 工程力学专业的学生掌握了较多的力学理论与方法, 大部分同学能够很快的理解实习题目中的力学问题, 准确的建立相应的力学模型和数学模型。但是, 也有少数同学力学基础不扎实, 需要老师和同学的帮助才能完成建模工作。从计算机软件应用能力看, 学生需要借助于相关参考资料才能完成工作, 编程能力特别强的同学较少。这也是MATLAB软件的优势, 不需要编制过于复杂的程序。从学生的学习态度来看, 同学们比较喜欢上机实习这一环节, 只不过有一部分同学要准备考研, 会牵扯一部分精力。
对指导教师来说, 准备难易适中的题目, 制订科学合理的实习进度, 耐心辅导和严格考核, 是完成高质量课程实习的关键。课程实习的难点主要在以下几个方面。
第一, 多自由度振动系统耦合问题的求解。不论是编制程序或应用SIMULINK仿真求解, 对学生来说都是难点。学生既要把多自由度振动系统的理论吃透, 又要掌握相应的编程或建框图技巧。
第二, MATLAB有限元法的应用。MATLAB不同于ANSYS, 需要编制较复杂的程序才能求解。学生需要掌握相应的有限元理论和编程技巧才能完成工作。
第三, 地面随机激励振动信号的生成。一些振动问题的求解用到地面随机激励振动信号, 如地震波、路面激励等, 该类信号的生成需要查阅相关的标准和资料, 编制相应的程序或框图。
针对上述难点, 主要通过教师指导和学生小组讨论的方式解决。在解决难点的同时, 也锻炼了学生解决问题的能力。
在指导MATLAB与工程应用课程实习的过程中, 也发现了一些问题。
第一, 实习时间有点短。工程力学专业学生要求解决相对复杂的力学问题, 否则达不到学习目的, 因此实习题目不能简单。相比较来说, 工程力学专业学生学习的计算机软件课较少, 特别是编程能力相对较弱, 短时间内完成实习有一定困难。
第二, MATLAB与工程应用课程实习课放在大四的秋学期, 与学生的考研和就业有一定的冲突, 会影响实习效果。
第三, 少数学生基础较差, 完成课程实习有难度。
3、总结
经过几年的MATLAB与工程应用课程教学和MATLAB与工程应用课程实习的教学实践, 有收获也存在问题。总体上看, 收到了好的教学效果。
(1) 通过MATLAB与工程应用课程实习, 锻炼了工程力学专业学生综合应用力学理论、计算机软件求解复杂力学问题的能力。
(2) MATLAB与工程应用课程实习为工程力学专业学生的毕业论文提供了有力支撑。
(3) MATLAB与工程应用课程实习培养了学生合作的能力。
对于存在的问题, 建议通过加强教学管理, 调整专业培养计划加以解决。
参考文献
[1]贾宏玉, 方治华, 顾永强.MATLAB教学与工程力学本科毕业论文相互促进的探讨, 福建电脑.2009年第1期, 197.
[2]Edward B.Magrab著, 高会生等译.An Engineer's Guide to MAT-LAB (MATLAB原理与工程应用) .电子工业出版社, 2002.96-98。
[3]姚俊, 马松辉编著, SIMULINK建模与仿真, 西安电子科技大学出版社, 2002。
在上大学之前,计算机在我的印象和生活中都是一种用于娱乐的机器,玩游戏、上网、看电影、听音乐和偶尔搜索资料。来到大学以后,我对计算机的用途有了新的认识。大一的一年里我们接触了很多不同类型的软件有作图的,有做视频的等等。我们还学习了c语言,虽然只是学习的一些皮毛,但是我觉得这一点皮毛足以改变我对计算机的使用和看法了。
首先我们来介绍一下matlab,全称是matrix laboratory,即矩阵实验室,是math work公司推出的一套高效率的数值计算和可视化软件。它是当今科学界最具影响力、也是最具活力的软件,它起源于矩阵运算,并高速发展成计算机语言。它的优点是强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面、便捷的与其他程序和语言接口。matlab软件的功能。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。在国际学术界,matlab已经被确认为准确、可靠的科学计算标准软件。在国际一流的学术刊物上,尤其是信息科学刊物上,都可以看到matlab的应用。
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点。正如同fortran和c等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的matlab,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。matlab的最突出的特点就是简洁。matlab用更直观的、符合人们思维习惯的代码,代替了c和fortran语言的冗长代码。matlab给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下matlab的主要特点:
1、matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(m文件)后再一起运行。新版本的matlab语言是基于最为流行的c++语言基础上的,因此语法特征与c++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是matlab能够深入到科学研究及工程计算各个领域的重要原因。
2、matlab的数据库的可覆盖性,可调用性。我记得c语言中,假如你得调用一个数值,必须是局部函数中赋值,否则就定义为全局变量。还有在c语言中数据的变量储存是一个问题,自动的有auto,静态变量有static和register。我们有时候很难记忆,所以数据储存容易出现问题。而matlab软件的数据是由于matlab 语言库函数与用户文件的形式相同所以用户文件可以像数据库函数一样随意调用。所以用户可根据自己的需要任意扩充函数库。
3、matlab软件编程的简便性,清晰性。用matlab软件设计程序,它更加方便快捷。matlab 的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在matlab环境下,数组的操作与数的操作一样简单。对比c语言,matlab确实简单不少。我们在编写程序时简便了许多。例如,求1 1 2 3 5 8 13?这个算法。c语言得用许多的语句去循环算这个算法。而matlab软件可以首先数据初始化,然后用while去循环,做出循环体,就可以你要多少数据,它会给你多少数据。还有在matlab软件设计程序时,少了很多的定义,减少了复杂度,节省了计算机的暂时内存使用率。就和c语言一样,在语句结束时用“{ }”,matlab软件中一句话结束时,也需要用end。
4、强大的科学计算机数据处理能力,matlab是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如c和c++。在计算要求相同的情况下,使用matlab的编程工作量会大大减少。matlab的这些函数集包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
5、最后说我觉得matlab应用软件最强大,最实用的功能——绘图。不管你二维图形,三维图形,还是现在流行的四维图形。只要你想要,能编写出来函数式。在短短几秒钟之内,它会呈现在你眼前。另外就是图形的直观性,你在绘编图形时,加上一点修饰,它会自动标注你想要图形的阴影部分。matlab 具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要,坐标图上加标题。坐标轴标记。文本注释及栅格等,也可以指定图线形式(如实线、虚线等)和颜色,也可以在同一张图上画不同函数的曲线,对于曲面图还可以画出等高线。
6、应用广泛的模块集合工具箱,matlab对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,matlab已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、lmi控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、dsp与通讯、电力系统仿真等,都在工具箱(toolbox)家族中有了自己的一席之地。
说完了matlab软件的功能,我知道它的功能远远超过我知道的。matlab软件是一种全能的软件。它的程序语言是其他的语言不能比拟的。但是在学习的过程中,我真正知道的matlab软件的应用简单,应用的高科技性,我们得会很多知识才能应用好matlab软件。现在,我开始说我学习它的感悟:
1.我们可以只学matlab的基本应用。为了方便自己的工作或学习,那么你没有必要把matlab教程全部学会,只需要学你需要的那部分即可,比如,绘图,矩阵运算,等等,根据你个人的需要而定,但是基本命令、数据类型、基本的程序结构(条件语句,循环语句,嵌套)、文件的io是必须看的,因为任何一个程序都需要这几个基本的块。
2.必须在c语言的基础上去学matlab软件的编程。这样可以减少走弯路,节省时间,便于理解其程序。对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,但是耗时太长,也就是说你的程序没有错,但是不适合实际。或者说,对于规模小的问题能够解决,但是规模大一点的问题就需要很长很长的时间,这就需要对程序的结构和算法问题进行改进。所以要理解c语言编程基础上去学matlab编程。
3.基础知识于实际操作结合。你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充。
4.有一定数学基础。matlab软件是与高等数学,计算机科学相结合的软件。所以,当你学习matlab时,你也得会一定的数学。不会的话,你也要有一本关于matlab软件自带的函数表。你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数(如vb中,大部分的函数都需要自己编)。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间。5.最重要的是你得会英语。matlab软件里的东西全是英文,所以你得有一本英语翻译书。把那些最基本得单词,工具栏,功能键了解清楚。这总比你一个一个去试强得多。现在学它最头痛的就是英语不好,你不能知道那个单词是一个什么关系数列。在获取帮助的时候,matlab全是用英语去解释,你根本看不懂它用来干嘛,你接下来应该做什么。只会看着英文发呆的。所以我建议有一本翻译书。
2不要试图掌握matlab的每一个功能,熟悉和你专业最相关的部分就可以了。不要问:明天要交作业了,哪位大侠帮忙写个程序吧,或初学matlab,不懂呀,大哥大姐帮忙写个程序之类的话
不要等到要用到才去学,如果你有兴趣,你有时间,你可以多学些东西,说不定什么时候就用了,机会只偏爱那些有准备的头脑,到时候就不会说什么,要做东西想让人指点,基础的东西来不及仔细看了,一写程序吗,低级错误满天飞 不要说:不要让我看matlab英文的帮助我看不懂--谁都是从不懂到懂的 不要担心:我编程能力差,我一定用不好matlab。6 不要只问不学 7 学maltab要有耐心 看到某本书中或论坛的帖子中解决问题的方法要试着解决类似的问题,要举一反三,要学会变通 有了问题先自己想,察看帮助,1个小时后没有结果再问别人,不要一有问题就发问,然后什么都不管了,把希望寄托在别人身上 10 学会用搜索引擎,在网上可以找到很多资料,有的问题一搜索就能找到的,就不要来问别人了 11要多动脑,多动手写程序、调试,看程序时候多想几个为什么,理解别人程序中精华的东西,多自己调调程序,可以改改程序,把知识转成自己的,弄懂一两个经典例子比粗粗的看一大书要好,值得一提是不是一下子就能看懂相对比较长,比较复杂的程序的,要做的是自己慢慢去分析,利用已经有的资料和帮助,等慢慢搞懂它,要多看几遍,相信多看一遍你就会有一些新的认识,一直到你已经掌握里例子的精华。多读matlab高手写的程序,帖子,找到一个高手,在几个大的论坛可以搜索出一大堆的帖子,然后慢慢去看吧,从中可以学到很多东西,也许你会发现很多你都看不懂,这很正常,别人写程序考虑的是能实现这样的功能,运行效率等问题,而不是考虑是不是很容易能让别人理解,你就看你现在能看懂,再看些通过你断点调试,查help能看明白的,看不懂的就先放下,遇到好的和看不懂,你又很挺感兴趣的话题,你先收藏起来,过段时间你再回头看看,你会发现,每看一遍,你就会多懂一些东西,当你第三遍甚至第四遍看同一个程序的时候,也许你就会有豁然开朗的感觉。一个比较长的程序,首先不要怕长,把它分解成一句一句,一句一句看懂它。要明白一口吃不成胖子,好东西要慢慢体会,才能领会。电脑上复制粘贴很方便,对于别人解决的你专业上的问题,最好自己写一遍,这样印象深刻,对于不懂的函数用法的函数,help中查查,能看懂多少算多少,对于程序断点调试一遍,弄清楚每个语句的功能,14 尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓 善于总结,学习过的知识,看过好的帖子可以收藏起来,过段时间再复习一下,一段时间的积累,你会发现你的水平在慢慢提高 16 多用help,see also lookfor get,set 等常用命令 要大胆的去试,试过才知道可不可以,如有人问可不可以把多个子程序放在一个m文件中,呵呵,试试不就知道了 多参与讨论,不要只关心自己的问题,也经常关注别人的帖子,从中也可以学到不少东西的 提醒一句,不要做只会下资料而不看的收藏家,这样对你没什么意义,书不在于多,真的看一两本书也就够了,以后要用的时候,再去查书,一味的东看看西看看,见了别人的资料,不关好不好,就留信箱的人,我感觉也不该这样,有了那么多资料,就别想着还有没有比这更好的了,开始学吧先写这么多吧,希望对新手能有点用 感觉语言是相通的,不一定只针对matlab这门语言
如何写程序,如果你还是初学者,那么尽量不要复制粘贴,那样你是永远也无法学会写程序的。另外也不要对着别人的程序,一个字一个字敲进去,那样的话你只能成为一名优秀的打字员。一个比较好的方法是先读懂他,理清他的思路,然后自己动手写,写不出来的时间再看看别人的程序,然后对照的看,你的和他的程序差异在哪里,写的过程就是提高的过程。
程序运行有错误怎么办,好多错误。首先,别害怕错误,这是每一个人都会碰到的问题,大牛,小虾都一样,你对你自己说 这不机会又来了,调程序的过程就是提高的过程。不要一遇到错误就来论坛发问了,如何调,关键是看错误提示,看错误的类型及出现在哪条语句上。好好练自己的调试能力,这不仅可以帮你找到一些错误,有是碰到一些读不懂的程序,借助断点调试可以帮你读懂程序
还不行怎么办,用搜索引擎找答案(有时候把错误提示输进去就可以找到答案了)
还不行,这才发贴和别人交流。。
写程序原则 尽量写的简单 通俗容易懂,让那些不如你聪明的人都能看懂,命名的时候做到见名知意,写的时间多加点注释,不然,不要说别人读不懂你的程序,等过几天,你自己也读不懂了,可以看看matlab里的函数,注释也写的很详细,当你觉得有些方法比较常用的时候,你可以封装成函数,加上一些说明,以后要用的时候,直接调用就可以了,注重代码的重用性。
勿在浮砂筑高台,基础很重要,为什么学matlab,如果你只是把它当成 c c++的附属品,用这些语言的思维来写一些奇怪的类matlab程序,我想你还是直接用c 或 c ++更合适,不要一开始就想着用matlab 做出什么东西,好好看一本matlab的基础书,这些基础对你以后的进阶会很有帮助。再说混合编程,什么都不懂就想着去混合编程是不实际的,maltab版本 vs 的版本不同,都会对混合编程影响的。所以结果是对着别人的例子来做也不一定会做出来,一是别人讲的有些细节问题没讲清楚,二是版本问题。就算做出来,如果不明白为什么要这样做,又有多大意义呢。然后自己做一个,又不会了。说这些的目的无非是希望想做混合编程的朋友多了解一些基础的东西,否则在混合编程这一块上会浪费很多时间,结果还是没有解决问题。
7.0系列 深入浅出matalb混合编程这本书是值得一看的。多看帮助之类的话这里就不多说了。
班级:14级电子信息与科学技术
姓名:
孙凯
学号 201442398
在过去的两个月里,我们学习了MATLAB教程这一门课程,对此我有一些自己的思考与感悟。
通过学习,我们了解了该软件的历史,是美国mathwork公司推出的一套高效率的数值计算和可视化软件。作为当今社会最具影响力、最具活力的软件,它起源于矩阵运算,现已发展为一款高度集中的计算机语言。
然后我们又学习了这款软件的功能,学会了用它来进行较复杂的科学运算,并实现高质量图形的可视化及界面设计,与其他程序和语言接口。因此,通过这个软件,我们既可以利用其强大的运算功能,又能使用它进行绘图,在接下来的学习中它必定会展现出更大的作用,与我们的生活息息相关。
这样一款应用相当广泛的数学软件,我们也许才刚刚触及皮毛,但我相信在接下来的学习中老师会带领我们进一步加深对它的使用的熟练程度及认识。
在数字信号处理(DSP)系统中,无论在时域或频域都离不开卷积运算和快速傅里叶(FFT)运算。Matlab具有强大的矩阵运算能力,方便实用的绘图功能和语言的高度集成性,在DSP开发中,使用Matlab可以快速对系统进行仿真运算。
设输入信号为x(t),其频谱函数为X(jΩ),该信号通过滤波器h(t)后,其输出信号y(t)的频谱函数Y(jΩ)是频谱函数X(jΩ)与滤波器的频谱函数H(jΩ)的乘积,即:
undefined
该信号通过低通滤波器的示意图如图1所示。
而在时域,输出信号y(t)实际是输入信号x(t)与滤波器h(t)的卷积。就是说频谱函数的乘积相当于时间函数的卷积,反之亦然。即:
undefined
由于DSP主要依靠计算机完成,而计算机无论在时域或频域只能处理有限长的离散信号,因此上述关系可表示为:
undefined
式中:n表示离散时间;数字频率ω=ΩTs=2πf/fs;f为输入信号频率;fs,Ts为抽样频率和周期。
1 实现离散卷积的方法
可以使用线性卷积、圆周卷积实现离散卷积,也可以根据时域信号函数与频谱函数的关系,使用快速傅里叶变换(FFT,IFFT)实现离散卷积。
1.1 圆周卷积
线性卷积是求离散系统响应的主要方法之一,许多重要应用都建立在这一理论基础上,如卷积滤波等,专用函数conv(x,h)可完成线性卷积过程。
圆周卷积的计算速度要远远快于线性卷积,如果选择圆周卷积的长度L≥N1+N2-1,则可以用圆周卷积取代线性卷积。方法如下:
(1) 定义圆周卷积的长度:选择L=N1+N2-1。
(2) 将两个序列的长度都补足为L:
将长为N1的序列x(n)延长到L,补L-N1个零,
将长为N2的序列h(n)延长到L,补L-N2个零。
(3) 反转x(n),周期延拓为序列undefined(n),取主周期。
(4) 循环移位:与线性卷积不同,圆周卷积运算中采用的是循环移位,有限长序列x(n)的循环移位定义为:
undefined
其含义如下:① x((n+m))N 表示 x(n) 的周期延拓序列undefined(n)的移位:
undefined
② x((n+m))NRN(n)表示对移位的周期序列x((n+m))N取主值序列,所以f(n)仍然是一个长度为N的有限长序列。
为此定义一个位移函数cirshiftd.m如下:
%保存函数为cirshiftd.m
function fm= cirshiftd(x,m,N);
n=[0:1:N-1];
fm=x(mod(n-m,N)+1);
这里的x[mod(n-m,N)+1]即表示对向右移位N位的周期序列x((n+m))N取主值序列的运算。
(5) 将序列x与h进行循环移位生成的矩阵H的转置矩阵相乘,即完成将x(m)和h(n-m)所有对应项相乘之后相加,完成圆周卷积。
例:已知x=[1,2,3]和h=[1],求两序列的卷积。
用圆周卷积的计算程序如下:
运行结果:y=[1 3 6 7 5 2 ]
1.2 线性卷积的FFT算法
FFT运算具有速度快、计算量小等优越性,是DSP的核心算法。根据信号在时域与频域的关系,可以用FFT计算线性卷积。方法如下:
(1) 定义长度:选择N=N1+N2-1。
(2) 求两个要卷积序列的N点频谱函数:
求X(k)=FFT[x(n)]
求H(k)=FFT[h(n)]
(3) 将两个频谱函数相乘:
求Y(k)=H(k)X(k)
(4) 对乘积进行N点快速傅里叶反变换(IFFT):
求y(n)=IFFT[Y(k)]
可见,只要进行二次FFT,一次IFFT就可完成线性卷积计算。在x(n),h(n) 两序列长度比较接近或相等的情况,当运算的序列长度 N>32时,上述计算线性卷积的方法比直接计算线性卷积有明显的优越性,长度值越大优势越明显。
上例用FFT运算的程序如下:
2 结 语
用圆周卷积和FFT运算离散卷积具有很大优势,在Matlab中圆周卷积没有专用函数,需要自己编制,在序列比较长时FFT是一种最合适的方法,可以快速得出仿真运算的结果。选择圆周卷积或FFT运算线性离散卷积可提高DSP设计的效率。
参考文献
[1]徐科军.信号分析与处理[M].北京:清华大学出版社,2006.
[2]刘顺兰,吴杰.数字信号处理[M].西安:西安电子科技大学出版社,2003.
[3]朱仁峰.精通Matlab 7[M].北京:清华大学出版社,2006.
[4]燕庆明.信号与系统[M].北京:高等教育出版社,2004.
[5]俞卞章.数字信号处理[M].2版.西安:西北工业大学出版社,2006.
[6]徐莉,罗新民,徐燕红.卷积码的Matlab仿真及其性能研究[J].现代电子技术,2006,29(11):64-66.
真正接触matlab已经一学期左右,我很喜欢matlab的简单的语法,易于绘制图形一开始就感觉跟变魔术一样简单的语句就会有精美的图形这就更加让我对他如痴如醉了,最先开始接触是在大二参加数学建模时,一开始就被他所吸引(一个简单的程序就可以绘制出精妙的立体图形)真正认识和了解他是在这学期的matlab课上这使得我有机会去进一步了解和探索他了。他不但有很强的图形绘制能力而且他其中包含的toolbox更是让人用起来得心应手这也使得我对他更加的感兴趣。
首先我要说的是现今的MATLAB已全部采用C语言编写,它既是一种编程环境,又是一种程序设计语言。在MATLAB中,以复矩阵作为基本编程单元,无须定义即可采用,且可随时改变尺寸。在MATLAB中,表达式的书写像在稿纸中演算一样。提供20多个工具箱函数。易扩展性是最重要的特征之一,友好的界面、易记的命令和简便的操作。可将C语言编写的程序移植进来。
其次我想说的是matlab的help功能 help:最有效的命令其实,可以这样说吧,如果离开matlab课本,我想我自己是基本上什么都不会.一遇到什么问题,通常我的第一反应是:help它帮我解决了matlab学习中的许多困难与障碍所以在有不懂得地方第一个想到的就是他的help功能。
为期一周的MATLAB实训在学习与忙碌中度过了,时间虽短,但我们却真真切切的学到了知识,在现实工作中可以运用的知识。
在第一节课,我们便了解到MATLAB是世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同时集于一个易于开发的环境。MATLAB主要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和用户界面设计等。对MATLAB的系统结构和特点等,老师也向我们做出了大致的讲解,同时,我们知道了MATLAB程序的一些最基本的应用和运算,并能够进行一些简单的编程。就这样,实训的第一天大家都在期待和兴奋中度过。
接下来的时间,主要是以大家自学和练习为主,老师进行辅导和考察。在学习过程中,不懂的可以相互之间小声的讨论,也可向老师请教,但必须确保自己真正学到了知识,认真的看书并进行编程练习。一天的学习接近尾声时,就是老师考察大家一天的收获的时候了,老师总会出一些小题目让大家编出它的程序,虽然有的题目对我们来说还是有些难度的,但是在老师的指点下我们还是编出程序的,当我们看到自己编的程序运行正确时,总是会万分的兴奋,充满成就感。
就这样,仅仅一个星期的实训就结束了,虽然不能十分熟悉和运用MATLAB的所有程序,但是我们却打下了一定的基础,在以后,当我们真正开始深入学习这门学问时,我们对它将不会再那么陌生,学起来也将轻松许多。这次实训为我们提供了一个很好的学习机会,唯一不足的就是时间有点短,我们不能在这段时间里学到更多的知识,因此,在这一周打下的基础上,我们需要用自己的努力去自学,以获取更多的知识。
引 言
检验和比较不同迭代算法的常用方法就是针对特定模型( 方程) 进行迭代逼近计算,借助计算机是行之有效的手段. 在此,通过编写Matlab程序,分别用二分法、不动点法和牛顿迭代法求非线性方程ex- x3= 0的数值解,观察其逼近速度,进行比较分析,从而得出结论.
为了更有效地比较,先对方程ex- x3= 0根的存在状况进行探讨,可通过如下Matlab命令,画出其根的分布图:
由图易得,方程ex- x3= 0根的范围在( 1,5) 内,因此,可分别用三种迭代方法,按相同的误差( ≤10- 8) 要求,围绕其中一个根进行迭代计算,得出迭代次数,从而比较出三种迭代法的速度快慢. 选择迭代法之前有必要了解其结构原理.
二、迭代算法的原理
迭代算法有二分法、不动点法、牛顿迭代法和抛物线法等,下面简介一下前三种迭代法.
1. 二分法
原理: 若f( x) ∈[a,b]连续,且f( a) ·f( b) < 0,则f( x) = 0在( a,b) 上必有一根.
对于给定的精度$,可估计二分法所需的步数k:
2. 不动点法
不动点迭代法是将方程f( x) =0等价变换为x = g( x) .
此时,f( x) 的零点值等价于g( x) 的不动点.
3. 牛顿迭代法
牛顿迭代法是用曲线上某点( x0,y0) 的切线代替曲线,以该切线与x轴的交点( x1,0) 作为曲线与x轴的交点( x*,0) 的近似( 所以牛顿迭代法又称为切线法) . 设xn是方程解x*的近似,迭代格式
这就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解.
三、迭代法的 Matlab 语言程序
根据Matlab软件的特点,利用循环结构,按照不同迭代算法的结构,针对方程ex- x3= 0分别编写二分法、不动点法和牛顿迭代法的函数式M文件,并运行求解.
1. 二分法求方程的根
二分法求方程ex- x3= 0根的Matlab程序:
2. 不动点迭代法求方程的根
不动点迭代法求方程ex- x3= 0根的Matlab程序:
4. 三种迭代法运行结果比较
注: 由于方程不止一个根,为有可比性,故表中的迭代初始值或区间均集中在一根附近; 运行的Matlab软件是安装在Win7系统下的R2011b版本.
由上表中的数字对比,可显然看出,三种迭代算法中,牛顿迭代法速度最快,不动点迭代法次之,二分法较慢. 虽然在选取迭代初值或区间时有一定的主观因素,但基本上能反映出三种迭代法的主要差别.
四、结论
综合上述结果,同时结合三种迭代方法的各自结构特点,可以得出: 二分法简单易用,对f( x) 要求不高,只要连续即可,但无法求复根及偶重根,且收敛速度慢,多用于为其他求根方法提供初始近似值; 不动点迭代法逐次逼近,将隐式方程归结为显式计算,显式关系式的结构直接影响到点列的敛散性,选取不当则得不到方程的数值解( 即使方程有根) ; 牛顿迭代法正是将局部线性化的方法用于求解方程,牛顿迭代法的最大优点是收敛速度快,具有二阶收敛.了解了三种迭代法的特点,便于有效地加以运用.
摘要:本文利用计算机,借助Matlab工具,对求方程数值解常用的二分法、不动点法和牛顿法进行探析比较,得出直观结论,为相关知识的理解和运用提供了依据.
本学期通过对MATLAB的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计算及符号运算的学习,初步掌握了MATLAB的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用MATLAB,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。
MATLAB是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。在为学习这门课前就听说了他的强大,因为现在的很多模型都是需要这些分析软件的。曾经旁听过学校数学建模的课程,当时老师用的是lingo。对那个只需要U盘携带就可以安装的小东西记忆深刻。等到学习matlab时觉得这才是真正的王道啊。
它不仅有强大的运算功能,还有强大的绘图功能,虽然学习了有一个学习,但是我对他的了解额仅仅是一点点,或许连入门都谈不上。因为我学习时了解到一个现实。就是matlab的学习依赖有比较好的数学功底,其中我看最经常运用到的就是矩阵。我从网上了解到matlab是一门高等数学和计算机技术结合的东西,学习它必须具有相应的数学和计算机知识。然而很可惜,我的书写不是很好。每次讲到这个部分的时候就觉得听说理解无能了。特别是我今年还是大三。虽然这学期的学习的时间短暂,就算时间足够,老师也不能把所有的都讲解给我们,因为一个软件的功能需要我们自己不断的去摸索,老师也不可能知道所有。老师只是个指路人,最终的学习还是要靠自己。而且在摸索的过程中,我们能够发现和体会学习的快乐。痛并快乐着是种常态了吧。
自我感觉学习matlab与其说是学习一门软件,更不如说是学习一门语言。用一种数理的语言描述现象,揭示表象下的规律。此外,我认为matlab中的作图功能很强大,不仅简单的函数现象可以明确画出,而且一些点状物,甚至立体图也可以画出。大一上微积分的时候,老师曾经多次在课件中加入用matlab画出的图来。不论是一维二维三维等等,都能很好的画出来。只要能编写出函数式,在短短的几秒之内,他就会呈现在你眼前。另外就是图形的直观性,这是由阴影的制作的。而且可以根据需要,坐标图上加标题,坐标轴标记,文本注释级栅格等,也可以指定图线形式,比如是虚线。颜色也可以自己来定。可以在同一张图上画,也可以单个显示。
在学习的过程中,因为以前学过access中的select语言,觉得就编写这方面是有共性的,但是matlab的编程语言似乎更多更复杂一点,这是由于涉及的数学模型,数学公式更多的原因。可是今年的这门课真的是让我感到没学到什么,估计也是因为我抱着看一看的随意态度来的吧,也没有那种遇到不懂的就一定要弄懂它的决心和毅力。说什么都是借口了,无法掩饰我没有学好它的事实。事实上,我觉得今年这门课的重点并不是让我们掌握这种软件的具体用法,而是主要向我们展示如何用它去解决一些金融问题,数学问题。这点让我很郁闷,因为我不懂得原理,听起来这门课倍感吃力啊。可是嘛,年轻没有什么不可以,又有谁可以断言我接下来的生活中不能好好学习这个东西为自己的工作,学习,生活,研究兴趣带来方便呢。
从大学开学的见闻到现在学习MATLAB,感觉这是一个很好的软件,语言简便,实用性强。作为一个做新手,想要学习好这门语言,可以说还是比较难的。在我接触这门语言的这些天,除了会画几个简单的图形,其他的还是有待提高。从另一个方面也对我们大学生提出了两个要求——充实的课外基础和良好的英语基础。在现代,几乎所有好的软件都是来自国外,假如不会外语,想学好是非常难的。其实想要学习好一们语言,不能只靠老师,关键是自己。每个人内心深处都是有抵触意识的,不可能把老师的所有都学到。学习这门语言,不光是学习一种语言,更重要的事学习一种方法,一种学习软件的方法,还有学习的态度。
总结一下,学习任何一门语言:态度决定一切。不论是英语还是计算机语言。其实以前上高中的时候接触过这种编程语言,当时记得最头疼的就是循环语句,但是在matlab中这种东西用的就比较少了。语言语句都是很简洁利落的,都是一枪瞄死靶心的那种,很直接,这也让我减轻不少心理负担。
其实学习这种事,与其说学习什么具体的东西,更不如说是学习一种态度,从种种波折中认识到自己的局限性,不足。心情会沮丧,也会豁然开朗。光想不练假把式,不论想的再多,不实际运用还是没有用的。书山有路勤为径,学海无涯苦作舟。华山再高,顶有过路。
几点对于学好matlab很重要:兴趣、悟性、勤奋、坚持。
兴趣,不知道哪位名人说过“兴趣是最好的老师。”我觉得非常有道理,一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验。这样才能主动学习,并且学好到精通。
悟性,通常人认为指顿悟,慧根,我觉得就是对一个问题不断的思索,将自己的体会和感受融合,获得属于自己的知识。有很多事情、问题,都是可以想明白的。只有不停的想,才能想明白,想透彻。
勤奋,一勤天下无难事。从古到今,有多少名人不是有勤奋而得来成功的。现在的年轻人,一代比一代聪明。要不被别人淘汰,要超越别人,只有靠时间堆出来。每天多学一些,多积累一些。学习matlab也一样,想要学会,使用熟练,不花时间练习,写代码,亲自运行调试,是很难掌握好的。
一、案例教学法在教学活动中的应用
案例教学作为一种行之有效且目的明确的教学方法,以行动为导向越发受到人们的关注和青睐。作为一种归纳教学法,案例教学作为未来教学改革的趋势已不可动摇,尽管它不可能完全取代传统的演绎式的教学模式,却是一种培养应用型人才的良好途径。案例教学应用的成功与否很大程度上取决于典型案例的选取,要求典型案例既能体现对基本理论知识的理解和掌握,又要充分提高学生的实际动手能力。而在电力电子技术为课程的背景下,学生需要应用所讲的知识来解释典型案例所产生的结果,把案例进行模块化分解,摒弃对每个模块进行详细的研究和探讨,最后对各个模块的结果进行整合,才能形成对典型案例较为完整的研究体系[2]。
二、基于MATLAB/Simulink的课程设计
“电力电子技术”这门课是电气工程与自动化专业的基础学科之一,课程有几个特点:教学理论性强、波形变化分析复杂、课程教学枯燥,学生理解困难;系统模块化特点鲜明、模型参数化明显,实验项目相对独立;项目设计综合性强、技术应用广,实际开发的案例比较成熟[3]。教师在分析电子器件的特性和电子电路的工作原理时,需要观察波形图的变化来阐明工作过程。传统的教学方式中,由于电子电路变换器部分的电路拓扑形式多种多样,如果仅是手绘波形或者多媒体展示波形,教师讲解起来费时费精力,学生也不能清楚的掌握分析波形图变化的原因。所以在多媒体教学中引入仿真教学是必要的环节,通过仿真电路,学生可以把变换器的工作原理和物理波形结合在一起理解,使抽象的电路明了简洁,仿真还可以分析更加复杂的电路并且对电路进行改进和创新。在课程设计中利用MATLAB/Simulink软件可以有效地构建出与实际相符合的案例,教师在教学中通过仿真实例可以轻松解决波形抽象原理复杂的问题。Simulink非常适合于电力电子系统及电力拖动控制系统的仿真,并且具有其他一些软件所没有的特点,仿真系统完全是由用户利用系统提供的基本模块来构建的,系统的各个参数和仿真参数也可以由用户自行修改,并且用户可以对仿真结果进行多种分析和输出,教师可以直观展示各种参数变化对电路图波形的影响,学生改变器件参数值,可以自己对比分析不同参数设计下的仿真结果。这种交互性非常适合于高校相关课程的教学科研,学生通过这种交互性加强对理论知识的理解和掌握,也可以用来完成实验和作业[4]。以风力发电课程设计为例,教师首先要分析电路的组成和工作原理,指导学生利用仿真平台搭建数学模型,然后一步一步建立各部分电路仿真模型,该电路的仿真过程可以分为建立仿真模型、设置模型参数和观察仿真结果。学生需将案例进行模块化分解,就每个模块结合基础理论知识进行分析和研究,并进行实际动手调试,寻找各个模块之间的联系纽带,将所有模块有机结合起来,完成对典型案例的研究[2]。
三、风力发电课程设计案例
电力电子技术在解决能源与环境的问题上做出了相当大的贡献。风能作为一种绿色能源,风力发电的过程就是机械能转换为电能的过程,其中风力发电机及其控制系统负责将机械能转换为输送电网的电能,这一部分是整个系统的核心,所以说风力发电的核心技术是电力电子技术,其能量转换部件和控制电路都包含有电力电子器件。由于中小功率风电系统中电机侧一般为不控整流,并且永磁同步发电机一般都为低转速电机,在低风速下发出的电压有限,不能满足并网逆变的条件,需要对其进行升压,因此,中小功率风电系统中常见的拓扑结构为不控整流器+升压斩波器+网侧逆变器。风力机将风能转换为机械能,带动永磁同步发电机转动,发出的三相不定频交流电通过二极管不控整流器整流为电压不定的直流,然后经过升压斩波器的作用,将直流电压抬升至可以进行网侧逆变的数值,并且通过网侧变流器的控制,使直流侧电容保持恒压。网侧变流器将直流电逆变为与电网电压同频同相的三相交流电馈入电网[5]。课程设计案例中利用MATLAB工具,对永磁同步风力发电系统及并网控制系统进行仿真研究。所研究的仿真系统由永磁同步风力发电机、不可控整流器、升压斩波、DC-AC并网逆变器部分组成。学生可以把该风力发电仿真模型分成同步发电机仿真模块、斩波变流器仿真模块和逆变仿真模块,就每个模块运用理论知识进行仿真,最后将各模块结合起来达到整个案例体系的研究。永磁同步发电机额定参数:电压700V,功率2750kW,电流2270A,功率因数0.95,速度16rpm,频率16Hz,极对数2p=120,电阻R=5.97m-Ohm,电感Ld=Lq=1.0757mH。风力发电课程设计案例系统仿真框图如下图所示:1.同步发电机仿真永磁同步发电机仿真主要是依据实际系统参数,研究在一定速度驱动下带三相电阻负载的永磁同步发电机发电输出特性。仿真模型如图2所示,仿真结果如图3和4所示。仿真论证了实际电机参数下所达到的额定输出电压、电流值及输出的正弦特性、频率特性。2.斩波变流器仿真升压斩波变流器仿真主要是研究升压斩波部分的`变压调节功能。仿真模型如图5所示。升压斩波电路的输入设定为一定电压信号输入,通过占空比控制,输出稳定的期望输出电压,仿真结果如图6所示。系统仿真表明:调节控制脉冲的占空比可以实现输出电压幅值的跟踪控制。3.逆变器仿真并网逆变器仿真主要是研究并网逆变部分输出调节特性,在给定输入直流电压,带三相负载的逆变器离网运行特性。仿真模型如图7所示,仿真波形如图8所示。仿真结果表明:逆变器输出电压为50Hz基波主频分量的脉冲调制波形,经部分滤波后为50Hz正弦波电压,在一定滤波和电阻负载下电流为正弦波。此课程设计案例根据现场实际运行的2.5MW直驱永磁同步风力发电机系统参数,对并网控制系统各个模块进行了仿真研究,得出一定速度驱动下带三相电阻负载的永磁同步发电机发电输出特性,仿真论证了电机参数下输出电压、电流的正弦特性、频率特性;升压斩波部分的仿真表明调节控制脉冲的占空比可以实现输出电压幅值的跟踪控制;并网逆变部分的离网仿真表明逆变器输出电压为50Hz基波主频分量的脉冲调制波形,经部分滤波后为50Hz正弦波电压,在一定滤波和电阻负载下电流为正弦波。此案例的仿真结果达到预期的效果,为学生实际应用能力的提升得到良好的体现。
四、结语
论文提出电力电子技术教学与实践相结合的教学模式,实现教学手段和教学方法的创新。详细介绍了通过MATLAB中的射的内容。四、教学实践思考与建议为了达到我国工程师人才培养的要求,提高“传热学”的授课效果,结合中山大学中法核工程“传热学”的教学实践,作者在课程安排、课堂组织和教材安排等方面进行了思考并给出如下建议:1.课程安排1周集中授课,学生不容易完全消化所学知识,可将课程安排到3周,每周8个课时,4个课时用于授课,4个课时用于习题,以便学生对课程知识的掌握。2.课堂组织采取讲述和习题的类型,课时按1:1分配,习题课采取4~5人一小组的形式,以提高学生的自我参与意识和团队合作与交流能力,通过习题过程,使学生更好的理解和掌握所学知识。3.教材安排目前国内“传热学”的优秀教材非常多,但基本上都是较为通用的、适用于长课时的教材。因此,可针对课时安排和授课要求,有针对性地组织相应的教材编写工作,以便更好地满足法国工程师培养模式本土化授课模式的需求。4.课程设计针对“传热学”工程应用性较强的特性,结合学科研究进展,给出一些科技创新的方向,鼓励学生进一步深入研究,在业余时间开展较为深入的课程设计,以提高学生科研能力和灵活应用所学知识的能力。5.考核安排建议采用开卷考试,成绩评定采用平时成绩(20%)与考试成绩(80%)相结合的形式,一方面便于监督学生平时学习自主性并克服学生考前突击的顽症,另一方面也能很好地考核学生对传热知识的掌握程度。
【matlab实习报告】推荐阅读:
实验报告matlab09-09
matlab上机报告04-07
电机matlab实验报告09-09
matlab实验预习报告09-24
matlab作业11-11
matlab课程作业11-09
matlab学习体会05-25
matlab数值分析实例06-21
信号系统matlab实验07-27
matlab数学实验实现11-17