matlab作业题

第一篇:matlab作业题

       第一章 MATLAB环境

       1、MATLAB通用操作界面窗口包括哪些?命令窗口、历史命令窗口、当前目录窗口、工作空间窗口各有哪些功能?

       答:MATLAB通用操作界面窗口包括:命令窗口、历史命令窗口、当前目录浏览器窗口、工作空间窗口、变量编辑器窗口、M文件编辑/调试器窗口、程序性能剖析窗口、MATLAB帮助。

       命令窗口是MATLAB命令操作的最主要窗口,可以把命令窗口当做高级的“草稿纸”。在命令窗口中可以输入各种MATLAB的命令、函数和表达式,并显示除图形外的所有运算结果。

       历史命令窗口用来记录并显示已经运行过的命令、函数和表达式,并允许用户对它们进行选择、复制和重运行,用户可以方便地输入和修改命令,选择多行命令以产生M文件。

       当前目录窗口用来设置当前目录,可以随时显示当前目录下的M、MKL等文件的信息,扬文件类型、文件名、最后个修改时间和文件的说明信息等,并可以复制、编辑和运行M文件及装载MAT数据文件。

       工作空间窗口用来显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数。

       2、熟悉课本中表格1.4、1.5、1.6、1.7、1.8的内容。

       3、如何生成数据文件?如何把数据文件中的相关内容输入到工作空间中,用实例进行操作。

       4、在工作空间中可以通过哪些命令管理变量,写出每种语法的具体操作过程。答:(1)把工作空间中的数据存放到MAT数据文件。

       语法:save filename 变量1 变量2 „„参数。

       (2)从数据文件中取出变量存放到工作空间。

       语法: load filename 变量1 变量2 „„。

       (3)查阅MATLAB内存变量名。

       语法:who(4)、查阅MATLAB内存变量变量名、大小、类型和字节数。

       语法:whos(5)、删除工作空间中的变量。

       语法:clear(6)查询工作空间中是否存在某个变量。

       语法:i=exist(‘X’)

       5、MATLAB用户文件格式有几哪种?扩展名各是什么?

       答:MATLAB的用户文件格式通常有以下几种:(1)程序文件,扩展名为.m。(2)数据文件,扩展名为.mat。(3)可执行文件,扩展名为.mex。(4)图形文件,扩展名为.fig。(5)模型文件,扩展名为.mdl。

       6、熟悉文件管理命令的语法,特别是命令type 作用。

       7、详细操作课本26页例题1.3。

       第二章 MATLAB数值计算

       1、变量名的命名规则是什么?写出几个合理的变量。

       答:MATLAB的变量命名规则:

       (1)变量名区分字母的大、小写。例 如,“a”和“A”是不同的变量。(2)变量名不能超过63个字符,第63个字符后的字符被忽略。

       (3)变量名必须以字母开头,变量名的组成可以是任意字母,数字或者下画线,但不能含有空格和标点符号。

       (4)关键字不能作为变量名。

       2、产生矩阵有哪几种方法?分别举例说明。

       答:(1)通过显示元素列表输入矩阵。

       例如:d=[2;3,4;5,6]

       (2)通过语句生成矩阵。

       例如:y=1:1:7

       (3)由函数产生特殊矩阵。

       例如:a=eye(4)

       3、在excel表格中输入2行10列的数据,通过数据加载,输入到工作空间中,用矩阵元素的操作分别提取第1行和第2行的数据。

       4、矩阵和数组的算术运算包括哪些运算?各有哪些不同点?

       答:(1)矩阵和数组的加,减运算。

       矩阵的加,减法运算规则与数组的完全相同,运算符也完全相同。(2)矩阵和数组的乘法运算。

       矩阵的乘法运算表达式为“A*B”,表示矩阵的相乘。矩阵A的列数必须等于矩阵B的行数,除非其中有1个标量。

       数组的乘法运算表达式为“A*B”,运算符为“*”,表示数组A和B中的对应元素相乘。

       5、多项式如何表示?多项式求值、求根和多项式拟合的语法各是什么?

       答:在MATLAB中多项式可以用长度为n 1的行向量表示为:P=[an,an-1„„a1,a0],即把多项式的各项系数烽按降幂次序排放成为行向量,如果多项式中缺某幂次项,则用0代替该幂次项的系数。

       多项式求值语法:y=polyval(p,x)多项式求根语法:r=roots(p)多项式拟合语法:p=polyfit(x,y,n)

       6、多项式一维插值有哪些类型?

       答:多项式一维插值是指对一个自变量的插值,interep1函数是用来进行一维插值的,其语法为:yi=interp1(x,y,xi,“method”)。

       Method是插值函数的类型,“linear”为线性插值(默认)。“nearest”为用最接近的相邻点插值。“spline”为三次样条插值。“cubic”为三次插值。

       7、在M文件中完整地写出语句,使其产生课本中图2.5 一阶、二阶和三阶拟合曲线,并在适当位置添加图例。

       解:随机产生一个一元三次多项式y=5x^3 2x^2 x 1;

       拟合结果如图: x1=1:10;p=[2 3 4 5];

       y0=polyval(p,x1);p1=polyfit(x1,y0,1);p2=polyfit(x1,y0,2);p3=polyfit(x1,y0,3);y1=polyval(p1,x1);y2=polyval(p2,x1);y3=polyval(p3,x1);plot(x1,y0,'r',x1,y1,'g',x1,y2,'-.',x1,y3,'*')legend('y1,一阶拟合','y2,二阶拟合','y3,三阶拟合',4)

       8、元胞数组和结构数组有哪些创建方法?

       答:元胞数组的创建方法:(1)直接使用{}创建。(2)由各元胞创建。(3)由各元朡内容创建。结构数组的创建方法:(1)直接创建。

       (2)利用struct函数创建。

       9、元胞数组和结构数组的内容如何获取?

       答:元胞数组的内容获取:(1)取元胞数组的元素内容。(2)取元胞数组的元素。结构数组的获取:

       (1)使用点号(.)获取。

       (2)使用getfield获取结构数组的数据。(3)使用setfield设置结构数组的数据。

       10、矢量积、数量积和混合积的语法各是什么?

       答:矢量积的语法:cross(a,b)数量积的语法:dot(a,b)混合积的语法:dot(a,cross(b,c))

       第四章 MATLAB图形处理

       1、用plot(x,y)命令绘制混合式曲线时有几种情况?分别举例说明。

       答:(1)如果x是向量,而y是矩阵,则x的长度必须等于矩阵y的行数或列数必须相等。如果x的长度与y的行数相等,则向量x与矩阵y的每列向量对应画一条曲线;如果x的长度与y的列数相等,则向量x与矩阵y的每行向量对应画一条曲线;如果y是方阵,则x和y的行数列数都相等,将向量x与矩阵y的每列向量画1条曲线。

       (2)如果x是矩阵,y是向量,则y的长度必须等于x的行数或列数,绘制方法与前一种相似。

       (3)如果x和y都是矩阵,则大小必须相同,将矩阵x的每列和y的每列画一条曲线。

       2、熟悉本章表4.1、4.2、4.3、4.4、4.5、4.6中的内容。

       3、能熟练操作课本124页中例题4.10。

       x=0:0.1:2*pi;>> plot(x,sin(x))>> hold on >> plot(x,cos(x),'ro')>> title('y1=sin(x),y2=cos(x)')>> xlabel('x')>> legend('sin(x)','cos(x)',4)>> text(pi,sin(pi),'x=pi')

       第五章 MATLAB程序设计

       1、指出脚本文件和函数文件的不同点?

       :脚本文件

       (1)多条命令的综合体

       (2)没有输入、输出变量

       (3使用MATLAB基本工作空间

       (4.没有函数声明行

       函数文件

       (1).常用于扩充MATLAB函数库(2).可以包含输入、输出变量

       (3).运算中生成的所有变量都存放在函数工作空间(4).包含函数声明行

       脚本文件可以理解为简单的M文件,脚本文件中的变量都是全局变量。

       函数文件是在脚本文件的基础之上多添加了一行函数定义行,其代码组织结构

       和调用方式与对应的脚本文件截然不同。函数文件是以函数声明行“function...”作为开始的,其实质就是用户往MATLAB函数库里边添加了子函数,函数文件中的变量都是局部变量,除非使用了特别声明。函数运行完毕之后,其定义的变量将从工作区间中清除。而脚本文件只是将一系列相关的代码结合封装,没有输入参数和输出参数,即不自带参数,也不一定要返回结果。而多数函数文件一般都有输入和输出变量,并见有返回结果。

       2、分别用for 循环、while循环和函数调用编写。

       1sum=∑()!

       i=12i 1

       i=10

       n=10;sum=0;f=1;>> for i=1:10 f=f/(2*i*(2*i 1));sum=sum f;end >> sum sum = 0.1752 >>

       sum=0;f=1;i=1;>> while i<=10 f=f/(2*i*(2*i 1));sum=sum f;i=i 1;end >> sum sum = 0.1752

       8

第二篇:matlab

       MATLAB

       MATLAB是矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.在新的版本中也加入了对C,FORTRAN,c ,JAVA的支持.可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用,非常的方便。

       MATLAB的基础是矩阵计算,但是由于他的开放性,并且mathwork也吸收了像等软件的优点,使MATLAB成为一个强大的数学软件

       当前流行的MATLAB 6.5/7.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充

       MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.Matlab的官方网站:http://

       Matlab的优势和特点

       (1)友好的工作平台和编程环境

       MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

       (2)简单易用的程序语言

       Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

       (3)强大的科学计算机数据处理能力

       MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如距阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

       (4)出色的图形处理功能

       MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和距阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使他不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

       (5)应用广泛的模块集合工具箱

       MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,他们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

       (6)实用的程序接口和发布平台

       新版本的MATLAB可以利用MATLAB编译器和C/C 数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C 代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。

       MATLAB的一个重要特色就是他有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

       (7)应用软件开发(包括用户界面)

       在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接解释等;在输入输出方面,可以直接向Excel和HDF5。

       (8)Matlab常用工具箱介绍(英汉对照)

       Matlab Main Toolbox——matlab主工具箱

       Control System Toolbox——控制系统工具箱

       Communication Toolbox——通讯工具箱

       Financial Toolbox——财政金融工具箱

       System Identification Toolbox——系统辨识工具箱

       Fuzzy Logic Toolbox——模糊逻辑工具箱

       Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱

       Image Processing Toolbox——图象处理工具箱

       LMI Control Toolbox——线性矩阵不等式工具箱

       Model predictive Control Toolbox——模型预测控制工具箱

       μ-Analysis and Synthesis Toolbox——μ分析工具箱

       Neural Network Toolbox——神经网络工具箱

       Optimization Toolbox——优化工具箱

       Partial Differential Toolbox——偏微分方程工具箱

       Robust Control Toolbox——鲁棒控制工具箱

       Signal Processing Toolbox——信号处理工具箱

       Spline Toolbox——样条工具箱

       Statistics Toolbox——统计工具箱

       Symbolic Math Toolbox——符号数学工具箱

       Simulink Toolbox——动态仿真工具箱

       Wavele Toolbox——小波工具箱

       例如:控制系统工具箱包含如下功能:

       连续系统设计和离散系统设计

       状态空间和传递函数以及模型转换

       时域响应(脉冲响应、阶跃响应、斜坡响应)

       频域响应(Bode图、Nyquist图)

       根轨迹、极点配置

       1.补充新的内容:

       MATLAB R2022b正式发布了!MATLAB 2022b于2022年秋节正式发布,TMW正式发布了MATLAB R2022b,新版本涵盖:Simulink

       7、新产品Simulink Design Verifier、Link for Analog Devices VisualDSP以及82个产品模块的更新升级及Bug修订。从现在开始,MathWorks公司将每年进行两次产品发布,时间分别在每年的3月和9 月,而且,每一次发布都会包含所有的产品模块,如产品的new feature、bug fixes和新产品模块的推出。

       在R2022b中(MATLAB 7.4,Simulink 6.6),主要更新了多个产品模块、增加了多达350个新特性、增加了对64位Windows的支持,并新推出了.net工具箱。R2022b, released on March 1, 2022, includes updates to MATLAB and Simulink, two new products released since R2022b, and updates and bug fixes to 82 other products.R2022b adds support for the Intel®based Mac, Windows Vista™, and 64-bit Sun Solaris™ SPARC platforms.这次的升级做了重大的增强,也升级了以下各版本,提供了MATLAB、SIMULINK的升级以及其他最新的模块的升级。这个Matlab 2022版本不仅仅提高了产品质量,同时也提供了新的用于数据分析、大规模建模、固定点开发、编码等新特征。其中MATLAB Builder for.net扩展了MATLAB Compiler的功能,主要有:可以打包MATLAB函数,使网络程序员可以通过C#,VB.net等语言访问这些函数;

       创建组件来保持MATLAB的灵活性;

       创建COM组件;

       将源自MATLAB函数的错误作为一个标准的管理异常来处理。

       R2022b 提供了重大的新功能: 直接在命令行使用 Real-Time Workshop 的 嵌入式 MATLAB 函数的 C 代码生成。另外,Simulink 中的嵌入式 MATLAB 函数块支持多 M 文件中的算法。

       MATLAB R2022b新版本中,产品模块进行了一些调整,MATLAB Builder for COM的功能集成到MATLAB Builder for.net中去了,Finacial Time Series Toolbox的功能集成到Financial Toolbox中了。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用 MATLAB 产品的开放式结构,可以非常容易地对 MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善 MATLAB 产品以提高产品自身的竞争能力。

       作为和Mathematica、Maple并列的三大数学软件。其强项就是其强大的矩阵计算以及仿真能力。要知道Matlab的由来就是Matrix Laboratory = Matlab,所以这个软件在国内也被称作《矩阵实验室》。每次MathWorks发布Matlab的同时也会发布仿真工具Simulink。在欧美很多大公司在将产品投入实际使用之前都会进行仿真试验,他们所主要使用的仿真软件就是Simulink。Matlab提供了自己的编译器:全面兼容C 以及 Fortran两大语言。所以Matlab是工程师,科研工手上最好的语言,最好的工具和环境。Matlab 已经成为广大科研人员的最值得信赖的助手和朋友!

       常用函数一览:(参考《微积分》及《线性代数》,高等教育出版社)eye()--->化为单位阵

       *--->内积、乘法

       sqrt()-->求向量的模,求平方根

       acos()--->arccos()反三角余弦

       inv()--->求矩阵的逆,求倒数

       [P,D]=eig(A)--->eig(A)求A的特征值与特征向量,D对角线元素为A的特征值,P每列

       为A的对应于D的特征向量

       syms x---->定义变量x

       limit(u^2,u,inf)---->求u趋于无穷时u^2的极限

       exp(x)---->e^x

       NaN--->不存在limit(1/x,x,0,'left')---->求x趋向于0的左极限

       diff()----->求导数

       pretty(ans)---->将结果整理成书写形式

       diff(exp(a*x),x,3)---->求e^(ax)的三阶导数

       ezplot()---->绘图,括号内为函数

       int(1/(1 x),x,0,1)--->求函数从0到1的积分

       double()--->求具体数值

       dsolve()---->解常微分方程

       Dy---->y'一阶导数

       D2y---->y''二阶导数

       {syms x y

       maple('readlib(mtaylor)');

       maple('mtaylor(sqrt(1-x^2-y^2),[x=0,y=0],6)')}---->马克劳林展开式至四次项,泰勒展开式,可缺省[x=0,y=0]

       S=symsum(u,t,a,b)--->表示t从a到b对u求和(级数),当只有t一个变量时t可以省略

       clear all---->清空缓存

       {syms n k Sn;

       n=9000;

       Sn=0;

       for k=1:n

       Sn=Sn log(1 1/k^2);

       end

       fprintf('%f,(n=%d)',Sn,n)}---->求级数 见课本微积分(2)94页

       r=taylor(f,n,x,a)---->表示将函数f展开成(x-a)的n-1阶泰勒级数,x为展开式的符号变量

第三篇:matlab习题

       1.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。a=rand(1,20);

       max1=max(a)%用max函数求最大值

       min1=min(a)%用max函数求最大值

       %以下用循环方法求解:

       max2=a(1);min2=a(1);for i=2:20 if a(i)>max2 max2=a(i);end

       if a(i)

       end

       max2 min2

       调用MATLAB的max函数、min函数来实现: >> a=rand(1,20)zuidazhi=max(a)zuixiaozhi=min(a)

       a =

       Columns 1 through 8

       0.7513

       0.2551

       0.5060

       0.6991

       Columns 9 through 16

       0.1493

       0.2575

       0.8407

       0.2543

       Columns 17 through 20

       0.1966

       0.2511

       0.6160

       0.4733

       zuidazhi =

       0.9593

       zuixiaozhi =

       0.8909

       0.9593 0.8143

       0.2435 0.5472

       0.1386 0.9293

       0.3500

       0.1386

       2.求Fibonacci数列

       (1)大于4000的最小项。

       (2)5000之内的项数。(1)function t=fibonacc1 f=[1,1];n=2;while 1

       f=[f,f(n-1) f(n)];n=length(f);if f(n)>4000 break;end

       end

       t=f(n);return

       (2)function n=fibonacc2 f=[1,1];n=2;while 1

       f=[f,f(n-1) f(n)];n=length(f);if f(n)>4000 break;end

       end

       n=n-1;return

       3.写出下列程序的输出结果: s=0;

       a=[12,13,14;15,16,17;18,19,20;21,22,23];

       for k=a

       for j=1:4

       if rem(k(j),2)~=0

       s=s k(j);

       end

       end

       end

       21A0

       S Ans=108

       1、解方程组Ax=b,分别用求逆解法与直接解法求其解。

       121000121000,10b0 0  012100 00120A=[2-1 0 0 0;-1 2-1 0 0;0-1 2-1 0;0 0-1 2-1;0 0 0-1 2];b=[1;0;0;0;0];x=inv(A)*b

       2、编一个m程序,求N阶方阵A的行列式的值 function s=mydet(A)n=size(A);

       if(n(1)~=n(2))

       return;end

       n=n(1);if(n==1)s=A;

       return;end s=0;

       for i=1:n

       s=s-(-1)^i*A(1,i)*mydet(A(2:n,[1:i-1 i 1:n]));end

       3.今有多项式P1(x)=x4-2x 1,P2(x)=x2 4x-0.5,要求先求得P(x)=P1(x) P2(x),然后计算xi=0.2*i各点上的P(xi)(i=0,1,2,…,5)值。p1=[1.0 0.0 0.0-2.0 1.0];p2=[0.0 0.0 1.0 4.0-0.5];p1x=poly2sym(p1);p2x=poly2sym(p2);p=p1x p2x

       4.试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x为:

       x=[ 1

       ] 而经过颠倒处理后x中数据的次序应该为: x=[ 9

       ] x=[ 1 3 5 7 9 ]

       xx=rot90(rot90(x))

       1.在[0 2π]范围内绘制二维曲线图y=sin(x)*cos(5x)。x = 0:pi/10:2*pi;y = sin(x).*cos(5*x)plot(x,y)

       2.在[0 2π]范围内绘制以Y轴为对数的二维曲线图。

       y=|1000sin(4x)| 1 x=linspace(0,2*pi,100);y=abs(1000*sin(4*x)) 1;semilogy(x,y)

       3.把自己姓名中的各个拼音字母(小写)所对应的ASCII值转换为二进制序列,并用二进制脉冲绘图表示出来

       mingzi='shaopengpeng';% b=dec2bin(int8(s))b=double(mingzi)c=dec2bin(b)c=c'

       stem(str2num(c(:)))Matlab介绍

       MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

       MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB应用非常之广泛!

       MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

       MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

       优势特点:

       1)高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来; 2)具有完备的图形处理功能,实现计算结果和编程的可视化;

       3)友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握; 4)功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),为用户提供了大量方便实用的处理工具。

       习题

       第三讲

       1.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。

       用循环结构的程序:

       >> a=[1 3 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33-43-50 45] c=a(1);d=a(1);for n=1:20;if a(n)>c b=a(n);c=a(n);else b=c;end;end;for n=1:20;if a(n)

       5-1 20 23-8 39-3 7-4-11 34-31 12 13 33

       Columns 18 through 20

       -43-50 45 结果 b =

        c =

       调用MATLAB的max函数、min函数来实现:的程序

       >> a=[1 3 5-1 20 23-8 39-3 7-4-11 34-31 12 13 33-43-50 45] b=max(a);d=min(a);b d 运行结果: a =

       Columns 1 through 17

       5-1 20 23-8 39-3 7-4-11 34-31 12 13 33

       Columns 18 through 20

       -43-50 45 结果 b =

        d =

       2.求Fibonacci数列

       (1)大于4000的最小项。

       (2)5000之内的项数。

       3、写出下列程序的输出结果: s=0;

       a=[12,13,14;15,16,17;18,19,20;21,22,23];

       for k=a

       for j=1:4

       if rem(k(j),2)~=0

       s=s k(j);

       end

       end

       end

       s 运行结果:

       s= 108

       第四章习题

       1、解方程组Ax=b,分别用求逆解法与直接解法求其解。

        21000 121001A 

        01210b0 00121, 0 0001200

       2、编一个m程序,求N阶方阵A的行列式的值。

       3、今有多项式P1(x)=x4-2x 1,P2(x)=x2 4x-0.5,要求先求得P(x)=P1(x) P2(x),然后计算xi=0.2*i各点上的P(xi)(i=0,1,2,…,5)值。

       4.试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x为: x=[ 1

       ] 而经过颠倒处理后x中数据的次序应该为: x=[ 9

       ]

       第五章习题

       1.在[0 2π]范围内绘制二维曲线图y=sin(x)*cos(5x)。

       x=0:pi/100:2*pi;y=sin(x).*cos(5*x);plot(x,y)10.80.60.40.20-0.2-0.4-0.6-0.8-101234567

       2.在[0 2π]范围内绘制以Y轴为对数的二维曲线图。

       y=|1000sin(4x)| 1 x=(0:0.01:2*pi);

       y=abs(1000*sin(4*x)) 1;semilogy(x,y);

       ***00200001234567

       3、把自己姓名中的各个拼音字母(小写)所对应的ASCII值转换为二进制序列,并用二进制脉冲绘图表示出来

       a='shaopengpeng';b=dec2bin(a);stem(str2num(b(:)))

        心得体会

       Matlab是一个强大的数学工具,它的应用广泛,涉及到各个领域.它使用起来十分方便,不用麻烦去定义变量.它的绘图能力很强,甚至可以模拟出三维视图.矩阵是它应用的核心,许多工程繁琐的运算都需要靠矩阵来化简,这正是它的生命力所在.但是,他的函数很多,开始学时记的比较痛苦,我已经深深感觉到了.不过看多了也就熟了,感觉和学五笔差不多.它的语法简单,像我学过C语言的学起来还是蛮容易的.它的数组定义十分符合自然,是从1开始的,数组元素的调用也很接近数学的表达.此外,函数的名字也很符合英文规则,反正我用得很开心就是了.9

       通过学习matlab,我又一次锻炼了自己的思维.它学起来得心应手也让我明白了学习一门语言(c语言)对学习其他语言的帮助指导作用.同时,它也加强了我理论联系实际的能力.这是一个专业课的基础工具,学好它是必要的

