matlab课程设计报告书

2024-10-16

matlab课程设计报告书(共8篇)

matlab课程设计报告书 篇1

课程设计名称:Matlab应用课程设计

课程设计题目:题目(如:Matlab运算与受控源电阻电路分析)

初始条件:

1.Matlab7.0以上版本软件;

2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、线性代

数及相关书籍等;

3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.课程设计时间:1.5周,分散;

2.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成;

3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设

计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表等),并对实验结果进行分析和总结。具体设计要求包括:

① 初步了解Matlab、熟悉Matlab界面、进行简单操作;

② MATLAB的数值计算:创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计;

③ 基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形标注、简单

颜色设定等;

④ 使用文本编辑器编辑m文件,函数调用;

⑤ 能完成简单的电路Matlab编程分析;

⑥ 按要求参加课程设计实验演示和答辩等。

4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:

① 目录;

② 与设计题目相关的理论分析、归纳和总结;

③ 与设计内容相关的原理分析、建模、推导、可行性分析;

④ 程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;

⑤ 课程设计的心得体会(至少500字);

⑥ 参考文献(不少于5篇);

⑦ 其它必要内容等。

时间安排:1.5周(分散进行)

指导老师:电信1104李景松祝立华

电信1105祝立华阙大顺

电信1106阙大顺李景松

matlab课程设计报告书 篇2

为了使同学们利用软件进行建模活动, 在2007年开设了《Matlab程序设计》课程。现结合数学建模活动概述了《Matlab程序设计》的课程建设问题。首先介绍了Matlab语言的特点;然后依据现存问题介绍了《Matlab程序设计》的课程配合建模活动而进行的改革;最后并对于教学改革中积累的经验进行了总结, 肯定了软件学习对建模活动的积极作用。

1 Matlab语言的特点

Matlab能进行大量矩阵计算、各种数值处理、符号计算以及图形处理, 在数学分析、高等代数、空间解析、复变函数论、常微分方程中都有很大的应用价值。Matlab在数学计算和大量数据处理方面具备其它软件所不具备的优势, 操作简单、运算速度快, 尤其适用于数学建模的活动中。下面简述了Matlab课程的主要特点:

1.1 进行各种科学运算。

科学计算分为数值计算和符号计算。数值运算比较简洁。而符号运算严格按照代数、微积分等课程中的规则、公式进行运算, 并尽可能给出解析表达结果。在符号运算的领域, MATLAB和著名的符号计算语言Maple结合, 使MATLAB具有符号计算功能。MATLAB的数值计算功能非常强大, 提供了十分丰富的数值计算函数, 而且所采用的数值计算算法都是国际公认的、最先进的、可靠的算法。

1.2 简单易学, 语言简洁紧凑、使用方便灵活、库函数极其丰富。

MATLAB程序书写形式自由, 程序设计自由度大.例如, 在MATLAB里, 用户无需对矩阵预定义就可使用;丰富的库函数避开了繁杂的子程序编程任务, 压缩了不必要的编程工作。

1.3 强大的绘图功能。

MATLAB提供了2个层次的绘图操作:一种是对图形句柄进行的低层绘图操作, 另一种是建立在低层绘图操作之上的高层绘图操作。利用MATLAB的高层绘图操作可以轻而易举地绘制各种图形.利用MATLAB图形句柄操作, 可以随心所欲地对图形元素进行各种操作, 为用户在图形表现方面开拓了一个广阔的空间。

1.4 MATLAB的计算机仿真。

运用MATLAB进行计算机仿真, 就是利用Smulink来实现动态系统建模和仿真。它的优点是为用户省去了许多重复的代码编写工作, 以简单的图形界面查看数学以及经济学中一些系统的动态仿真效果。

1.5 具有丰富的MATLAB工具箱。

MATLAB包含两部分:核心部分和各种可选的工具箱。核心部分有数百个核心内部函数, 也是使用和构造工具箱的基础。工具箱分为两大类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、可视建模仿真功能及文字处理功能等.学科性工具箱应用于专门的领域, 用户可以直接利用这些工具箱进行相关领域的科学研究。

1.6 源程序的开放性。

除内部函数以外, 所有MATLAB的核心文件和工具箱文件都是可读可改的源文件, 用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

1.7 MATLAB运算效率较高。

与其他高级语言相比, MATLAB提供了一个人机交互的数学系统环境, 并以矩阵作为基本的数据结构, 可以大大节省编程时间。MATLAB语法规则简单、容易掌握、调试方便, 调试过程中可以设置断点, 存储中间结果, 从而很快查出程序中的错误。

《Matlab程序设计》课程的教学目标就是使各专业的学生了解和掌握用计算机来解决实际问题的基本理论和基本方法。低年级的大学生通过在数学建模活动中利用Matlab解决实际问题, 使学生能够学以致用, 既提高学习能力, 又锻炼了动手能力, 从而提高学生的科研能力。这些能力在以后的学习和工作中都是十分重要的。

2《Matlab程序设计》课程建设与数学建模的结合的改革

学以致用是激发学生们学习的最强动力。参加数学建模活动使得低年级大学生能够应用数学解决实际问题, 而学会Matlab软件编程已经成为同学们参加数学建模活动必须掌握的基本技能。在系统建模过程中, 对象的一般特点是复杂的、受多种因素影响的。在模型求解以及模型验证过程中, 经常需要利用Matlab软件处理大量数据以构建模型, 进行数据分析;然后进行假设, 排除干扰因素编写程序求解模型;最后还需要在软件环境中对于模型进行数据验证, 分析模型的误差, 利用图表或者图形的形式表征模型的精确程度。

为了使得同学们能够灵活地运用Matlab作为建立数学模型的工具, 加强《Matlab程序设计》的课程建设势在必行。《Matlab程序设计》课程的改革内容包括:

2.1 教学内容的改革。

除了以往的基本语法和程序结构、数组的基本运算之外, 带领同学共同深入学习概率统计工具箱、回归分析工具箱以及图形图像的处理部分。在讲解中多介绍一些应用数学进行研究的实例, 从而激发学生的学习兴趣, 引导学生更好地应用Matlab来解决自己专业领域的实际问题, 否则无法达到满意的教学效果。为了更好的配合建模竞赛活动, 课程的最后阶段还进行了编程的集训活动。重点对于近两年的数学建模竞赛中出现的最优化问题进行编程的实战演练。例如:公交换乘问题的乘车路线设计;长方体的最优切割问题等。

