第一篇:MATLAB课程作业(本站推荐)
MATLAB结课作业
姓名: 班级: 学号:
摘要
MATLAB是math works公司推出的一项高性能的数值计算和可视化软件,其强大的计算和图形功能使其在科学计算领域赢得了众多的用户。
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。
MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLABMATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
“信号与系统”课程是一门实用性较强、涉及面较广的专业基础课,是电子信息类专业学生的必修课程。它是将学生从电路分析的知识领域引入信号处理与传输领域的关键性课程,对后继专业课起着承上起下的作用。该课程的基本方法和理论大量运用于计算机信息处理的各个领域,特别是通信、图像处理、数字信号分析等领域,应用更为广泛。1 信号的表达
信号可以表达为时间的函数,根据定义的不同,信号可以分为连续时间信号和离散时间信号,分别表示为x(t)和x[n];对于确定信号,时间变量值与对应的函数值形成一一对应关系。要将信号保存到计算机系统中,信号必须表现为有限长度的离散数字序列;在MATLAB中,信号与对应的时间变量采用两个一维向量(序列)表示,两序列长度必须相等。
1.1 离散时间信号x(n)的表达:离散时间变量n只能取整数值,与其对应的 函数值形成离散时间信号;x和n为长度相同的序列,序列元素的编号从1开始;坐标序列n值的设置: n=[-3:3] 设定起点和终点;x的值可以直接设置,也可以根据与n有关的运算得到(必须先定义n):x=[1 2 3 4 3 2 1]
x=3*n x=exp(j*(pi/8)*n),采用函数stem(n,x)可以作出离散信号的图形。例1.1 离散时间信号的表达:画出下列离散信号
解:MATLAB程序为: n=[0:6];n1=[0:30];x1=[1 2 3 4 3 2 1];x2= 3*n;x3=exp(j*(pi/8).*n1);x4=0.8.^n1;subplot(2,2,1),stem(n,x1);ylabel('x1');subplot(2,2,2),stem(n,x2);ylabel('x2');subplot(2,2,3),stem(n1,x3);ylabel('x3');subplot(2,2,4),stem(n1,x4);ylabel('x4');执行结果为
67系统函数与系统性质分析 3.1系统零点,极点和零极图
系统函数是复变量s或z的有理分式,当某变量值使系统函数为零时,该变量值称为系统零点;当某变量值使系统函数为无限大时,该变量值称为系统极点;当系统序列a和b为有限长度时,系统零点数量和极点数量有限,可以分别用零点序列
和极点序列以表达为因子形式
表达,此时系统函数可
上式中k值称为系统增益。在复平面上,将零点和极点分别以的形式标出,称为系统 零极图。利用MATLAB函数zplane(b,a)可以画出给定系统的零极图;利用MATLAB函数[z,p,k]=tf2zp(b,a)可以以数值形式得到系统的零点序列,极点序列和增益。例 3.1对于系统函数,求系统的零点序列,极点序列和增
1.6449i-0.8437 ] k = 5
3.2 部分分式分解与系统单位冲激响应
利用系统函数求系统单位冲激响应时经常采用部分分式分解方法,利用系统极点将系统函数分解为一阶分式的和,每个一阶分式与一个冲激响应模式对应: 对于连续系统
对于离散系统
01.4050i-1.5339 + 1.4050i p =-1.0000 0.7000 + 0.6000i 0.7000编程环境
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。简单易用
Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。强处理能力
MATLABMATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学 运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学 运算、多维数组操作以及建模动态仿真等。图形处理
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、-12
第二篇:MATLAB作业
第一章 MATLAB R2010a简介
主要内容总结如下:
本章主要介绍了MATLAB的功能和它的用户界面以及MATLAB R2010a的路径搜索。MATLAB的功能是多种多样的,有数学计算功能、图形化显示功能、M语言编程功能、编译功能Simulink建模仿真功能,自动代码生成功能,图形用户界面开发功能等一系列功。在介绍MATLAB R2010a用户界面时,主要介绍了它的启动方法,主菜单及其功能。学习心得体会:
通过本章的学习,我了解了MATLAB的基本功能,认识了它的界面和启动方法,以及主菜单功能,被他强大的计算功能和其他功能深深吸引,学会了MATLAB,将会为我以后学习其他方面的知识提供一种工具,使学习其他的东西更加的方便。我非常喜欢这门课,所以我一定会努力学好它的。
第二章 基本使用方法
主要内容总结如下:
本章主要介绍了MATLAB中一些简单的数学运算和常用的数学函数和数学运算符,标点符号的使用,常用的操作命令和快捷键,整数、浮点数、复数、逻辑变量等数据类型和他们之间的转换,数据类型操作函数和变量,MATLAB中的关系运算符逻辑运算符等运算符和它们的优先级,以及一些基础函数,如位操作函数、逻辑运算函数、集合函数、时间与日期函数。本章还介绍了MATLAB中的脚本文件。
学习心得体会:
通过本章的学习我了解了MATLAB中的简单数学运算符,一些操作命令和快捷键,MATLAB R2010a的数据类型和运算符,还有一些基础函数,脚本文件。我认为这些东西是基本的东西,但是我又必须要学好它们,只有把这些基础都掌握了,才能为以后的学习打下坚实的基础。我认为MATLAB中的许多函数我应该熟练它的作用,做到看到函数要知道其作用。我在这一部分的学习中,脚本文件的编写对我来说有一定的困难,我以后一定多加练习,学好他们。
第三章 数组和向量
主要内容总结如下:
本章主要介绍了数组和向量两个大的方面。其中数组介绍了数组的创建,数组的操作(如获取数组中的元素,从数组中移除元素,数组算术操作,数组逻辑运算数组连接,切片、重排和线性化数组),和一些实例应用;向量部分介绍了向量的创建,尺寸,索引(包括数值索引、逻辑索引),缩短,向量操作(包括算术操作、逻辑操作、应用库函数、连接、切片)等知识。学习心得体会:
通过本章的学习我对数组和向量有了一个全新的认识,这部分的学习有许多细节需要注意,如我们在从数组中移除元素时,元素必须整列整行的移除;行向量可以直接输入,列向量输入时中间需要用到分号;.*,./,和.^被分别用作逐个元素相乘,相除,及指数运算等等。还有一些函数如zeros,rand,diag,magic等都可以产生一些常用的数组,学习时应该熟练掌握。向量的索引对我来说是比较难的知识,刚开始学的时候不太理解,不过后来经过我反复的学习逐渐了解,这部分知识我还需要努力。向量和数组这部分知识在以后的几章会经常用到,并且和实际联系的也比较紧密,所以我必须要学好他们。
第四章MATLAB 的数学运算 本章主要内容总结如下:
本章主要介绍了多项式与差值,函数运算,微分方程三大模块。其中多项式与插值主要介绍了多项式的四则运算,roots函数,polyval函数,polyder函数,多项式拟合,以及数据插值;函数运算主要介绍了函数图像的绘制,函数的极值,数值积分和含参数函数的使用;微分积分主要介绍了常微分初值问题和常微分方程边值问题。
学习心得体会:
通过本章的学习掌握了在MATLAB中对多项式的处理,和图形的绘制,极值的求解,函数的求解,微分、积分的处理。本章所介绍的MATLAB处理方法处理的是高等数学中经常遇到的问题,从这里可以知道MATLAB是一种很好的数学工具。本章学习时有许多问题需要注意,如多项式在相加时要等长;绘制函数图像的函数为fplot;使用含参数函数还可以通过匿名函数来实现,函数的参数在使用之前必须先赋值等问题。这一部分也介绍了许许多多的函数,我应该在课下熟练掌握,充分理解其作用。
第五章 字符串、单元数组和结构体
本章主要内容总结如下:
本章主要介绍了的字符串生成、执行、字符串与数值之间的转化;单元数组的生成和一些操作;结构体的生成和一些操作。在MATLAB中,生成字符串的简单方法为stringname=’the content of the string’.;单元数组可以通过赋值语句直接创建,也可以利用cell函数先为单元数组分配一个内存空间,然后再给各个单元赋值;结构体的生成可以是直接输入,也可以使用结构体生成函数struct。还介绍了字符串的比较,字符串的查找和替换;单元数组的显示和图形显示和单元数组元素的删除;结构体中有添加成员变量,删除成员变量和调用成员变量。学习心得体会:
通过本章的学习了解了字符串,单元数组,结构体的一些基本的使用技巧,学会了字符串,单元数组,结构体的创建,以及它们的一些特殊的用途,如利用函数来进行字符串与数值之间的转化,单元数组的图形显示,在结构体中添加成员变量。字符串,单元数组和结构体是三种特殊的数据结构,字符串用于对字符型数据结构进行操作,单元数组和结构体数据类型允许用户将不同类型的数据集成为一个单一的变量,因此,相关的数据可以通过一个单元数组或是结构体进行组织和操作。在这一部分的学习中,感觉比较有意思,所以对这部分知识兴趣很高。觉的这一部分知识很是有用,所以应该好好学习。
第六章 MATLAB编程
本章主要内容总结如下:
本章主要介绍了MATLAB的脚本文件和编辑器/调试器,程序设计和开发,关系运算符和逻辑变量,逻辑运算符和函数,条件语句,和循环。其中脚本文件和编辑器主要介绍了脚本文件如何创建和使用,以及它的命令窗口的介绍,脚本文件的调试,如何使用脚本文件存储数据,以及如何控制输入和输出;程序设计和开发主要介绍了算法和控制结构,结构化程序设计以及伪代码;关系运算符和逻辑变量主要介绍了logical类,logical函数以及使用逻辑数组访问数组;逻辑运算符和函数主要介绍了一些如与、或、非等逻辑运算符以及它,们的优先级别和使用方法,还介绍了短路逻辑运算符,find函数;条件语句主要介绍了if语句,elseif语句和它们的使用方法,还简要介绍了如何输入和输出参数的数量;循环主要介绍了for循环,break和continue语句,使用数组作为循环索引,隐含循环,使用逻辑数组作为掩码等知识。学习心得体会:
通过本章的学习初步掌握了MATLAB的脚本文件及其编辑和调试方法,掌握了MATLAB的程序设计和开发流程,和MATLAB的关系运算符、逻辑运算及函数操作,MATLAB中的流程控制语句包括if语句,switch语句,contine语句。本章的脚本文件对今后的学习非常有帮助,条件语句和循环语句可用于解决实际生活中许多问题。我对这一部分的认识是:感觉不是太难,又不会的地方也及时请教老师,所以没有遗留太多疑问。再者,大一时也学过条件语句和循环语句,所以学起来没有那么的吃力。习题如下:
编程:求[100]以内的全部素数(素数是大于1且除了1和它本身以外不能被其他任何整数所整除的整数。为了判断整数m是否为素数,一个最简单的办法用2,3,4,5, m-1这些数逐个去除m看能否除尽,如果全都除不尽,则m是素数;否则,只要其中一个能除尽,则m不是素数。)
程序如下: disp(2)for m=3:1:100 for x=2:1:m-1 if rem(m,x)==0 break
elseif(x>=m-1)disp(m)end
end end
第七章 MATLAB的符号处理
本章主要内容总结如下:
本章主要介绍了符号运算的简介,符号表达式的化简与替换,符号函数图形的绘制,符号微积分,符号方程的求解,符号积分变换,MAPLE函数的调用,符号函数计算器。其中符号运算简介主要介绍了符号对象,符号变量、表达式的生成,以及findsym函数和subs函数,符号和数值之间的转化;符号表达式的化简与替换主要介绍了用collect函数合并同类项,用expand函数进行符号表达式的展开,用horner函数将函数转化为嵌套格式,用factor函数来实现因式分解的功能,simplify和simple函数来实现表达式的化简,符号表达式的替换可以用subexpr和subs函数;符号函数图形绘制主要介绍了符号函数曲线的绘制,符号函数曲面网格图及表面图的绘制和等值线的绘制;符号微积分主要介绍了符号表达式求极限,符号微分、积分,级数求和和Taylor级数;符号方程的求解主要包括代数方程的求解,代数方程组的求解,微分方程的求解,微分方程组的求解等;符号积分变换主要有符号傅立叶变换,符号拉普拉斯变换,符号Z变换。学习心得体会: 通过本章的学习了解了MATLAB符号计算的几个功能,有计算、线性代数、化简、方程求解、特殊的数学函数、符号积分变换,MATLAB提供了与MAPLE的良好接口,通过maple.m和map.m实现。这样,MATLAB可以实现更强大的符号运算功能功能,为习惯于MAPLE的用户提供了方便。本章的学习让我领会了MATLAB强大的符号功能,能够很好的解决实际生活中问题。
第八章 MATLAB绘图
本章主要内容总结如下:
本章主要介绍了MATLAB的绘图功能,首先介绍了MATLAB的图形窗口,包括图形窗口的创建与控制,图形窗口的菜单栏的主要功能;然后介绍了基本图形的绘制,有二维图形的绘制,三维图形的绘制以及如何对图形进行操作;介绍了特殊图形的绘制,有条形图、面积图、饼状图、离散型数据图、方向矢量图和速度矢量图、等值线绘制,还介绍了在图形中添加基本注释,包括文本框,线条,箭头,框图,标题,坐标轴,颜色条,图例;最后介绍了一些三维图像的高级控制。学习心得体会:
通过本章的学习了解了MATLAB的图形窗口,掌握了MATLAB基本二维图形、三维图形的绘制,以及图形的基本操作,掌握了MATLAB特殊图形的绘制,如柱状图,饼状图,掌握了图形注释的添加及管理,了解了三维图形的视点控制及颜色、光照控制。本章的学习和实际生活联系的非常紧密,把抽象的数学式子转化为易理解的图形,给人一目了然的清晰感觉。这部分知识是一个很好的绘图工具,对解决其他学科的问题很有帮助。我在学习这一部分知识时,上课紧跟着老师的思路走,模块很是清晰,学习兴趣极高,但是仍存在许多不足的地方,课下一定再进一步努力学习。习题如下:
绘图:在同一图像窗口中绘制六副子图
1.在第一个子图中同时绘制不同线型不同颜色的正弦和余弦曲线,添加图例、坐标轴、标题、网格线和边框线。2.在第二个子图中绘制磁盘空间的饼图。3.在第三个子图中绘制三维网格图(surf)。4.在第四个子图中绘制三维曲面图(mesh)。
5.在第五—六个子图中同时绘制二维正弦离散图和红色点划线余弦阶跃图。
程序如下:
>> x=[0:pi/10:2*pi];subplot(3,2,1);plot(x,sin(x));hold on;plot(x,cos(x),'r-.');grid on box on >> m=[8 17];>> subplot(3,2,2);>> pie(m,{'可用空间','已用空间'});>> t=0:pi/50:10*pi;>> subplot(3,2,3),plot3(sin(t),cos(t),t);>> grid on >> axis square >> X=-1:0.1:1;>> Y=X';>> X1=X.^2;>> Y1=Y.^2;>> p=ones(3,1);>> p=ones(length(X),1);>> q=ones(1,length(Y));>> X1=p*X1;>> Y1=Y1*q;>> Z=X1+Y1;>> subplot(3,2,4)>> mesh(X,Y,Z)>> n=[0:10:360]*pi/180;>> N=sin(n);>> subplot(3,2,5),stem(n,N)>> subplot(3,2,6),stairs(n,N,'r-.');
运行结果如下:
第九章 句柄图形
本章主要内容总结如下:
本章主要介绍了MATLAB 的图形对象,图形对象的属性,和图形对象的属性值的设置和查询。MATLAB介绍了Root对象,Figure对象,Core对象,Plot对象,Annotation对象,Group对象;图形对象的属性包括公共属性和特有属性;图形对象属性值的设置和查询首先通过构造函数返回其创建的对象句柄,然后利用该句柄,用户可以在对象创建完成后对其属性值进行查询和修改。学习心得体会:
通过本章的学习了解MATLAB图形对象及其属性,掌握MATLAB图形对象属性的设置及其查询,掌握了MATLAB图形句柄的访问及其操作。句柄图形是MATLAB中用于创建图形的面向对象的图形系统。通过图形句柄,MATLAB可以对图形元素进行操作,而这些图形正是产生各种类型图形的基础。利用图形句柄,可以在MATLAB中修改图形的显示效果,创建绘图函数。对于这部分知识的学习有所欠缺,课下应该多加练习。
第十章GUI设计
本章主要内容总结如下:
本章主要介绍了GUI的基本控件,如何创建简单的GUI,如何向界面中添加控件以及如何设置设置控件的属性和编写响应函数;本章还介绍了通过向导创建GUI界面和通过程序创建GUI,其中通过向导创建包括1,启动GUIDE2,2,向GUI中添加控件并设置控件标志和控件显示文本,3,创建菜单;通过程序创建GUI的步骤主要包括1,需要实现的功能及需要包含的控件2,需要使用的技术3,创建GUI,4,创建GUI界面和控件,5,初始化GUI,6,定义响应函数,7,该GUI的完整M文件;本章还介绍了如何编写GUI代码,包括GUI文件和响应函数。学习心得体会:
通过本章的学习掌握了图形用户界面和GUI中所包含的多个图形对象,如窗口、图标、菜单和文本的用户界面。以某种方式选择或激活这些对象,通常引起动作或发生变化。了解GUI的基本控件,掌握了通过GUIDE创建GUI的方法,也掌握了通过程序创建GUI的方法。对于本章的知识我是比较陌生的,以前从来没有接触过,所以刚开始学的时候比较吃力,后来经过老师的讲解,和自己在课下的学习,对这部分知识有了一个系统的了解。做作业时,刚开始时,程序运行出错,后来经过反复修改,终于运行成功,看着自己的GUI成功运行,心中是比较兴奋的,课下一定会多加练习的。习题如下:
GUI:绘制抛物线y=ax2+bx+c的图像,其中参数a、b、c及标题等由界面文本编辑框输入,设计边框线按钮和边框菜单。M文件程序如下:
function varargout = untitled(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @untitled_OpeningFcn,...'gui_OutputFcn', @untitled_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;function go_Callback(hObject, eventdata, handles)grid on function tit_Callback(hObject, eventdata, handles)title('¶þ´ÎÇúÏßy=a*x.^2+b*x+c')function ax_Callback(hObject, eventdata, handles)axis([-7 7-10 10])function gf_Callback(hObject, eventdata, handles)grid off
function togglebutton5_Callback(hObject, eventdata, handles)function op_Callback(hObject, eventdata, handles)box on box off
function bo_Callback(hObject, eventdata, handles)box on
function bf_Callback(hObject, eventdata, handles)box off
function pushbutton2_Callback(hObject, eventdata, handles)function edit1_Callback(hObject, eventdata, handles)x=str2num(get(handles.edit1,'string'));t=-10:.001:10;y=x(1)*t.^2+x(2)*t+x(3);plot(t,y)function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end
运行结果如下:
第十一章 Simulink的建模与仿真
本章主要内容总结如下:
本章主要介绍了Simulink中的建模方法和基本功能模块,首先介绍了Simulink建模的基本操作和基本流程,然后介绍了Simulink的各,功能模块和常见Simulink模型,最后介绍S函数,并通过实例建模以使读者对Simulink有进一步的认识。学习心得体会:
通过本章的学习了解了Simulink的建模方法和基本模块,这一部分知识对我来说完全是新的内容,学起来有点吃力,所以应该多花点时间在这部分。这部分知识和专业联系的比较紧密,专业性很强,一定要学好。
第十二章 文件和数据的导入与导出
本章主要内容总结如下:
本章主要介绍了文件的存储,数据的导入,文件的打开,文本文件的读写,低级文件I/O和利用界面工具导入数据。文本文件的读写可以用csvread,csvwrite,dlmread,dlmwrite,textread,textscan等函数来实现。学习心得体会:
通过本章的学习了解了MATLAB的基本数据操作,掌握了MATLAB中文本文件的读写方式和MATLAB通过界面导入导出数据,了解MATLAB中的基本输入输出函数,这部分知识要深入了解,达到融会贯通的程度。
第三篇:MATLAB课程总结
MATLAB课程总结
班级:14级电子信息与科学技术
姓名:
孙凯
学号 201442398
在过去的两个月里,我们学习了MATLAB教程这一门课程,对此我有一些自己的思考与感悟。
通过学习,我们了解了该软件的历史,是美国mathwork公司推出的一套高效率的数值计算和可视化软件。作为当今社会最具影响力、最具活力的软件,它起源于矩阵运算,现已发展为一款高度集中的计算机语言。
然后我们又学习了这款软件的功能,学会了用它来进行较复杂的科学运算,并实现高质量图形的可视化及界面设计,与其他程序和语言接口。因此,通过这个软件,我们既可以利用其强大的运算功能,又能使用它进行绘图,在接下来的学习中它必定会展现出更大的作用,与我们的生活息息相关。
这样一款应用相当广泛的数学软件,我们也许才刚刚触及皮毛,但我相信在接下来的学习中老师会带领我们进一步加深对它的使用的熟练程度及认识。
在平时的学习中,我觉得实践操作是很重要的,每次实验课上都需要妥善的利用时间进行操作练习,加强自己对这款软件的操作使用,对课上老师所讲的内容进行印证,把知识点记牢记准,并利用课下的时间进行进一步加强,达到熟练的操作程度,让这一项技能真正的属于我们。
第四篇:matlab课程总结
Matlab 课程总结
学习matlab已经有一年多的时间了,matlab跟其他语言不一样(我用的编程语言,除了matlab就应该是c或c++了,VB也接触过),如果你抱着“把其他语言的思想运用在matlab里面的想法”的话,那么我想,即使程序运行不出错,也很难把握matlab的精髓,也就很难发挥matlab的作用了。
Matlab是一个基于矩阵运算的软件,这恐怕是众所周知的事情了,但是,真正在运用的时候(就是在编程的时候),许多人(特别是初学者)往往没有注意到这个问题,因此,for循环(包括while循环)满天飞„„„„..这不仅没有发挥matlab所长,还浪费宝贵时间。我们往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++的思想。因此,以先用循环(基于C++的思想)来编写代码,然后看看能否用matlab的语言(基于矩阵的思想)来改进。当然,这样做的前提是你对matlab提供的一些函数比较熟悉才行,这些函数在matlab的“帮助”那里搜索“FunctionsUsedinVector izing”就可以找到一些。
对MATLAB的认识和了解
语言简洁紧凑,使用方便灵活,库函数极其丰富。与之前学过的C语言相比较。它的语言简练明了,有时候只要一个字符就能表示出整句语句,不用一步步去读。这种语言简单而实用。每个函数建立一个同名的M文件,如上述函数的文件名为fun.m。这种文件简单、短小、高效,并且便于调试。比如说,函数的赋值。在C语言中,它需要一个个去赋值,x=?;y=?;当变量很多的时候,我们不能一次性的去赋值。并且我们需要注意赋值的类型。而在Matlab软件中,我们只需要知道它的初值,自变量的数值,以及它的范围,就可以用矩阵把整个函数赋值。这减去了我们的工作复杂性,也降低了我们时间花费。
运算符丰富,用Matlab软件设计程序,它更加方便快捷。MATLAB 的基本数据单元是既不需要指定维数、也不需要说明数据类型的矩阵,而且数学表达式和运算规则与通常的习惯相同。因此,在MATLAB环境下,数组的操作与数的操作一样简单。对比C语言,Matlab确实简单不少。我们在编写程序时简便了许多。例如,求1 1 2 3 5 8 13„这个算法。C语言得用许多的语句去循环算这个算法。而Matlab软件可以首先数据初始化,然后用while去循环,做出循环体,就可以你要多少数据,它会给你多少数据。还有在Matlab软件设计程序时,少了很多的定义,减少了复杂度,节省了计算机的暂时内存使用率。就和C语言一样,在语句结束时用“{ }”,Matlab软件中一句话结束时,也需要用end。MATLAB既具有结构化的控制语句(如for循环、while循环),又有面向对象编程的特性。
语法限制不严格,程序设计自由度大。程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。Matlab具有一个强大的工具箱,里面的东西,只要你想要的,你可以毫不犹豫的提取出来,不用想C语言编程中,你要的东西你得用函数调用的形式去借用。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。MATLAB的图形功能强大。不管你二维图形,三维图形,还是现在流行的四维图形。只要你想要,能编写出来函数式。在短短几秒钟之内,它会呈现在你眼前。另外就是图形的直观性,你在绘编图形时,加上一点修饰,它会自动标注你想要图形的阴影部分。MATLAB 具有二维和三维绘图功能,使用方法十分简便。而且用户可以根据需要,坐标图上加标题。坐标轴标记。文本注释及栅格等,也可以指定图线形式(如实线、虚线等)和颜色。常用的快捷键(用【】表示)或命令: 1.在命令窗口(CommandWindow)中:
1)【上、下键】――切换到之前、之后的命令,可以重复按多次来达到你想要的命令
2)clc――清除命令窗口显示的语句,此命令并不清空当前工作区的变量,仅仅是把屏幕上显示出来的语句清除掉
3)clear――这个才是清空当前工作区的变量命令,常用语句clearall来完成 4)【Tab】键――(转自版友心灯)在[email]matlab@hit.edu.cn[/email]看到的:在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。目前讨论结果是:matlab6.5版本中,如果候选命令超过100个,则不显示。而在matlab7以后版本中,则没有这个限制,均可正常提示
5)【Ctrl+C】(或【Ctrl+Break】)――在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行。2.在编辑器(Editor)中:
1)【Tab】(或【Ctrl+]】)――增加缩进(对多行有效)2)【Ctrl+[】--减少缩进(对多行有效)
3)【Ctrl+I】--自动缩进(即自动排版,对多行有效)4)【Ctrl+R】――注释(对多行有效)5)【Ctrl+T】――去掉注释(对多行有效)
6)【Ctrl+B】――括号配对检查(对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键)7)【F12】――设置或取消断点 8)【F5】――运行程序Coming: 1.help:最有效的命令
1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入
Help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。3)知道函数名,直接用help funname就可以得到相应的帮助信息。2.see also:不可小瞧的关联
在用help命令的时候,可能因为我们开始估计的方向不一定完全正确,在列出的帮助信息中没有直接给出的我们要找的东西,但是我们一定不要忽略了在帮助的最后列出的see also。3.lookfor:matlab中的baidu 当我们很多什么头绪都没有的时候,我们可以求助于它,往往会收到意想不到的效果。
譬如:曾经在gui编程的时候,遇到过这样一个问题:想拖动鼠标时,要出现一个方框,就像你在桌面上拖动鼠标,会出现虚线框一样。4.get,set:GUIobject属性的帮手
在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。这时,可以用get(handles)得到此对象的所有的属性及其当前值。用set(handles)可以得到对象所有可以设置的属性及其可能的取值。找到我们需要的属性名字和可能的取值之后,就意义用get(handles,‘propertyname’)取得此属性的值,用set(handles,‘propertyname’,values)设置此对象此属性的值。
5.Edit:查看m源文件的助手
在应用matlab过程中,可能我们想看看它的m源文件,当然用editor定位打开也行,但是我经常采用的是直接在command窗口中用edit funname.m,就省去了定位的麻烦。
6.其他常用命令:which,what等
which:定位指定的函数和文件,最好带上参数-all,以便显示更加多的信息 what:获得指定目录的m文件,mex文件以及mat文件名列表 MATLAB学习经验
悟性。上小学最喜欢的一个字就是悟,以前以为悟就是一个人的慧根。其实不是这样的,所谓悟就是想。要保持大脑的活力,要不停的想。有很多事情,技术的、非技术的问题,都是可以想明白的。只有不停的想,才能想明白,想透彻。我经常就在想MATLAB的对象属性,所以很熟悉对象属性。
勤奋。我这个人也比较懒惰的,但是我对自己喜欢的事情还是有一种韧性。我对勤奋的理解是,每天多学一些,多积累一些。在别人谈小资的时候,想想一些现实的技术。看看国外倾泻而下的标准、技术、商品,如何突围?只有靠我们每个人的勤奋。每当想起我们那些在国外做了七八年的竞争对手,要在中国打败他们,就只有靠时间、压力和汗水的积累。喜欢上海的一个理由,就是这里的快节奏,可以不会让我那么懒惰。有一些事情我想是可以值得骄傲一下的:有半年时间,平均每天学习MATLAB到半夜两点以后;有两个除夕夜,都是在编写程序。
坚持。做潜力开发的培训,往往要培养一个人永不放弃的斗志和信念。搞MATLAB也是这样,涉及的领域太多,每个领域里面都缺乏足够的专家分布在你周围。那么我们很难有机会接触到真正的高手,对我们的技术细节一一指点。在遇到实际问题时,就只能靠自己去摸索。常常是再坚持一两个小时,就能够解决你的问题。最大的成就感,就在付出了极大的心血和耐心,才取得一个艰难的小胜利。(真的做完一件事情,也许那感觉就是一个字:累)印象很深刻的一件事情,有一次SCIE与我聊起一个混合编程的问题,喋喋不休的讲完了第七种方案(因为好几个我没有听懂),依然不能解决问题,又想到了第八种方案。如果没有坚持,一般人也就能够想到第三步、第四步,如何能够达到圣人的境界?
付出。这也许是一个过时的话题,但是我坚信,付出依然能够给我们带来可观的回报。付出,不是今天老板给了你薪水,你可以继续为他工作一个月。我所理解的付出,是每天为公司、国家多工作两个小时。有一些规则是显性的,有一些规则不是那么容易发现的,是潜规则。我不是倡导无私,我只是希望通过自身的努力,提高公司的竞争力,提高民族的竞争力。在这个过程中,也相应的提高了作为个体的技术工程师的竞争力。现代的竞争是激烈而残酷的,只有熟悉地缘政治的人,才能有深刻的理解。没有朋友感兴趣,就培养这个群体。土壤厚重了,我们这些生物才能生长得更茂盛一些!
也许这就是一种正常的生存状态吧,不知道是否有更好的办法?如果你要做很多事情,就必须协调好。而我不太擅长此事,所以在很多事情之间穿梭。常常是同时做两件事情,计划着第三件事,夜里想着第四件事。时间长了,反倒习惯了一种忙乱的状态,可以做很多事情,做好一件马上就是下一件。只有等到这些都告一段落,就可以好好的放松一下了。
多动手写程序、调试。如果懒得写程序,调试程序,永远无法提高。我个人认为调试程序更重要。有些人可能在一个程序调试几下出不了结果时,就可能喜欢去问别人,我不太赞同这一做法。其实,凡事往往经过痛苦折磨后,才会让你印象深刻,收益更大。我建议在你觉得用尽你努力后,仍然无法有结果时,才去请教别人。我当初一个程序调试过一两个星期都有过。在这论坛上,你可以发现不少好的问题,对这些问题,不要光看别人如果解决,也不要光想怎么解决,自己坐下来,动手自己解决一下,那你就会把不是你的知识变成自己的知识。善于利用MATLAB的帮助。可以这么说,任何问题都可以在MATLAB的帮助里找到解决的办法。问题不论大小,都是由更小的问题组成,把大问题化为小问题,小函数,然后再到MATLAB帮助里去找这种小问题,小函数的用法。说实话,MATLAB里的函数太多,我也经常忘记一些用法,这时HELP就帮忙了。
善于向别人学习。在你解决一个问题后,你可能会发现别人有更简便的方法解决,更强的函数,就是你向别人学习的时候。
遗憾如果我能够与Mathworks的人直接沟通,也许能够了解更多的技术细节。我们对MATLAB的很多困惑,也许就是他们曾经面对的问题。比如Compiler的发展方向,我想当初这些技术工程师也做了很多争论。如果他们能够得到一些其他的反馈信息,也许在编译器方面做得更好。
时间总是一种稀缺资源,与同行的交流还不够充分。比如对某些领域的了解,依然很片面。看到很多朋友,对一些相关行业和领域,都能侃侃而谈,实在是一种羡慕。数学基础实在不好,很多算法问题总是想不明白。数学天才们的思维训练,看来是没有机会接受了。
随着对技术的理解加深,有一些看法在逐步转变。以前以为一个好东西,总能够保持其优势。然而现实生活中,技术发展太块了,仅有这些还不够。不选择更新,只有被淘汰,无论是技术,还是做技术的人。
MATLAB真是一个好工具,也只能是一个好工具。它可以作为一个平台,承载知识和算法,那么核心的竞争力将是它实现的技术和产品。现在的公司,主营业务是通信软件。以后的职业规划,将更多的与通信沾边了。又是一个陌生的领域,又是一个必须要全力以赴的专业。
总的来说,学习任何一门语言,态度决定一切。
第五篇:MATLAB第一章作业答案
第一章
MATLAB概况与基本操作
1.选择题(每题2分,共20分):
(1)最初的MATLAB核心程序是采用D语言编写的。A.PASCAL B.C C.BASIC D.FORTRAN(2)即将于2011年9月发布的MATLAB新版本的编号为C。
A.MATLAB 2011Ra B.MATLAB 2011Rb C.MATLAB R2011b D.MATLAB R2011a(3)在默认设置中,MATLAB中的注释语句显示的颜色是B。A.黑色 B.绿色 C.红色 D.蓝色
(4)如果要以科学计数法显示15位有效数字,使用的命令是A。
A.format long e B.format long C.format long g D.format long d(5)在命令窗口新建变量a、b,如果只查看变量a的详细信息,使用的命令为A。A.whos a B.who a C.who D.whos(6)如果要清除工作空间的所有变量,使用的命令为C。A.clear B.clear all C.两者都可 D.两者都不可
(7)在创建变量时,如果不想立即在命令窗口中输出结果,可以在命令后加上B。A.冒号 B.分号 C.空格 D.逗号
(8)如果要重新执行以前输入的命令,可以使用D键。
A.下箭头↓ B.右箭头→ C.左箭头← D.上箭头↑
(9)如果要查询函数det的功能和用法,并显示在命令窗口,应使用命令C。A.doc B.lookfor C.help D.三者均可
(10)如果要启动Notebook文档,下列D操作是可行的。A.在命令窗口输入notebook命令
B.在命令窗口输入notebook filename命令 C.在Word中启动M-book文档 D.三者均可
2.填空题(每空1分,共20分):
(1)MATLAB是matrix和laboratory两个单词前三个字母的组合,意为“矩阵实验室”,它的创始人是Cleve Moler和Jack Little。
(2)在MATLAB的默认设置中,关键字显示的字体为蓝色,命令、表达式、计算结果显示的字体为黑色,字符串显示的字体为褐红色,注释显示的字体为绿色,错误信息显示的字体为红色。
(3)在命令窗口中,输出结果显示为各行之间添加空行的命令为format loose,各行之间不添加空行的命令为format compact。
(4)在MATLAB中,各种标点符号的作用是不同的。例如,空格的作用是分隔数组每行各个元素,逗号的作用是分隔数组每行各个元素或函数的各个输入参数,分号的作用是作为不显示命令结果的命令行的结尾或分隔数组各列,冒号的作用是生成一维数组或表示数组全部元素,百分号的作用是引导一行注释,„的作用是连接相邻两行,感叹号的作用是调用操作系统命令。3.程序设计题(每题10分,共40分)
(1)以25m/s的初速度向正上方投球(g=9.8m/s2),计算到达最高点的时间tp以及球从出发点到最高点的距离hp。
解:根据物理学知识,物体上抛运动的速度与经过的时间之间的关系为vpv0gtp,因此所需要的时间为tpv0vpg。而到达最高点时的速度vp0,因此可根据此公式求出tp:
v0=25;g=9.8;vp=0;tp=(v0-vp)/g
tp = 2.5510 而到达最高点所走过的距离为hpv0tp12gtp,因此有 2hp=v0*tp-1/2*g*tp^2
hp = 31.8878
(2)假设建造一个半球形的圆屋顶,其外半径为50英尺,固体混凝土墙的厚度为9英寸,计算出需要的水泥体积大小v。
解:首先将英寸转换为英尺: ft=1;in=0.0833*ft;
屋顶的体积为两个半球体积之差: R=50;t=9*in;r=R-t;V=2*pi*(R^3-r^3)
V = 3.4802e+004
(3)一架喷气式飞机以600英里的时速在距离水平面100英尺的高度飞行,如果地面陡然以4°的坡度升高,计算出多少时间(tx)之前为了避免飞机撞向地面飞行员就必须提升机头? 解:首先应该注意将英里转换为英尺: ft=1;li=5280*ft
li = 5280
其次,要使飞机不撞向地面,那么飞机应该在地面的高度小于100英尺之前就提升机头,而飞机在达到该点时走过的距离应该为 L=100*tand(4)
L = 6.9927
飞机的速度(以英尺/秒表示)v=li/3600
v = 1.4667
因此飞机需要的时间为 tx=L/v
tx = 4.7677
(4)一周的辛苦工作之后,Kirk开车到Helen,Georgia做一次漂流旅行(去消暑),他从家出发行驶200英里前往Timbuktu,然后向右转,向东行驶400英里到达Helen。编写一脚本计算Kirk家到Helen的直线距离d的大小。
解:建立直角坐标系,以Kirk家为坐标原点,向北为+y方向,向东为+x方向,则Helen的坐标为 x=400;y=200;
因此Kirk家到Helen的直线距离为 d=sqrt(x^2+y^2)
d = 447.2136
4.实践操作题(每题10分,共20分)(1)先建立自己的工作目录,再将自己的工作目录设置到MATLAB搜索路径下。请写出操作步骤或用Matlab命令实现。用help命令能查询到自己的工作目录吗? 解:步骤如下:
1.先在硬盘上建立一个工作文件夹,如:c:mywork。
2.在matlab的文件菜单中选择Set Path„菜单项,则打开一个对话框如图1所示。
图1 Set Path对话框
3.点击Add Folder„按钮,弹出一个新的对话框如图2所示。
图2 Add Folder to Path对话框
4.在该对话框中找到c:mywork文件夹(图3),点击确定按钮,对话框关闭,回到图1中的对话框,此时在该对话框中的MATLAB search path列表中出现了c:mywork文件夹(图4)。
图3 添加c:mywork文件夹
图4 保存设置路径
5.点击Save按钮,保存所设置的搜索路径,然后点击Close按钮关闭对话框。注意,一定要先Save再Close,不然搜索路径就没有设置成功。
(2)利用MATLAB的帮助功能查询inv函数的功能及用法,并将显示的英文信息翻译为中文。help inv
INV Matrix inverse.INV(X)is the inverse of the square matrix X.A warning message is printed if X is badly scaled or nearly singular.See also SLASH, PINV, COND, CONDEST, LSQNONNEG, LSCOV.Overloaded functions or methods(ones with the same name in other directories)help gf/inv.m help lti/inv.m help idmodel/inv.m help uss/inv.m help umat/inv.m help ufrd/inv.m help ndlft/inv.m help atom/inv.m help sym/inv.m
Reference page in Help browser doc inv 翻译为英文: INV:矩阵求逆
INV(X)是方阵X的逆矩阵。
如果X是坏条件数的或者接近奇异的,则会在命令窗口打印一条警告信息。
也可参阅类似函数SLASH、PINV、COND、CONDEST、LSQNOONEG、LSCOV。重载函数或方法(其他文件夹中相同名称的函数): gf/inv.m lti/inv.m idmodel/inv.m uss/inv.m umat/inv.m ufrd/inv.m ndlft/inv.m atom/inv.m sym/inv.m 帮助浏览器中的参考文献页 doc inv