第四篇:matlab学习心得

       编程心得

       1.helpwin只是寻找函数类,一般不如用doc(相当于帮助文档中的搜索),但在用doc搜索不到帮助文件时可用helpwin,如找有关的帮助等;打开格式非标准的mat或xls等数据文件如dat文件或无后缀名的文件时,不要用打开方式打开,而应先打开应用程序如MATLAB或excel,然后在应用程序中打开数据文件,这样能得到正确的行数和列数;lookfor可对M文件的第一行进行关键字搜索,比help条件宽松;MATLAB大小写有区分。用which搜索路径;要打开matlab自带的m文件直接用open即可,不需要找到路径,会在当前目录和set path的路径中搜索。矩阵的运算注意:标量与矩阵进行四则运算时该标量与矩阵的每个元素进行运算;两矩阵相乘左矩阵列数须等于右矩阵行数;矩阵除法有左除(反斜杠)和右除/(斜杠),AB=inv(A)*B,A/B=A*inv(B);方阵的乘方运算有四种:A^n,A^p,s^A,s.^A,其中A为方阵,n为整数,p为非整数,s为标量;A’表示矩阵A的转置,一般选中了Hermitian(共轭)复选框则元素带共轭;funm(A,’fun’)表示矩阵的函数运算,要求A是方阵,fun为矩阵运算函数名;给矩阵赋值时维数必须匹配,用方括号,一个分号为一行。

       3.数组的运算注意:数组乘法运算符为.*,表示两数组中对应元素相乘;数组的除法运算符为.和./,表示对应元素相除;数组与数组运算时,参与运算的数组必须同维,结果为数组中每个元素进行运算所得;直接用结构名赋值即省略了(1);varargout返回输出变量list即一系列变量名称;feval(@fun,var1,„)用var1,„试算[evaluate]fun的值;读二进制文件常用fopen()和fread()组合,matlab读fortran写出的二进制文件时往往要在fopen()中加'b';读文本文件常用textread()和fopen();fscanf()组合,要注意格式,最好读完后对照打开看看。

       4.标准差std(x,flag,dim)默认flag=0,dim=1计算公式为 的平方根,flag=1时分母为n;可通过h=figure(i),后用get(h)获得图形对象所有属性的当前值,其格式为:属性名=属性值;结构数组可在域名后加(a,b)再加.变量名,调用时输变量名可使用tab完成;利用struct函数一次输入多个结构元素时注意用单元数组,用{}而非[]。

       5. 左除和右除的两边不一定是方阵,当A为m*n矩阵,B为列向量时,AB表示A*X=B在最小平方意义上的解,需对A进行QR分解,mn时解通过(A'*A)(A'*b)求得,而A/B =(B'A')';积分可以查一下积分命令quad 或者 trapz。6.注解块操作符%{和%}必须单独成行否则不起应有作用;struct([])表示结构数组,name1.name2表示name1为结构数组;函数名切记不要与MATLAB内置函数重名否则会出现错误因为系统先从当前目录寻找匹配的函数;MATLAB可以把程序制作的动画生成avi格式的视频,须把avifile(),getframe(),addframe(),close()配合起来使用。7.启动notebook后word文档的菜单栏中没有出现Notebook菜单项,可以依次单击工具-》自定义-》命令-》宏,选择保存于mbook.dot上的宏TemplateProject.mwNewNotebook..MAIN(把他拖到菜单栏然后单击,没必要)就会出现Notebook菜单项;计算区(Calc Zone)不要弄,evaluate M-book一般也不要用;单元转换为文本可以常用。

       8. 低级文件I/O函数很重要,因为它可读写二进制文件,便于与FORTRAN结合;读写之前先用fopen(filename,mode),注意都要加单引号,返回值如ans=0表示操作成功,-1表示不成功;一定要注意r和w因为w会删除原文件所有内容;读用fread(fid,count,precision,skip)其中precision如'uint8=>char'读取文本文件,注意在fclose(fid)之前是连续读的,不指定precision默认按字节读取可能会出现很多元素为0;fwrite(fid,A,precision,skip)用二进制格式写入文件,skip参数对于将数据插入到已知长度的记录中非常有用;重设文件指针位置用fseek(fid,offset,origin)表示在fid指定的文件上按照origin给出的参照点,相对移动offset个字节,注意如果指针不在开头要重置到开头origin应选'cof'当前位置而不选'bof'文件开始,重置完后可用ftell(fid)知道指针当前位置相对于bof的字节数,还可用ferror(fid)查询错误信息;还可用frewind(fid)函数将文件位置指针返回到文件起始位置;从文本文件读字符串行用fgets(fid,nchar)表示读一行文本并带有行结束符,每次读nchar个字符直到遇上结束符。9.如果运行的M文件有错误,而且在命令窗口又要运行M文件中定义错误的内置函数时可能会出现错误,这时应改工作目录;有些内置函数可在命令窗口运行但在M文件中运行可能会出现错误,如sphere(n);脚本M文件与命令窗口公用变量工作区,而函数M文件有单独的变量工作区,切实注意了;关系操作表达式返回的是逻辑型值即0和1。

       10.数组维数扩展时下标不要用1,因这是默认下标用1后结果是重新赋值;不同数组类型转换如cell2struct等之前一定要先看数组尺寸size(array);变量名切记不要用函数名,否则调用函数时会出错还不知错在哪,因MATLAB优先使用变量名而非函数名,比如定义了变量max再调用max()函数时就会报错Subscript indices must either be real positive integers or logicals;中括号加引号用于多个文件名可以,用于多个变量名不行;简单统计量比如最大值,最小值,平均值加减后再统计和统计后再加减结果一样;函数不管用或者出错应检查是否不小心加了等号。

       11.设置坐标轴刻度和属性时用set(gca,'xtick',数值数组);set(gca,'xticklabel',字符串数组);切记是label不要写成lable;用box off可以去掉右边和上边的刻度和边框;把右边和上边分别作为y和x轴可以加画图形,但最好不用plot而用line;有关坐标轴设置的例子可见我的程序plotNino.m;要实现坐标轴隔点标注数值且所有点间隔线均保留需设置两次坐标轴,第一次显示所有间隔线第二次用ax2=axes()后隔点标注;放大工具只对ax2有效;标注时字符矢量用{}且非数字字符必须加引号;注意annotation()中[x y w h]的x,y是对整个figure而言;标记单个数据点用scatter()即可。

       12.MatLab小波分析工具箱中一些学习心得:进行多分辨率分析时,wavedec()得到的小波系数是由最后一层的低频系数和各层的高频系数首尾相连而成,不是相加;用wrcoef()可重构各单支系数的对应信号且saN sdN sdN-1 „ sd1近似等于原始信号s;用waverec()一次重构的结果和单支重构的和稍有差别但差别很小如e-15;用wavedec()时注意有些小波函数不能用如Morlet小波基等,具体可看wfilters();小波分解再重构后与原始信号相差最小的小波函数为db1即Haar小波基;

       13.只有函数式M文件才能定义函数,脚本文件和函数不能写入同一个m文件中,即脚本文件中不允许出现function()语句但可以调用同目录下函数文件中的函数;函数文件要想保留一些中间变量的值就要在函数外部调用因为函数调用结束时会销毁临时变量空间,需另写脚本文件,要不然就将需要导出的变量作为返回的参数或者用global申明全局变量;要使函数文件中的函数易被其他脚本文件调用,文件名最好为第一函数名;一张图中画多张子图时注意subplot(‘Position’,[ ])和axes(‘OuterPosition’,[ ])在[]中值一样时子图的位置大小不一样,axes的[]所给区域按比例缩小包含坐标轴标题等故值易确定但调用时要加(..,’Parent’,*),此外subplot()可有系统给定区域;

       MATLAB中内置的函数

       linspace(a,b,n)生成a~b之间线性分布的行向量,n默认值为100。

       logspace(a,b,n)生成10^a~10^b之间按对数等分的n个元素的行向量,n默认50。zeros(m,n)生成m*n的全0矩阵;

       ones(m,n)生成m*n的全1矩阵 rand(m,n)生成m*n均匀分布的单位间隔上随机矩阵,取值范围0.0~1.0 randn(m,n)生成m*n正态分布的随机矩阵,取值范围是整个实数区间

       eye(m,n)生成m*n的单位矩阵; magic(n)生成n阶魔方矩阵,n>=3 triu(X)生成X矩阵的上三角矩阵; tril(X)生成X矩阵的下三角矩阵

       flipud(X)使矩阵沿水平轴上下翻转; fliplr(X)使矩阵沿垂直轴左右翻转;

       Flipdim(X,dim)使矩阵沿特定轴翻转; rot90(X)使矩阵逆时针旋转90度 cat(n,A1,A2,„,Am)n=1时子矩阵上下排列,n=2时子矩阵左右排列,n=3时子矩阵数m为第三维; repmat(A,行,列,页,„„)模块矩阵A按后边格式重复排列

       ndims(P)返回数组P的维数; size(P)返回向量其元素为数组各维的大小; length(P)返回数组P行数或列数的最大值

       [L,U,P]=lu(X)矩阵X的三角分解,U为上三角,L为下三角,P为单位阵的行变换矩阵

       [U,S,V]=svd(X)矩阵的奇异值分解,S为对角阵,U,V为酉矩阵,X=U*S*V’ [V,D]=eig(A,B,flag)由flag制定算法计算矩阵A和B的特征值D和特征向量V,flag的可能值为chol或qz;

       [R,p]=chol(X)表示使用Cholesky分解算法,若X对称正定则存在非奇异上三角阵R使R’*R=X,若X非正定则p为正整数R为有序上三角阵;[Q,R]=qr(A)

       求正交矩阵Q和上三角阵R使A=QR;

       T=schur(A,flag)返回正交矩阵U和schur矩阵T使A=U*T*U’;

       rsf2csf(VR,DR)将实舒尔形式转化成复舒尔形式; gsvd(A,B)广义奇异值分解; qz(A,B)特征值问题的QZ分解; hess(A)海森伯格形式分解;

       sparse(A)返回A的稀疏矩阵形式; full(S)将稀疏矩阵转化为全元素矩阵; spy(S,’lineSpec’,markersize)用图形显示矩阵,点表示矩阵中非零元素位置。colmmd(S)返回稀疏矩阵列的最小度排序向量p,按p排列后的矩阵为S(:,p)。

       setfield(ps,{i,j,k},域名,赋值)修改结构数组ps中域的存储内容,返回维数为i*j*k。lower(string)把字符串中的大写变为小写。

       strncmp(‘str1’,’str2’,n)比较两字符串的前n个字符,str2可换为单元数组C,返回逻辑数组

       lookfor name 寻找第一行注解H1中含有name的M文件。

       findstr(str1,str2)先比较两个字符串,然后在长的中找与短的匹配的子字符串,每找到一次返回匹配起始点的位置为数组元素。

       fscanf(fid,format,size)从fid指定的文件读size个数据并根据format指定的格式转换,其中format如%c,%f,%d等,size为[m,n]时表示m*n矩阵按列存放,缺省读全部数据; fprintf(fid,format,A)按format指定格式转换矩阵A中数据并将它们写到fid指定文件,缺省fid时,数据输出在屏幕上。

       Repmat(A,m,n)A为子矩阵,复制m*n次; fix(A)返回数组中每个元素取整后的值; reshape(A,m,n)把数组A进行重新排列,按列方式操作;

       Prod(A)若A为向量则返回元素乘积,若A为矩阵则返回每列元素的乘积;

       Permute(A,[a b c d])A为4维阵列,返回阵列的第1,2,3,4维为A的第a,b,c,d维 strcat(s1, s2, s3,...)把字符串或者单元数组s1,s2,s3进行水平连接

       w=conv(u,v)返回向量u和v的卷积,若m = length(u),n = length(v)则,j = max(1,k 1-n): min(k,m),k=1:m n-1 [V,D] = eig(A)返回A的特征向量矩阵V和特征值矩阵D [S.field] = deal(X)域名为field的所有域元素赋值为X

       [Y1, Y2, Y3,...] = deal(X{:})复制单元数组的内容给变量Y1,Y2,Y3,„ Num2cell(a,[i j])a为数值阵列,返回单元阵列每个单元为a保持第i,j维尺寸不变的数组

       《MATLAB基础与编程入门》

       Page 2: MATLAB核心模块有两大分支分别以MATLAB为基础和以simulink为基础。MATLAB 2022b即MATLAB 7.3。MATLAB compiler能将M文件编译生成为函数库或可执行文件,使其能与其他语言如C/C 混合应用,MATLAB builder可将函数文件打包成com组件或.net组件、excel插件、java对象,将其应用程序算法集成到开发工具或应用软件中。MATLAB的工具箱可提供函数给用户直接使用,且其算法是开放和可扩展的。MATLAB提供了与各种设备进行数据I/O的交互工具和函数等。

       Page 4: 工具箱包括:数学与数据分析,如spline 仿样,mapping 绘图、映射,genetic algorithm and direct research 遗传算法和正变形研究等;数据采集与测量测试,如database 数据库,excel link链接Excel等;信号处理与图象处理,如system identification系统辨识,wavelet 小波分析,filter design 滤波设计等;控制系统设计与分析,如 fuzzy logic 模糊逻辑,robust control 强控制等;财经与金融,如 financial time series 金融时间序列,GARCH 广义条件异方差等;应用程序集成与发布,如 MATLAB report generator 报告生成器,MATLAB web server 网络服务器,MATLAB builder for.NET 编码器等。Page 5: simulink是框图设计环境,可对各种动态系统建模、分析和仿真,Stateflow可用来进行逻辑驱动过程的仿真。Simulink 可将用C、C 和fortran语言编写的算法集成到框图中,其实时代码生成工具可进行代码验证。

       Page 9: Real-Time Workship(RTW)可生成标准的C/C 代码并具备生成其他语言代码能力

       《MATLAB编程基础与典型应用》

       Page 8: MATLAB默认每行命令产生的变量结果都显示,加上英文状态下;才不显示。可用连续3个或以上的黑点„表示续行,但notebook中不能用。%表示其后一行的内容为解释。Page 10: 常用操作指令包括:clc, clear, clf, who, whos, delete , which , clear all, help , save , save , load , diary , type , what。Page 13: 历史命令窗口点右键有很多实用功能。当前目录浏览器(CurrentDirectory)窗口可更改当前目录,打开M文件,导入MAT文件数据。工作空间浏览器窗口点右键可对变量进行编辑、绘图、保存,也可用save,load,whos,exist等命令管理变量。Page 17: 可用help命令在命令窗口显示帮助内容,也可用helpwin命令打开帮助浏览器窗口并显示指定主题信息。还可用lookfor命令搜索包含字符的命令行,一旦发现就可用ctrl C推出搜索过程。Demos目录下的主题信息提供图文并茂的演示。Page 19: 变量名第一个字符必须是英文字母且区分大小写,不需要事先声明。一些关键字不能作为变量名使用如if,while,return,for等。系统预定义的变量和常数有ans,pi,eps,inf,nan,i,j,nargin,realmin,realmax,nargout,可被临时覆盖。Page 26: 提取矩阵元素时,序号按列排列。Page 37: 矩阵的乘方运算有四种。

       Page 43: MATLAB中的关系运算符有<,<=,>,>=,==,~=;逻辑运算符有&,|,~,xor,&&(先决与),||(先决或),先决表示左边的运算符合要求就不需执行右边运算。Page 54: 稀疏矩阵大部分元素为0,故只需储存非零元素的下标和元素值。Page 72: 数值数组和字符串数组中存储单元的数据类型相同,使用()操作;单元数组中每个单元存放的数据可能都不一样,使用{}操作,获取单元数组内容时圆括号只显示单元,花括号才显示内容。

       Page 77: 结构数组组织数据的能力比单元数组要强些,可通过struct(域名1,赋值,域名2,赋值„„)函数创建;获取结构数组域中的具体内容使用符号.,也可用专用函数getfield()获取;修改结构数组中域存储内容的函数是setfield()。

       Page 81: 多项式以行向量的形式存放且以降幂形式出现,若缺少某幂次项则该项系数为0 Page 134: 句柄是图形对象的标志代码,标识代码含有图形对象的各种必要的属性信息;图形对象的所有属性都是由属性名和属性值组成,对图形对象属性操作可实现不同表现效果,可通过句柄控制;用get(get(gca,'children'))命令可看到轴的子代的各种属性值;可对图形对象设置缺省对象属性来实现继承操作,还可用set(h,’.’,’.’)设置各种属性。《精通MATLAB7编程与数据库应用》

       Page 5: 为调试程序而进入debug方式时,提示符变为K>>;运算符两边的空格随意添加后无区别;在命令历史中查找,可将光标定位于某行后敲要查找的语句的首字母;可将用得多的几条语句选中后在右键菜单选”create shortcut”创立快捷键;命令窗口输入pathtool或选File->Set path可设置搜索路径。Page 19: 函数的输入参数用圆括号括起来用逗号分隔,输出参数在等式左边用方括号;语句的续行可在结尾用省略号(„);一行中可写多个语句,语句用逗号或分号隔开,若想写完多行命令再运行可按shift enter组合键;还可使用“Tab完成”,在命令和editor窗口写入文件名、变量、结构和函数名时只写入前面的几个字符后按Tab键。Page 24: 变量名是否正确可用isvarname查看0表有误;变量类型包括三种,常用的是局部变量,全局变量要用global声明且每个使用函数都要声明,永久变量(一直在内存中)要用persistent声明。

       Page 171: 程序开发的建议:

       1. 化复杂为简单:将每个任务做成一个独立的函数,函数尽量短;用数学语言写出步骤和流程,再转换成程序语言;选择正确的数据结构(如哪种数组)。

       2. 遵循的原则:使用描述性的变量名和函数名,尽量不用缩写;函数前面写帮助的注解,说明函数功能;一行不要超出80列以便打印;函数只被另一个函数调用,把被调函数作为子函数与主函数放在同一个M文件上。

       3. 函数命名的唯一性:用which –all 函数名 检验。

       4. 分步写程序,分步调试:对较大程序,一次写成一部分,然后测试;能正常工作且输出结果合理,再写下一部分;修改也一样,每次调试一部分。

       5. 程序最后测试:用debugger,可记录下被执行的每一行代码;用不同的输入组合测试,让每一行至少执行一次。Page 173: 在命令窗口的命令提示符下输入M文件名可运行该M文件;MATLAB与其它语言的区别之一是过程控制语句可能用到数组或矩阵;对if条件判断,若逻辑表达式非标量,那么它的所有元素值都非0,if条件才能满足,也可以是空数组,表示条件为假。Page 175: 分支语句switch后的表达式可以是函数或数值或字符串;循环有两种:次数确定的和依条件结束的;for循环中可用数组控制循环次数,MATLAB把列数作为循环次数;for语句可写在一行,分隔符用逗号;continue回到循环头,break退出循环,嵌套循环中都作用最内层循环;错误控制语句try„catch„end执行时,try„catch范围内出现错误可转到代码段catch„end做出响应,若此段还有错误则结束程序执行;return语句可强制结束当前运行的程序。Page 179: 脚本(scripts)与函数的区别:脚本简单执行一系列语句和需多次运行的文件,不能接受输入参数也不返回输出结果,变量保存在基本工作区;函数有定义语句function,有输入输出,变量有单独工作区;输出用[],输入用()。

       Page 181: 默认下M文件名与第一个函数名相同,若不同需用文件名引用函数;用exist函数识别是否为M文件函数,非0则是;用which函数找到M文件函数的源码;

       《MATLAB程序设计与应用》

       Page 242: 在M-book 中,在word与MATLAB之间进行传递的内容称为单元(Cell),输入输出是指对MATLAB而言;m-book最重要的操作就是输入单元的定义与执行,其方法是:先在文档中输入命令后选中命令行,再按组合键Alt D(=Define Input Cell),则命令行变成绿色的输入单元,然后按组合键Ctrl Enter(=Evaluate Cell),执行后产生蓝色的输出单元;也可选中命令行后直接按组合键Ctrl Enter输入并执行;注意:命令和标点须在英文状态下输入,MATLAB的续行符不能用于m-book,它会自动换行无需加回车符,修改后执行新结果会覆盖掉老结果。

       Page 247: 可用evaluate loop实现单元的循环执行,用purge output cells删去选中的输出单元,用undefine cells把单元转换为文本;输出格式控制包括输出数据控制和图形控制,可通过notebook->notebook options->embed figures in m-book是否选中控制输出图形是否镶嵌在m-book文档中;若输出图形背景色不是白色可在MATLAB命令窗口运行whitebg('white')再重新运行输入单元;可通过“样式和格式”修改Output等的样式。Page 251: Simulink主要对动态系统进行建模、仿真和分析,提供图形用户界面GUI,用户可用鼠标从模块库中调用标准模块并适当连接以建模同时用参数对话框设置参数,建模后选择仿真参数和数值算法便可启动仿真程序对系统仿真;simulink仿真模型表现为方框图,其扩展名为.mdl,数学上体现了一组微分方程或差分方程,通常包含3类模块:信源(source)、系统(system)、信宿(sink仪器);可用format菜单调整模块方向,改变模块前景色、背景填充色或者模型背景色,产生阴影效果等,处理模块名,给连线加标志;模型连接须从一个模块的输出端连到另一个模块的输入端,默认是折线要用斜线需选中连线再按住shift键拖动;连线分支操作是鼠标移到分支点位置先按下ctrl键再拖动到目标模块的输入端;选定模块后再用模型编辑窗口edit菜单可设置模块参数,模块属性等。

       Page 265: 系统仿真过程中,事先须对仿真算法、输出模式等仿真参数进行设置,方法是:从模型编辑窗口simulation菜单中选择configuration parameters命令打开仿真参数对话框设置仿真参数;设置仿真参数完后,从simulation菜单中选择start项便可启动当前模型的仿真,此时stop命令变成可选以供中途停止;为观察仿真结果变化轨迹可以:把输出结果送给scope模块或者XY graph模块,把仿真结果送到输出端口并作为返回变量后用MATLAB命令绘制该变量变化曲线,把输出结果送到to workspace模块从而直接存入工作空间后用绘图命令绘制出变量变化曲线;系统仿真步骤如下:建立系统仿真模型包括添加模块、设置模块参数以及进行模块连接等操作,设置仿真参数,启动仿真并分析仿真结果。

       Page 134: 要在MATLAB中使用其他软件的图象需用[x,c]=imread(filename,fmt)读取该图象,其图像通常由数据矩阵x和色彩矩阵c组成,真彩色图像的数据矩阵为三维,三个面上数据分别是RGB三种颜色的强度值,每个元素对应图像中一个像素点;可用colormap(c)函数设置色图;影片动画制作有三个函数:moviein(n)建立一个足够大的n列矩阵,a(:,n)=getframe将n幅画面信息保存矩阵a中,movie(a,m)播放由矩阵a定义的画面m次;实时动画制作是先画出初始图形,再计算活动对象新位置并显示新对象擦除旧对象,可通过EraseMode属性实现一般选Xor,只绘制与屏幕颜色不一致的原对象点;可通过改变数据属性来重新绘图,没改变一次就应用drawnow命令刷新屏幕一次。

       Page 311: mat文件是MATLAB数据存储的默认文件格式,以双精度二进制格式保存数据,它由128字节的文件头和其后的数据单元组成;MATLAB提供了一个子程序库使用户可以在C/C ,FORTRAN中直接调用这些子程序来创建和读取mat文件;操作mat文件的API函数封装于两个标准库文件:libmat.lib和libmx.lib,存放在binwin32相应子文件夹中,在externinclude中有与前面两个库文件对应的.def文件:libmat.def,libmx.def,其导出函数原型位于同目录下的mat.h,matrix.h中,前者包含mat文件的创建读写等函数的定义,后者包含MATLAB中基本数据类型和矩阵的定义;在FORTRAN语言中mat文件操作函数有:matOpen(filename,mode), matClose(mfp), matDeleteVariable(mfp,name), matGetDir(mfp,name), matPutVariable(mfp,name,pm), matGutVariable(mfp,name,pm), matPutVariableAsGlobal(mfp,name,pm),其中mfp为指向mat文件的指针,name是读写mat文件的矩阵名称,num为矩阵数目,pm是mxArray结构体指针,mode为打开文件方式。Page 315: MATLAB编译器(MCC)可将m语言编写的函数文件(脚本文件不行)转换成C/C 源代码,经编译链接后可生成函数库、可执行程序、COM组件等,从而提高程序执行效率丰富程序开发手段并隐藏算法源代码;使用MCC需安装MATLAB和一种C/C 编译器,如VC 6.0,要生成独立应用程序需安装相应数学库和图形库;编译器配置即执行命令:mbuild –setup 后按提示选取一种编译器(通常安装VC 6.0后选择它)生成批处理文件并注册相关dll文件,mbuild通过调用外部的C/C 编译器把M文件翻译成C/C 源代码然后与MATLAB的C/C 数学库、图形库链接得到独立可执行程序;执行命令为:mcc –m –I /files_source(源文件路径)–d /files_target(目标文件路径)*.m ;离开MATLAB执行exe文件时要把生成的所有文件包括相应库文件全部带上。

       Page 319: MATLAB提供了客户/服务器(Client/Server,C/S)功能,利用动态数据交换(DynamicDataExchange,DDE)功能和ActiveX自动化服务功能,可以实现在其他程序中对MATLAB程序及函数的调用,且通过mxArray与工作空间交换数据,从而增强其他语言的数值计算能力和数据可视化能力;MATLAB引擎是一组函数库,他提供了一种在用户程序进程中与MATLAB进程通信的方法,在WINDOWS下使用ActiveX技术实现,使用组件对象模型(ComponentObjectModel,COM)接口;C语言MATLAB计算引擎包括引擎函数和mx-函数两类,常用引擎函数有engOpen, engClose, engGetVariable, engPutVariable, engEvalString等,mx-函数的具体用法参见帮助文件中section为External Interfaces Reference部分;引擎编程首先要将mxArray转换成MATLAB中可操作的形式,将源程序编写存盘后再用mex命令对源程序文件进行编译,注意源文件中不能有中文(即使是解释);mex用来编译简单文件合适,但工程复杂时需在VC 6.0的集成环境中编译链接。

       Page 324: 常用FORTRAN引擎函数有engOpen(startcmd), engClose(ep), engGetVariable(ep,name), engPutVariable(ep,name,pm), engEvalString(ep,command)等,其中startcmd 为引擎参数(字符型),ep为引擎指针(整型),name为矩阵名,pm为mxArray矩阵指针,command为MATLAB命令;在MATLAB命令窗口使用的编译命令是optsfile=[matlabroot 'binwin32mexoptsdf60engmatopts.bat'];mex('-f',optsfile,'*.f90');但有时候没有df60engmatopts.bat文件,这时候需在VisualFortran的集成环境中编译链接;可先用VF打开该f90文件然后选Tools->Options->Directories,在Include files中添加matlabrootexterninclude,在Library files中添加externlibwin32microsoft,然后选Project->Settings->Link,在Object modules中添加libmx.lib libmat.lib libeng.lib,再用默认的编译链接可生成可执行文件*.exe。

       Page 325: MEX(MATLAB executable)动态链接函数接口使MATLAB可直接调用C,FORTRAN语言编写的算法程序,应用如下:对已有的C,FORTRAN子程序通过添加入口程序mexFunction可由MATLAB调用而不必重编M文件,可把要求大量循环迭代的部分用C语言编写为MEX文件提高计算速度,直接控制硬件如数据采集卡等;MEX文件优于M文件执行,用C语言编写MEX文件的特点是编程灵活指针功能强,但应注意C和MATLAB中数据存储方式的差别,其源程序包括两部分:入口子程序(作用是建立通信联系),计算子程序(可是普通的C程序),注意都要包括头文件mex.h;可在命令窗口输入mex filename.c编译MEX程序,但在VC环境下更好,项目类型为Win32 Dynamic-link library,(设置环境和参数都较麻烦)编译链接无误后产生*.dll,运行时会自动打开新的MATLAB应用程序。

       Page 330: FORTRAN语言数值计算功能强但指针功能弱,其MEX文件同样由入口子程序和计算子程序组成,它只支持双精度类型和字符串类型的数据;mexFunction()中参数的意义和C语言一样,入口子程序也和C语言大体相同,编译时先输入命令mex –setup选择DigitalVisualFortran6.0作为默认编译器,有些MATLAB软件里没有(如我的只能用VC );集成环境中编译步骤如下:新建一个项目类型为FortranDynamicLinkLibrary,选Project->Add to project->new->Text file创建与项目同名的定义文件(*.def),选Tools->options->directories-> include files添加externinclude,library files添加libwin32digitaldf60,选project->settings-> output file name输入*.dll,Object modeles增加libmx.lib,libmex.lib,将文件加入到项目中再进行编译链接,可生成*.dll;将MATLAB数据接口和其他开发环境结合可充分发挥数值计算长处避开执行效率低的不足,MATLAB还提供了与excel中数据交互的工具箱、VB算法库及MATLABwebServer可通过HTTP协议在安装了web服务器主机上提供MATLAB计算远程服务,硬件操作方面MATLAB提供了串行通信对象操纵串行口并可通过mex程序调用设备驱动程序。《MATLAB7.x程序设计语言》

       Page 266: 建立多维数组有四种方法:利用下标建立,如2×2的矩阵也可看作是2×2×1的数组可扩展维数,标量输入表示扩展维元素均相同;利用特殊数组函数(如rand, randn, ones等)可直接产生多维数组,也可用repmat(A,m,n)直接产生;利用cat(n,A,B)连接A,B矩阵,n为指定维数,连接时是最后一维变化;编写M文件将记录组合成多维数组;ndims获得维数,size得到各维尺寸,whos得到数组存储格式。

       Page 269: 多维阵列(即数组)的下标访问即采用各维的下标访问其元素,可用向量来表示多个元素,: 表示其他维固定该维变化的所有元素还可用a:b取出部分元素;阵列重新排列可用reshape函数按列重排,用squeeze函数删除单点维(尺寸size为1的维);序列变换可用permute函数改变指定维次序。

       Page 272: 面向向量的函数(如sum,mean,prod等)通常在第一个非单点维上操作且允许指定的维,也有例外如cross函数;元素对元素的操作函数(如三角、指数函数等)对每个元素进行同样操作,算术、逻辑、关系操作符也按元素对元素方式处理,有一个为标量则对阵列所有元素与该标量进行同样操作;面向矩阵的函数(如线性代数函数)不能用于多维阵列,需从中取出维数为2的一部分进行操作;RGB(m,n,3)的三色原理Color=0.3*RGB(:,:,1) 0.59*RGB(:,:,2) 0.11*RGB(:,:,3)。Page 273: 结构阵列由多个域构成,不同域可存放不同类型的数据,可用结构名(下标).域名对结构阵列赋值;用结构名显示结构信息,只有一个结构元素显示各元素值,可用rmfield函数删除错误域名;用struct函数可产生一个结构元素的结构数组,再利用单元数组{}可输入多个结构元素;访问结构数组中的元素可用下标,利用getfield(结构名,{下标},’域名’,{a:b,c:d})可得到域的部分值(域元素),利用setfield函数可改变结构的域值。Page 277: MATLAB函数和操作符可用于结构数组中的域和域元素,可用循环来完成指定功能,还可对同名域的数据用函数直接处理;结构阵列的数据组织方式有平面组织和元素对元素组织等,如对三个独立存储矩阵,平面组织方式下每个域是一个平面的数据(矩阵),这样容易提取平面数据并扩展平面个数,访问子集时稍麻烦,元素对元素组织结构的建立需用循环,访问子集较容易但访问平面还要用循环;结构阵列的域值可以是另一个已定义过的结构,即结构嵌套,如用struct建立一个结构元素再用赋值语句*.原域名.域名扩展。

       Page 282: 单元阵列中每个单元可以是标量、向量、矩阵、字符阵列、结构阵列、多维阵列等,在建立单元阵列之前应确保不存在同名数值阵列否则会导致错误;对单元阵列赋值时应使用花括号,放左边较方便,可用cell(m,n,„)预分配空单元阵列;显示单元数组可直接输入数组名显示单元信息,也可采用celldisp函数显示详细信息和cellplot函数显示存储结构图形;使用单元阵列数据也用下标访问但注意括号,访问一个单元用花括号,访问单元中的元素和部分单元用圆括号;删除元素也用赋空值,如A(:,2)=[]后A可能成了一维单元阵列。

       Page 285: 花括号内采用冒号操作符相当于指示多个独立的单元内容如A{m:n},形如[a{1};a{2}]可构造数值阵列;可用单元数组代替函数输入、输出、显示操作等的变量列表,如[a{1:2}]=eig(B)此时a{1}为特征向量(模态)矩阵a{2}为特征值(规范)矩阵;利用下标可将函数和操作符应用于单元阵列,用循环可对所有单元进行处理;单元阵列比结构阵列更具包容性,它可在一条赋值语句中访问多个数据域,如使用[a,b]=c{1:2}相当于a=s.f1;b=s.f2其中c为单元阵列,s为等价结构阵列;利用花括号、cell函数及赋值语句可建立嵌套的单元阵列,不用cell函数预分配完全可以但赋值系统会花更多时间;单元阵列与数值阵列之间的转换应采用循环程序,num2cell可实现数值到单元。

       Page 290: 多维单元数组可利用cat函数连接产生,如A,B为2×2的单元数组则可用cat(3,A,B)生成2×2×2的多维单元数组;多维结构数组可利用直接赋值或cat函数产生,定义后可用结构的域名来访问还可对其数据应用函数和操作符;利用单元数组还可将具有不同域结构的结构数组存储在一起,每个单元为一个结构数组;多维数值阵列适用于规则数据,结构阵列适用于不一致的数据,单元阵列可用于任意数据混合;一般结构名首字母大写,单元数组名大写,其余名称小写,较复杂的数据库用单元中有结构,结构中有数值和字符的形式。

       Page 314: MATLAB中字符以其ASCII码表示,每个字符都采用16位的ASCII码存储,字符串即一维字符数组;double函数可把字符串中每个字符转变成ASCII码,char函数可把ASCII码数组转变成对应字符串;建立二维字符数组时应注意确保每行上的字符数相等,方法是先disp每行字符串的长度length()后用blanks函数在较短的字符串末尾补上空格;从字符数组中提取字符串时,可用deblank函数删除末尾多余的空格;利用cellstr函数可将字符数组变换成字符串单元数组,每个单元均为字符串且已删除末尾空格,利用char函数可进行其逆操作,且可自动在每行末尾加上适当空格。

       Page 317: 比较两字符串是否完全相同用strcmp函数,strcmpi函数比较时忽略大小写,strncmp函数比较两字符串前n个字符是否相同,相同时,返回逻辑真,值为1不同为0;可用MATLAB关系操作符逐字比较两个字符串是否相同或大小关系,采用的是ASCII码,表达式为真值为1;可用isletter函数逐字比较字符串是否全由字母构成,是则为1,isspace函数逐字比较字符串是否有空格,还可用或操作符检测字符串是否全由字母和空格构成。Page 319: 利用findstr和strrep函数可实现字符串中部分字符的搜索与替代;用strtok函数可找出第一个分隔符之前的字符串,若有n个单词可用循环和array=strvcat(string,n)从英文句子中提取单词;MATLAB提供了一组函数如int2str,num2str,bin2dec,hex2dec,base2dec等在各种数制和字符串之间进行变换;只有用num2str函数才可将含小数的数值变换成字符串如在图形标记中使用数值,用mat2str函数可将矩阵变换成字符串形式。