2.2 提升教师自身素质。

以往的程序设计教师在教学活动中重点落在程序设计的基本思路上, 这样的教授容易使得工具与建模活动脱节。程序设计课程教师必需要自学数学的基础理论以及建模的相关知识。同时, 数学建模的理论指导教师需要学习计算机知识, 重视软件程序实践环节。

2.3 加强上机实践教学。

《Matlab程序设计》是锻炼动手能力的学科, 上机活动对于学习程序设计来说是至关重要的一个环节。上机活动中, 教师需要引导学生学习编写程序的基本方法, 更重要的就是指导学生学习使用程序调试工具排除错误, 以及使用帮助更深入地自学相关内容。需要引导学生利用网络和书籍能够根据已知的基础知识进行扩展。这样学生的自学能力和自己解决问题的能力都会有很大提升。为了更好地配合建模活动, 在上机实践的后半学期课程中, 所选的题目都是解决实际中小型的数学模型问题。习题的后面安排了小的提示, 以培养同学们解决实际问题的能力。

2.4 引导学生发挥自身能动性。

真正体现教师为导, 学生为主体的教学原则。在教学中, 在课堂上以实例教学带动学生对学习活动的积极参与, 营造问题解决与协作学习的良好思维情境和氛围。教师引导学生明白所做工作的实践性, 所进行的工作应能够经受得住实践的检验。教师引导、带领学生将所学内容应用到数学的相关课程上去, 例如:线性代数、数学建模以及决策论等。学生能够学以致用, 大大激发了他们自主学习的热情。例如, 学生在做数学建模的课后习题时, 鼓励他们将自己的思想实现出来, 并在课堂上当堂演示。上台讲演的同学积极性很高, 自制了精美的演示文稿。台下的同学也被带动起来, 感受到了学习Matlab程序设计的乐趣。

经过上述改革, 学生利用Matlab工具解决数学问题的能力得到充分的提高, 同时自学能力也大大增强。学生在实践活动中不但增长了知识, 更能学习到对待科学应有的态度。教师也在集训活动中相互学习, 深入一步学习了数学理论, 提高了自身能力。

小结

综上所述, 利用Matlab作为工具能够更好的建立系统的数学模型, 搞好《Matlab程序设计》课程建设可以很好的配合数学建模竞赛活动, 培养学生解决问题的动手能力, 培养创新型人才和应用型人才。经过探索和实践, 学生的编程以及调试经验都得到了很大的提高。2007年获得大学生数学建模竞赛北京赛区二等奖;2008年获得大学生数学建模竞赛北京赛区一等奖和二等奖。

《Matlab程序设计》的教学改革也只是刚刚起步, 只有不断地探索、创新和交流, 积累更多的经验, 将之融入教学之中, 才能更好地培养大学生创新能力、实践能力, 从而有助于大学生综合素质能力的提高。

摘要:首先介绍了Matlab程序设计课程的教学特点, 然后结合数学建模活动, 介绍了《Matlab程序设计》课程建设进行的教学改革;最后对于教学改革中的经验进行了总结。

关键词:教学改革,数学建模,Matlab

参考文献

[1]胡良剑, 孙晓君, 叶海平等.MATLAB使用中一些需要注意的问题[J], 纺织高校基础科学学报, 2002, (4) :17-18.

[2]黄琼湘, 那斯尔江.吐尔逊.Matlab作图函数的总结与分析[J].高等理科教育, 2005 (6) :21-22.

matlab课程设计报告书 篇3

摘要:本文针对独立学院自动化专业MATLAB与系统仿真课程设计教学中存在的各种问题,结合笔者的教学实践,从教学内容、教学手段和教学方法、考核方式等方面提出了一系列切实可行的改革措施。

关键词:MATLAB与系统仿真;教学探索;独立学院;自动化专业

1 教学改革的意义

近年来,随着仿真技术的飞速发展和在社会各行各业的广泛应用,人们越来越认识到仿真的巨大作用。MATLAB作为目前国内外最流行的仿真软件,已经广泛应用于自动控制、科学计算、信号分析、航空航天等领域,是工程技术人员和学者进行科学研究的强有力工具。

MATLAB及系统仿真课程设计是自动化专业的必修课,课程教学目的是使学生掌握MATLAB的计算、编程、绘图等基本功能和部分专业工具箱的使用,利用Simulink进行动态系统的仿真,为研究与解决本专业相关的问题打好基础。

目前的课程教学中,大多偏重于MATLAB软件的基础应用,如数值运算、符号运算、绘图功能、Simulink的基本应用等,普遍和本专业知识结合的不够紧密。这样,虽然学生也掌握了MATLAB的理论知识,但是不能将其熟练应用到其他专业课中解决实际问题,对自己专业的学习没有起到很好的促进作用。这种情况如何改善,值得我们认真思考。因此,MATLAB及系统仿真课程的教学改革是很有必要的,其主要方向应是加强和专业课程的联系,利用仿真解决一些专业课重点难点问题,提高学生兴趣,提升教学效果。

2教学中存在的问题

目前的课程教学中,普遍存在以下几个问题:

(1)大多偏重于MATLAB软件的基础应用,如数值运算、符号运算、绘图功能、Simulink的基本应用等,普遍和本专业知识结合的不够紧密。这样,虽然学生也掌握了MATLAB的理论知识,但是不能将其熟练应用到其他专业课中解决实际问题,对自己专业的学习没有起到很好的促进作用。

(2)要熟练掌握MATLAB软件,并且将其应用于解决实际问题,学习难度略大。对于独立学院的学生而言,难度更大,2周时间不足以学生熟练掌握这一工具。

(3)在进行设计时,学生是2-3个人一组,不能使每个学生得到充分的锻炼。

(4)学生成绩两级分化严重,特别是高年级的专业,任务布置上使用一刀切,不利于程度不同的学生有效的掌握,影响教学的有效性。

(5)实验报告抄袭现象严重。

3教学改革

(1)改革教学内容

改革《MATLAB与系统仿真课程设计》的教学内容,使学生在熟练掌握MATLAB的计算、编程、绘图等基本功能的基础上,学会利用Simulink进行动态系统的仿真,利用MATLAB软件进行控制系统数学建模,掌握时域、频域以及根轨迹的分析方法,从而对控制系统进行校正及PID参数整定,提高学生解决实际问题的能力。

(2)建立任务题库

改进任务书的布置方式,实行分级多任务的布置。针对不同学生的不同学习能力,分为简单任务题库和复杂任务题库。复杂任务题库的任务分基础部分和提高部分,分等级分步骤台阶式的递进增长。

(3)改革教学方法与手段

针对本系学生特点,充分运用各种教学手段和教学资源,充分调动学生的积极主动性,活跃课堂氛围,提高教学质量和效果。课堂上可以通过演示使用MATLAB软件生成美图、动画、音乐等,让学生意识到MATLAB软件的强大功能,从而增强学习主动性,起到事半功倍的效果。

(4)改革考核方式

特别强调的是考核方式是加入平时成绩的登记和最后答辩成绩登记,并且增大平时成绩和答辩成绩占的总成绩的比例。平时成绩的登记,是督促学生认真完成实验的重要手段。最后答辩成绩登记,是区别实验是否优秀的重要方法,杜绝实验报告抄袭的现象。

4结语

通过《MATLAB与系统仿真课程设计》培养学生利用MATLAB软件分析和解决控制系统的建模、仿真、分析、校正,使学生具备一定的分析问题、解决问题的能力。调动学生的学习主动性,逐步培养学生独立解决问题的能力。

参考文献:

MATLAB课程总结 篇4

班级:14级电子信息与科学技术

姓名:

孙凯

学号 201442398

在过去的两个月里,我们学习了MATLAB教程这一门课程,对此我有一些自己的思考与感悟。

通过学习,我们了解了该软件的历史,是美国mathwork公司推出的一套高效率的数值计算和可视化软件。作为当今社会最具影响力、最具活力的软件,它起源于矩阵运算,现已发展为一款高度集中的计算机语言。

然后我们又学习了这款软件的功能,学会了用它来进行较复杂的科学运算,并实现高质量图形的可视化及界面设计,与其他程序和语言接口。因此,通过这个软件,我们既可以利用其强大的运算功能,又能使用它进行绘图,在接下来的学习中它必定会展现出更大的作用,与我们的生活息息相关。

这样一款应用相当广泛的数学软件,我们也许才刚刚触及皮毛,但我相信在接下来的学习中老师会带领我们进一步加深对它的使用的熟练程度及认识。

MATLAB上机实验实验报告 篇5

一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。

命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)

熟悉MATLAB 得5 个工作窗口。

(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)

② Workspace(工作空间窗口)

③ mand History(命令历史记录窗口)

④ Current Directory(当前目录窗口)

⑤ Help Window(帮助窗口)

(1)命令窗口(mand Window)。

在命令窗口中依次输入以下命令:

>〉x=1 〉> y=[1 2 3

4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =

9t1 =

t2 =

t3 =

1 t4 =

t4 =

0

0

0

0

0

0

0

0

0

0

0

思考题: ①

变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。

答:(1)变量声明

1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。

脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:

>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。

如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :

始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写

试说明分号、逗号、冒号得用法。

答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表

冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③

l inspace())

称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:

>>help linspace

数 说明函数 ones())、、zero s()、eye()得用法。

答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;

(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空

间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。

① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。

② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。

③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。

〉〉save my_var、mat

④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量

观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。

>〉load my_var、mat

⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。

打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。

① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。

② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。

③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。

④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。

(4)

当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。

(5)帮助窗口(Help Window)。

单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。

① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。

② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。

2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)

〉>format pact

〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。

〉〉format long >>pi

〉〉format short >〉pi

〉>format long 〉〉pi

>>format + 〉〉pi

〉>—pi

3、变量得搜索顺序 在命令窗口中输入以下指令:

>>pi

〉>sin(pi);

>>exist(’pi”)

〉>pi=0;>〉exist(’pi“)

>〉pi

〉〉clear pi 〉>exist('pi’)>>pi

思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416

实验二

MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。

(2)矩阵得创建、引用与运算。

(3)

多维数组得创建及运算。

(4)字符串得操作。

三、实验步骤 1、向量得生成与运算 1)

向量得生成 直接输入法: A =

>〉 B=[1;2;3;4;5]

B =

5  冒号生成发:

〉〉 A=1:2:10 ,B=1:10,C=10:—1:1

A =

B =

C =

10

1  函数法:

Linspace()就是线性等分函数,logspace()就是对数等分函数。

>〉 A=linspace(1,10),B=linspace(1,30,10)A =

Columns 1 through 91、0000

1、0909

1、1818

1、2727

1、3636

1、4545

1、5455

1、6364

1、7273

Columns 10 through 181、8182

1、9091

2、0000

2、0909

2、1818

2、2727

2、3636

2、4545

2、5455

Columns 19 through 272、6364

2、7273

2、8182

2、9091

3、0000

3、0909

3、1818

3、2727

3、3636

Columns 28 through 36

3、4545

3、5455

3、6364

3、7273

3、8182

3、9091

4、0000

4、0909

4、1818

Columns 37 through 454、2727

4、3636

4、4545

4、5455

4、6364

4、7273

4、8182

4、9091

5、0000

Columns 46 through 545、0909

5、1818

5、2727

5、3636

5、4545

5、5455

5、6364

5、7273

5、8182

Columns 55 through 63

5、9091

6、0000

6、0909

6、1818

6、2727

6、3636

6、4545

6、5455

6、6364

Columns 64 through 72

6、7273

6、8182

6、9091

7、0000

7、0909

7、1818

7、2727

7、3636

7、4545

Columns 73 through 81

7、5455

7、6364

7、7273

7、8182

7、9091

8、0000

8、0909

8、1818

8、2727

Columns 82 through 908、3636

8、4545

8、5455

8、6364

8、7273

8、8182

8、9091

9、0000

9、0909

Columns 91 through 999、1818

9、2727

9、3636

9、4545

9、5455

9、6364

9、7273

9、8182

9、9091

Column 100

10、0000

B =

Columns 1 through 91、0000

4、2222

7、4444

10、666713、8889

17、1111

20、333323、555626、7778