第五篇:matlab心得

       学习Matlab心得体会

       学习Matlab已经有一段时间了,对Matlab编程有了一定的了解。下面谈谈自己近期的学习心得。

       第一节的时候我们对Matlab有了初步的认识:Matlab是“矩阵实验室(matrix laboratoy)”的缩写,它是一种与数学水平密切相关的算法语言,专门针对科学、工程计算及绘图的需求。Matlab的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和处理、财务建模和分析以及计算机生物学等众多应用领域。附加的工具箱扩展了Matlab环境,以解决这些领域的特定性问题。比如说在自动控制理论中用的比较多的是根轨迹,相平面,传递函数,拉普拉斯变换,乃氏曲线等。在电机控制里面还有很多仿真实验,也经常用,对于辅助分析,也是很好用的。

       我们已经学习过C语言,不难发现Matlab的编程基本语法学习起来很快的,和C语言很类似,而且支持C语言函数的,或者说函数就是用C语言编的。大一时学习线性代数,对矩阵又有了一定的了解,为今天学习Matlab打下了一定的基础。从matlab的名字的来源可以看出,它以矩阵运算常见,在当今的科学计算中,几乎无处不用矩阵运算,这是它的优势得到了充分的体现。

       随着学习的课时的增加,我们对Matlab的有了深入而实质性的了解。首先我们学习了Matlab的数学运算、程序设计、程序调试、Matlab绘图及图形句柄,最后我们又学习了Matlab的图形用户界面设计。经过几次实验课,我们学会了M文件编程及程序调试,学会利用help这一命令对程序进行解释。

       Matlab是以解释方式工作的,即它对每条语句解释后立即执行,若有错误也立即做出反应,便于对程序进行修改,大大减轻了编程和调试的工作量。它灵活、方便,程序调试手段丰富,调试速度快。Matlab语言像Basic和C语言一样规定了矩阵的算算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符等。Matlab的绘图功是十分方便的,在调用绘图函数时调整自变量可绘制出不同颜色的点、线、复线或多重线,这是通用的编程语言所不及的。Matlab的工作环境主要由命令窗口、图形窗口、和文本编辑窗口组成。

       当然,matlab与其它计算机语言相比,有其独特的优点。特点如下:Matlab把编辑、编译、连接以及执行融为一体,加快了编写、修改、和调试程序的速度,或者说是一种比VB还要简单的语言。Matlab语言的内容极为丰富,它的各种函数都与数学领域有关,它的起点高,编程效率高,用户使用方便,智能化程度高,人机交互性好,功能丰富,可扩展性强。

       通过这段时间的理论学习及实验,我觉得要提高matlab编程能力的方法有以下几点:(1)利用help,look for等功能对程序进行编译修改。(2)多上网查资料,上论坛,搜索帖子、发帖子问人(3)阅读别人、特别是一些高级技术人员的程序,在阅读的过程中进行学习,学习别人的编程方法。(4)还要有一本matlab的函数工具词典,可以尽量多的熟悉matlab自带的函数,因为matlab自带的函数特别多,基本上能够满足一般的数据和矩阵的计算。当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。多想、多思考、多尝试,才是正路。

       记得上第一节课时,老师给我们放得ppt上有这样一句话:学会Matlab将改变你的一生,网络对你的改变将远远的超过一台独立的计算机!作为一名电气工程及其自动化的一名学生,学好Matlab是非常有用的,扩展就业方向,为将来就业打下良好的基础!最后,感谢老师您这么久以来对我们的谆谆教导!我们不会忘记您对我们的细心辅导,不会忘记您在我们瞌睡的时候给我们的讲的故事„„