Column 1030、0000 >> A=logspace(0,4,5)A =

10

100

1000

10000 练习:

使用 logspace()创建1—4得有 10 个元素得行向量。

答案:

>〉 A=logspace(1,10,4*pi)

A =1、0e+010 *

Columns 1 through 9

0、0000

0、0000

0、0000

0、0000

0、0000

0、0000

0、0001

0、0005

0、0035

Columns 10 through 120、0231

0、1520

1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。

〉〉 A=[1 2 3 4 5],B=3:7,A =

B =

>〉 AT=A”,BT=B“, AT =

BT =

>〉 E1=A+B, E2=A-B

E1 =

10E2 =

—2

—2

—2

〉〉 F=AT—BT, F =

-2

—2

〉〉 G1=3*A, G2=B/3, G1 =

12

15

G2 =1、0000

1、3333

1、6667

2、0000

2、3333  向量得点积与叉积运算。

〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)

E1 =

55

〉〉 E2=A*BT

E2 =

〉〉 clear >> A=1:3,B=3:5,A =

B =

〉〉 E=cross(A,B)

E = -2

—2 2.矩阵得创建、引用与运算

1)矩阵得创建与引用

矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。

 直接输入法:

〉〉 A=[1 2 3;4 5 6]

A =

〉〉 B=[ 1 4 75 86 9 ] B =

〉> A(1)

ans =〉〉 A(4:end)

ans =

6 〉〉 B(:,1)ans =

2〉> B(:)ans =

8>〉 B(5)

ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =

10

12

13

16 >〉 B=A(1:3,2:3)

B =

10

11 〉> C=A([1 3],[2 4])

C =

10

12 〉〉 A([1 3;2 4])ans =

5 函数法: 〉〉 A=ones(3,4)A =

>〉 B=zero(3)

??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =

0

0

0

0

0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =

0

0

0

0 >> D=magic(3)D =

拼接法 〉〉 clear 〉> A=ones(3,4)A =

>〉 B=zeros(3)

B =

0

0

0

0

0

0

0 >〉 C=eye(4)C =

0

0

0

0

0

0

0

0

0

>〉 D=[A B] D =

0

0

0

0

0

0

0 >〉 F=[A;C] F =

0

0

0

0

0

0

0

0

拼接函数与变形函数法:

〉〉 clear 〉> A=[0 1;1 1] A =

0

〉> B=2*ones(2)

B =

>> cat(1,A,B,A)ans =

0

0

>〉 cat(2 A,B,A)

??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =

0

0

1 >〉 repmat(A,2,2)ans =

0

0

0

0

〉> repmat(A,2)ans =

0

0

练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为

得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C

与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。

答案 :

>〉 A=ones(3,4)

A =

1 〉〉 B=zeros(3,3)B =

0

0

0

0

0

0

0

0 >〉 C=eye(3)

C =

0

0

0

0

>〉 D=magic(3)D =

>> E=[C;D] E =

0

0

0

0

0

〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =

0

0

〉〉 G=respace(E,3,4)

??? Undefined mand/function “respace’、〉>

G=respace(F,3,4)

??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)

G =

0

0

0

0

〉〉 H=repmat(G,2,2)H =

0

0

0

0

0

0

0

0

0

2)矩阵得运算  矩阵得加减、数乘与乘法

已知矩阵: >> A=[1 2

-1], A =

-1 >〉 B=[-1 0

2] B =

0

>〉 A+B ans =

1 〉〉 2*A ans =

-2 >〉 2*A-3*B ans =

-8 〉〉 A*B ans =

4-4

—2  矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =

0

>> A1=inv(A)A1 =

—1/3

2/3

-1/6

-2

0

4/3

-2/3

1/6

>〉 A*A1

ans =

0

0

0

0

0

矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =

b =

d =

>> c1=b*inv(a),c2=b/a c1 =

6/7

3/7

-4/7

c2 =

6/7

3/7

-4/7

>> c3=inv(a)*d, c4=ab c3 =

2/7

-4/7

??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =

2/7

-4/7

c4 =

2/7

-4/7

练习: 按下列要求求出各种得矩阵运算得值

求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;

矩阵得指数与对数

矩阵得提取与翻转 答案:

〉〉 A=[6 3

4 3

—2 5 7 —4

8-1 —3 —7] A =

-4

-1

—3

—7 〉> B=rank(A)B =〉> rb=rank(A)

rb =>> [X,Lamda]=eig(A)

??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4

-2 5 7

—1-3] C =

—2

—1

—3 >> [X,Lamda]=eigs(C)

X =0、8013

-0、1094

-0、1606

0、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

0

-3、2928

0

0

0

1、5602 〉〉 [X,Lamda]=eig(C)

X =

0、8013

—0、1094

—0、16060、3638

—0、6564

0、86690、4749

0、7464

-0、4719 Lamda =9、7326

0

0

-3、2928

0

0

0

1、5602 〉> [X,Lamda]=eig(C)

X =

0、8013

—0、1094

-0、1606

0、3638

—0、6564

0、8669

0、4749

0、7464

—0、4719 Lamda =9、7326

0

0

0

—3、2928

0

0

0

1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =

33

34

〉〉 E=sqrtm(C)E =

2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i

-0、5815 + 1、6244i

2、1005-0、8405i

1、7620-2、0970i

1、9719 - 1、8471i

-0、3017 + 0、9557i

0、0236 + 2、3845i >> F=expm(C)F =

1、0e+004 *

1、0653

0、5415

0、6323

0、4830

0、2465

0、2876

0、6316

0、3206

0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with

nonpositive real eigenvalues、A non-principal matrix

logarithm is returned、〉 In funm at 153

In logm at 27 G =

1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i

1、1938 + 2、8123i0、3658 — 1、4552i

—0、5514-3、6305i

-0、0748 - 3、1978i

0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =

-2

—1

>> I=triu(C)I =

0

0

-3 〉〉 J=tril(C)

J =

0

0

-2

0

-3 >> K=diag(C)K =

6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =

10

13

16

14

17

12

15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)

=

T1(:,:,2)=

0

0

0

0

0

0

0 〉> T2=ones(3,3,2)

T2(:,:,1)=

1 T2(:,:,2)=

1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])

T3(:,:,1)=

T3(:,:,2)=

10

13

16

17

15T4(:,:,1)

=

T4(:,:,2)=

2)多维数组得创建

数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。

〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =

C2 =

0

>> C3=A、*B,C4=B、/A,C5=A、B C3 =

6 C4 =

1、0000

0、5000

0、3333

0、2500

0、2000

0、1667 C5 = 1、0000

0、5000

0、3333

0、2500

0、2000

0、1667

关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)

I =

0

0

0

1 C6 =

6 〉〉 A1=A-3,I2=A1&A A1 =

—2

—1

0

I2 =

0

〉〉 I3=~I I3 =

0

0 4.字符串得操作 1)字符串得创建

>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =

13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =

101

32

65

84

66 〉> CS2=double(S1)CS2 =

108

105

101

32

77

65

76

>> char(CS2)

ans = Ilike MATLAB >> setstr(CS2)

ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>

C=C(:)’;〉>

S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三

MAL TAB B 数值运算 一、实验目得

掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。

二、实验内容

1)

多项式运算。

2)

多项式插值与拟合。

3)

数值为积分。

4)

结构数组与细胞数组。

三、实验步骤

1、多项式运算

1)

多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)

多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。

〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =

0

0

3s2 =

—5

s3 =

—3

18 3)

多项式得乘、除法分别用函数 conv与得 deconv实现。

〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)

>> s4=deconv(s3,s1)答;s1 =

11 s2 =

s3 =

—29

65

s4 =

7 4)

多项式求根用函数roots。

>〉 s1=[2 4 2] >> roots(s1)

答;s1 =

ans =

—1

5)

多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)

〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =

-3 ans =

90 x =

10 y =

Columns 1 through 8

193

352

579

886

1285

Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =

4 r =

0

0

-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。

附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7

1

分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。

〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)

%一阶拟合 >> y1=polyval(p1,9、5)

%计算多项式 P1 在x=9、5 得值 答;x =

9y =

Columns 1 through 8

32

70

142

260

436

682

1010

Columns 9 through 10

1342

1960 p1 =

200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分

1)

差分使用 diff 函数实现。

>〉 x=1:2:9 〉〉 diff(x)答;x =

ans =

2 2)

可以用因变量与自变量差分得结果相处得到数值微分。

〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;

3)

cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。

〉〉 x=ones(1,10)

>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =

ans =

9ans =

1、9998 ans =

1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5

34 41 45 46 Y2 44 59 7

18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)

机构数组得创建. 〉> student、number=’20050731001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。

>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =

1x2 struct array with fields:

number

name 2)

机构数组得操作。

〉> student(1)、subject=[]

%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)

〉>fieldnames(student)

〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)

%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;

%比较与上一条语句就是否效果一样 答;student =

1x2 struct array with fields:

number

name

subject student =

1x2 struct array with fields:

number

name

subject

score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。

3)

细胞数组得创建。

〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};

%直接创建

〉〉 B(1,1)={’Hello world”};

%由各个细胞元素创建

>> B(1,2)={magic(3)};

>〉 B(2,1)={[1 2 3 4]};答

或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)

细胞数组得操作。

〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})

答;ans1 =

’How are you!’ ans2 =

’How are you!’

Name

Size

Bytes

Class

Attributes

ans1

1x1

84

cell

ans2

1x1

84

cell

A{1,1} = How are you!

A{2,1} =

A{1,2} =

A{2,2}{1} = cell a1 =a2 = How are you!a3 =

实验四

MA LT AB B 符号运算

一、实验目得

掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。

二、实验内容

1)

符号变量、表达式、方程及函数得表示。

2)

符号微积分运算.

3)

符号表达式得操作与转换.4)

符号微分方程求解.三、实验步骤1、符号运算得引入

在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')

>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建

1)

使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。

>〉 A=sym(”1’)

%符号常量 〉〉 B=sym(’x’)

%符号变量 >> f=sym(’2*x^2+3*x-1’)

%符号表达式 >> clear >> f1=sym(“1+2”)

%有单引号,表示字符串 >〉 f2=sym(1+2)

%无单引号 >〉 f2=sym(1+2)

〉> f4=sym(“2*x+3’)

%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)

答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。

2)

使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建

>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算

1)

符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。

〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =

35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [

2*a*b+6*b,b^2+3*a] C2 = [

10*a,a*b] [ 2*b^2,3*a] C3 = [

2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [

2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [

1/2, 3/a] 2)

符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。

>〉 a1=sym(’2*sqrt(5)+pi')

〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)

>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)

〉〉 c2=vpa(b,56)

答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50)

Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、6372631285535581572696

c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。

3)

符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)

>〉 b1=double(a1)

%符号转数值 >> b2=isnumeric(b1)

%判断就是否转换成了数值 >> a2=vpa(a1,70)

%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =

1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换

1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。

输入以下命令,观察并分析结果。

>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)

>〉 findsym(f)

〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)

>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =

x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。

①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。

>〉 pretty(f1)>〉 pretty(f2)

答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)

f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉

pretty(f1)pretty(f2)

exp(-t)

exp(-t)

x

+ exp(—t)

x

+(x

+ 1)

x +(x

+ 1)exp(—t)

exp(—t)

exp(-t)

(x

+ x

+ 1)exp(-t)+(x

+ x

+ 1)x 注意与直接输出得 f1 与 f2 对比。

③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))

答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x

+ x

- 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

- 792 x

+ 495 x

- 220 x

+ 66 x

- 12 x ④ 因式分解(factor)。将表达式做因式分解。

>> syms x;f=x^12—1; 〉> pretty(factor(f))

答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x

12

11

+ x

— 12 x

+ 66 x

— 220 x

+ 495 x

x

+ 924 x

— 792 x

+ 495 x

— 220 x

+ 66 x

- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))

(x-1)(1 + x

+ x)(1 + x)

(1 — x + x)(1 + x)(x

— x

+ 1)⑤化简(simple或 simplify)。

将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)

答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换

subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')

%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分

1)

求极限函数得调用格式 limit(F,x,a)

%返回符号对象 F 当 x→a 时得极限 limit(F,a)

%返回符号对象 F 当独立变量*→a 时得极限

limit(F)

%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)

%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)

%返回符号对象F当 x→a 时得左极限 例一:

〉〉 clear >> f=sym(“sin(x)/x+a*x”)

>〉 limit(f,“x’,0)

%以 x 为自变量求极限 >> limit(f,”a’,0)

%以 a 为自变量求极限 >> limit(f)

%在默认情况下以 x 为自变量求极限 >> findsym(f)

%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));

〉〉 limit(f,n,inf)

%求 n 趋于无穷大时得极限

2)

求积分函数得调用格式 int(F)

%求符号对象 F 关于默认变量得不定积分 int(F,v)

%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)

%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)

%求符号对象 F 关于指定变量得从 a 到b得定积分 3)

求微分方程得调用格式 diff(F)

%求符号对象 F 关于默认变量得微分 diff(F,v)

%求符号对象 F 关于指定变量 v 得微分 diff(F,n)

%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解

1)常规方程求解函数得调用格式 g=solve(eq)

%求方程(或表达式或字串)eq 关于默认变量得解

g=solve(eq,var)

%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)

%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:

① seq=solve(“a*x^2+b*x+c')

② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)

⑤sym x a b c

eq=a*x^2+b*x+c seq=solve(eq)

2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。

常微分方程求解函数得调用格式:

r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。

② 常微分方程解得默认变量为 t。

③ 第二式中最多可接受得输入式就是 12 个。

④ 微分方程得表达方法。

在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。

边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。

例一 求微分方程得通解、练习:(1)求。

(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解

(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。

实验五

MATLA B 程序设计

一、实验目得

掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容

(1)M 文件得编辑。

(2)程序流程控制结构。

(3)子函数调用与参数传递。

(4)局部变量与全局变量。

三、实验步骤1、M M 文件得编辑

选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。

s=0;for n=1:100

s=s+n;end s 答;s =

5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。

function s=expl2(x)

s=0;for n=1:x

s=s+n; end

保存好文件后,在命令窗口输入

>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。

〉〉open conv

%打开 conv 函数 2 2、程序流程控制结构

1)

for 循环结构

>〉 for n=1:10 n end 答;n =n =n =n =n =n =

6 n =n =

n =n =

另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n

%循环得次数为向量 n 得列数 i end 答;i =

10 i =i =i =i =i =2)

while 循环结构 在命令窗口输入:

clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。

练习:

(1)请把 exp2、m函数文件用 while 循环改写。

(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)

if-else—end 分支结构

if—else—end 分支结构有如下 3 种形式。

(a)

if

表达式 语句组 1 end(b)

if

表达式 语句组 1 else 语句组2 end(c)

if

表达式 A

语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else

语句组 n end 4)

switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。

%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)

error(’please input n');

n=input(“n=’);end switch mod(n,2)

case 1

A=’奇数'

case 0

A=’偶数” End 答;n=input('n=’); if isempty(n)

error('please input n’);

n=input(“n=’); end switch mod(n,2)

case 1

A=”奇数“

case 0

A=”偶数' end n=1 A = 奇数 3、子函数与参数传递

有一个函数,试编写实现该函数得函数文件.function g=expl4(x)

%主函数 g=0;for n=1:x

g=g+fact(n);

%调用子函数 end

function y=fact(k)

%子函数 y=1; for n=1:k

y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量

太原理工大学课程设计报告书 篇6

一、需求分析

(一)建设工厂物资管理数据库目的(包括服务对象、数据库的目标等)

(二)开展工厂物资管理数据库的可行性分析

(三)数据和处理分析(包括数据库中需呀存储哪些数据、如何进行处理等)

二、概念结构设计

(一)实体及其属性

(二)分E-R图设计

(三)E-R图集成与优化(消除不必要的冗余和冲突)

三、逻辑结构设计

(一)E-R图转换为关系模型

(二)数据模型的优化(这一部分就是将关系模型规范到3NF)

(三)设计用户子模式(这一部分可以设计用户自定义的视图,参见教材p227)

四、数据库的实施与数据导入

(一)在SQL Server 2000或其他DBMS系统上实现数据库的设计

(二)基本表的建立

(三)视图的建立

(四)数据库安全的建立(包括用户的建立及权限的分配)

(五)数据的输入

五、数据库的应用

(一)数据查询

(二)数据增加

(三)数据删除

matlab课程设计报告书 篇7

1 MATLAB软件简介

80年代, 美国的Mathworks公司发行了具有数值计算和符号计算功能的MATLAB大型数学件。MAT-LAB是在美国博士Cleve Moler编写的矩阵运算接口程序的基础上进行了不断的拓展, 至今已发展成为一个集数值计算、符号运算、图形处理、图像处理、动态仿真、信号处理、实时控制为一体的新一代科技应用软件。MATLAB从内涵来讲是一种可视化编程的高级语言, 它提供了交互式的编程环境, 可以分析数据、开发算法、创建模型及应用程序等, 其中MATLAB强大的数值计算功能, 主要体现在MATLAB内部数百个函数的核心程序模块库和几十个应用工具箱。

MATLAB应用工具箱可分为两大类。功能性工具箱可应用于各个学科, 其主要作用是图形图像处理、建模仿真、文字处理及扩充其符号运算及与硬件实时交互等功能;学科性工具箱是针对某一学科由该领域学科带头人设计的, 如通信系统、数字信号处理、科学计算、测量测试和计算机视角等, 使用者可直接采用专家编写的基础程序, 进行尖端问题的研究, 学科性工具箱在通信、工业自动化、计算物理各个领域以及许多教科研单位都有广泛的应用。

物理学前沿的研究中, 现代物理可以化分为理论物理学、计算物理学和实验物理学, 其中计算物理学是三个学科的交叉学科, 涉及到物理学、计算数学和计算机科学, 计算物理学对自然科学的研究产生了巨大的推动力, 促进了力学、光学、电磁学等一些基础学科的实验及教学发展, 而且对核物理、粒子物理、凝聚态物理、生物物理等学科的研究和发展起着重要的推动作用。随着计算机技术的发展, 数值计算方法在物理学研究中的应用, 物理学中非线性问题的研究迅速发展, 并首先在力学中取得突破, 目前非线性问题已成为理论物理研究的重要方向, 数值计算也成为理论物理研究中不可少的重要方法。MATLAB在基础物理学研究中, 可以通过MATLAB探究物理过程, 从中总结概括出物理规律;可以利用MATLAB解物理学方程或微积分方程。还可以采用MATLBA较完善的物理实验的演示、作图、模拟、仿真方面的功能, 将物理实验转化成交互+探讨的过程。如在电磁学实验中, 用软件模拟李萨如图形对照示波器观察, 利用MATLBA对静电场等位线、电力线的分布进行描绘等, 无论是在力热光电电磁学领域都有广泛的应用。

MTALAB是一种数据类型, 其语法规则比C语言甚至比BASIC语言还要简单, 编程方法与人的书写习惯、解题方式基本吻合, 就像是在稿纸上列公式求解运算一样;标准的输入输出语句不用指针、不需要编译简单易学, 函数库的调用简洁方便、运算高效、最大的优惠是使用者可自行扩展, 因此MTALAB为物理计算和实验数据的处理提供了一种新的解决问题的方法。在物理教学、实验和科研中适当引入计算机数据处理计算等研究方法, 正是MATLAB软件的强项。它可以直接在命令窗口中执行, 还可以通过编程来实现, 还可以直接使用动画和图形演示计算结果。因此, 对大专院校理工类大学生而言, 学会使用MATLAB软件是必须掌握的基本技能。

2 MATLAB在物理数值计算中的应用

数值运算中, 常涉及代数方程、常微分方程、非线性方程、偏常微分主程的数值解等问题。MATLAB软件不仅提供了对这些方程求解的功能。而且还可以计算的高阶导数和偏导数。如在大学物理学习过程中, 微分运算会经常遇到, Mtlab提供的函数命令diff () 不仅可求函数的一阶导数,

调用函数命令diff () 很容易计算出结果。

其语句如下

在大学物理课程中主要研究常微分方程的初值问题。

传统理念中的物理运算是在确定了已知及初始条件的基础上求时空点的某个物理量。我们用MATLAB软件可直接用直角坐标系建立微分方程, 只要几行程序, 就可求解;但常规解法中由于物理现象的复杂性, 我们无法了解该物理过程在时空中的变化, 因此, 对物理问题的研究难以展开;如果利用MATLAB软件的数值计算和作图功能, 演示其运动情况并可通过数值解的分析, 让学生不仅掌握经典物理学问题, 还能分析一些难以得到的解析解对应的物理现象, 还可以基于MATLAB的作图功能对物理过程进行模拟再现, 物理过程模拟为探究者提供了充分的物理信息。这里必须清楚, MATLAB的图形、图象处理仍然是通过计算机软件强大的计算能力实现的。MATLAB正是利用了它强大的作图功能, 才将大量的数据转换为直观的图像。其实际方法是以矩阵形式通过计算存储来实现物理过程模拟。

例2:在正前方1000m远处有一座小山丘, 山丘高50m, 其上建有一碉堡, 问如果要摧毁这个目标, 应在什么角度以最小的速度发射炮弹?这里我们用MATLAB编程来实现。

运行程序后得到V0=101.5000 n=77, 说明在程序中n=77对应题目中V0的最小值是101.5000m/s, 计算机还可画出角度与速度的图象。

另外大学物理中还有大量的非线性问题, 如力学问题中空气阻力与速度的关系, 形成的动力学方程是非线性, 但在实际求解过程中由于各种困难, 我们将阻力与速度看成正比这种不符合实际的情况, 通过建立线性的微分方程组求解各种问题。这种解题思路, 导致教师在教学过程中过分强调瞬时分析、避而不谈或忽视过程分析, 这种教学理念难以让学生认识理解整个物理过程的全貌, 问题就出在复杂的数学计算;换一种思路若针对其物理过程, 如果我们已建立了对应的非线性微分方程, 但是这类方程常规解法之一是采用小参量展开或通过变换变量等方法使之线性化, 只是这种转换没有一般方法可遵循;另外一种常用方法只针对弱非线性微方程, 一般可采取解析法处理问题作近似或定性的解析讨论, 虽然得到的是近似解, 但有利于进行理论研究。对非线性问题采用MATLAB软件数值计算方法简单明了, 它与解析推演同等重要, 目前这种方法已成为理论物理研究的重要方向。如质点在万有引力场中的一些问题, 我们采用极坐标建立的微分方程是非线性的, 利用u=1/r变换将运动方程转换成线性方程, 还是无法得到r=r (t) , θ=θ (t) 的解析式, 这个问题长期困扰着我们。但是如果利用MATLAB软件数值计算, 只要给出两个极坐标的运动微分方程及初始条件, 简短几行程序就得到某一时刻质点的位置、速度及图象。

3 Matlab软件的学习策略

综上所述, 由于计算机技术的成熟发展以及产生的易学易懂且具有强大运算功能和作图功能的Matlab应用软件, 它为我们在大学物理教学中引入计算数值方法提供了技术保证。在大学物理的教学改革中, 我们可以将Matlab应用软件与大学物理有关的许多课程相结合, 在师范类大专院校可结合普通物理课程让Matlab进入教材, 进入普通物理课教学计划, 一般计划用10学时讲授MATLAB基础知识, 学生就可以掌握以MATLAB软件为工具, 用数值计算的方法求解常微分方程初值问题, 达到了课程的基本要求。目标是能达到大学物理课程的要求, 即能利用MATLAB软件求解线性常微分方程会处理非线性问题等方法, 为今后进一步的科学研究打好基础。然后由学生根据个体需求自主学习, 让他们在探索解决问题的实践中进一步学习提高。

虽然这个软件简单易学, 但要学生真正掌握编程方法和基本功能最好是能编写适合所在院校学生学习的简易讲义或教程, 选择相关物理学实例资料供学生参考, 将传统解法与MATLAB处理问题的方法进行对比, 让学生感知其便捷。MATLAB软件的教学过程, 要重点介绍MATLAB软件的基本使用方法以及用这些方法可以完成什么样的任务, 将解决问题的基本策略和方法教给学生, 让学生在短时间内学会Matlab编程的基本方法, 并结合大学物理学习内容在教师的指导下有序进行计算机上机实践, 利用Matlab软件练习编程、调用程序处理一些物理问题, 在实践中强化学习。

这里要注意的一点是, MATLAB软件在大学物理中的应用, 一定是在掌握了物理学的基本概念、规律的情况下, 才能正确运用其数值计算或程序解决问题, 因此物理教学过程中不能轻视物理基本原理的教学。还有一点, 教学过程中可通过多媒体教学系统, 适当的用MATLAB软件实现一些物理现象, 让学生对知识点的学习有直观的认识, 可提高物理知识软件编程学习的效率.另外, 在教学中, 教师还要MATLAB软件的数值运算和模拟技术, 有目的对学生进行科学思想与科学思维方法的教育, 逐步提高学生的科学素养。

参考文献

[1]傅清祥、王晓东, 算法与数据结构[M].北京:电子工业出版社, 2001.

[2]Matlab在大学物理教学中的应用[J].山东建筑大学学报, 2009, 24 (3) .

matlab课程设计报告书 篇8

关键词 通信原理 MATLAB 超外差接收机 建模仿真

中图分类号:G424 文献标识码:A

1 通信原理的课程特点

在通信工程、电子信息技术等专业中,“通信原理”是其中一门非常重要的专业课课程,各个高等院校对该课程都安排了相应的配套实验箱,开展了二进制PSK、PCM等简单的课程实验,验证课程的理论结果。这些通信原理的实验教学内容缺乏新意,实验手段陈旧落后,学生只是为了完成实验而做实验,不会主动思考通信理论的真正物理含义,教学实验的效果不理想。

“通信原理”①主要分为两大部分:模拟通信和数字通信。而模拟幅度调制是最基础的无线电远距离传输技术。本文结合频分复用和超外差接收机系统的建模和仿真,研究MATLAB在通信原理课程教学实验中的应用。

2 MATLAB基本功能及其在通信中的应用

MATLAB是由美国的MathWorks公司推出的一种科学计算和工程仿真软件,专门以矩阵的形式处理数据。MATLAB将高性能的科学计算、结果可视化和编程集中在一个易于操作的环境中,并提供大量的内置函数,具有强大的矩形计算和绘图功能,适用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。目前,在世界范围内被科研工作者、工程技术人员和院校师生广泛应用。

MATLAB工具软件可以帮助学生掌握通信的基本原理及分析方法,提高相应的运算能力和动手能力。通过调整教学实验的内容,使得学生在建立概念的同时,能够给出定量和定性的分析,最终将理论和实践联系起来。

另外,MATLAB为用户提供了专业的通信工具箱,②用于设计和分析通信系统物理层的算法。工具箱包括100多个MATLAB函数可用于通信算法的开发、系统分析及设计。通信工具箱能完成以下任务:信源编码及量化;高斯白噪声信道模型;差错控制编码;调制和解调;发送和接收滤波器;基带和调制信道模型;多址接入,CDMA、FDMA和TDMA;比较系统误码率的图形用户界面;用于通信信号可视化的图形分析和绘制,包括眼图、星座表和格型;信道的可视化工具。

3 基于MATLAB的通信原理实验教学举例

本小节通过实验教学举例来展示用MATLAB进行通信系统建模的仿真方法。③

3.1模拟通信系统的建模

對一台超外差式中波收音机进行建模,仿真其信号处理过程,其中以不同载波频率同时传输两路不同的调幅信号,以对频分复用方式进行模拟。接收机可通过设置不同的本机振荡频率来选择接收其中某一路信号。调幅中波接收机的接收频率段为550~1605kHz,中频为465kHz,其通信系统模型建模如图1所示。

本模型将两个调幅发射机封装为子系统模型,载波分别为1000kHz和1200kHz,被调基带信号分别为1000kHz的正弦波和500kHz的方波,幅度为0.3V。

3.2 模拟通信系统的仿真

为了模拟接收机距离不同引起的传输衰减,分别以Gain1、Gain2模块对传输信号进行衰减,最后在信道中加入白噪声并送入接收机。本仿真的接收机模型中没有设计输入选频滤波器和高频放大器,天线接收信号直接送入混频器进行混频。混频所使用的本机振荡信号由压控振荡器产生,其振荡频率始终比接收信号频率高一个中频频率,这样,接收信号与本机振荡在混频器Product模块中进行相乘运算后,其差频信号成分的频率就是中频频率,通过中频带通滤波器Analog Filter Design1选出,然后由中频放大器Gain进行中频放大。放大后的中频信号再次经过Analog Filter Design2进行中频滤波后送入包络检波器解调,并通过低通滤波器滤除中频分量。Gain3模块用来模拟接收机中的基带信号放大功能,示波器用来对比观察解调前后的信号。中频滤波器设置为2阶带通滤波器,中心频率为设计中频465kHz,带宽为12kHz。检波后的低通滤波器可设置为1阶的,截止频率为6kHz。压控振荡器的中心频率设置为中频465kHz,压控灵敏度设置为1kHz/V,这样压控振荡器输出频率将等于中频频率值与压控端输入值之和(单位是kHz)。例如,当压控输入值为1000时,压控振荡器将输出1465kHz频率的正弦波,这样刚好接收载波频率为1000Hz的调幅信号。所以,压控输入端的值就是接收机所要接收的信号频率。模型中用Slider Gain作为滑块增益调整,在仿真中双击该模块可“实时”地调整设置的接收频率,以观察接收机输出变化。

图2给出了示波器显示的对两发射信号的接收仿真波形,其中信道噪声方差设置为0.01,仿真步进为6.23e-8s。接收机对任何信号的传输增益都保持不变,而信道对1200kHz电台的衰减较少,所以其解调幅度相应也较高。

注意,调幅解调输出信号的平均值(即直流分量)大小与接收信号的强弱成比例,即可以用调幅解调输出信号的直流分量来衡量接收信号的强弱。

4 结束语

本文利用MATLAB对通信系统进行分析和设计,通过仿真实验阐明基本概念,强调理论联系实际。通过计算机作为辅助教学实验工具,改进了教学方法,让学生不局限于试验箱的硬件条件,拥有了更多的自主学习的空间,对通信原理的认知和理解有很好的促进和帮助。

注释

① 樊昌信,曹丽娜.通信原理(第6版).国防工业出版社(第6版),2008.

② 陈杰.MATLAB宝典(第3版).电子工业出版社,2011.

上一篇:凯立德2014年6月升级版(SP2)懒人包-全分辨率下载下一篇:护理科研项目申请书