第2章 MATLAB概论1、 与其他计算机语言相比较,MATLAB语言突出的特点是什么?答:起点高、人机界面适合科技人员、强大而简易的作图功能、智能化程度高、功能丰富,可扩展性强 2、 MATLAB系统由那些部分组成?答:开发环境、MATLAB数学函数库、MATLAB语言、图形功能、应用程序接口3、 安装MATLAB时,在选择组件窗口中哪些部分必须勾选,没有勾选的部分以后如何补安装?答:在安装MATLAB时,安装内容由选择组件窗口中各复选框是否被勾选来决定,可以根据自己的需要选择安装内容,但基本平台(即MATLAB选项)必须安装第一次安装没有选择的内容在补安装时只需按照安装的过程进行,只是在选择组件时只勾选要补装的组件或工具箱即可4、 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上?答:在MATLAB操作桌面上有五个窗口,在每个窗口的右下角有两个小按钮,一个是关闭窗口的Close按钮,一个是可以使窗口称为独立的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面称为独立窗口,在独立窗口的view菜单中选择Dock,菜单项就可以将独立的窗口重新防止的桌面上。
5、 如何启动M文件编辑/调试器?答:在操作桌面上选择“建立新文件”或“打开文件”操作时,M文件编辑/调试器将被启动在命令窗口中键入edit命令时也可以启动M文件编辑/调试器6、 存储在工作空间中的数组能编辑吗?如何操作?答:存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可7、 命令历史窗口除了可以观察前面键入的命令外,还有什么用途?答:命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M文件中8、 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别?答:当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file菜单中的Set Path菜单项来完成在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上9、 在MATLAB中有几种获得帮助的途径?答:(1)帮助浏览器:选择view菜单中的Help菜单项或选择Help菜单中的MATLAB Help菜单项可以打开帮助浏览器。
(2)help命令:在命令窗口键入“help” 命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的帮助信息 (3)lookfor命令:在命令窗口键入“lookfor 关键词”可以搜索出一系列与给定关键词相关的命令和函数 (4)模糊查询:输入命令的前几个字母,然后按Tab键,就可以列出所有以这几个字母开始的命令和函数注意:lookfor和模糊查询查到的不是详细信息,通常还需要在确定了具体函数名称后用help命令显示详细信息第3章 MATLAB数值运算3.1 在MATLAB中如何建立矩阵,并将其赋予变量a?答:在Command Window窗口输入操作:>> a=[5 7 3;4 9 1]3.2 有几种建立矩阵的方法?各有什么优点?答:(1)直接输入法,如a=[1 2 3 4],优点是输入方法方便简捷;(2)通过M文件建立矩阵,该方法适用于建立尺寸较大的矩阵,并且易于修改;(3)由函数建立,如y=sin(x),可以由MATLAB的内部函数建立一些特殊矩阵;(4)通过数据文件建立,该方法可以调用由其他软件产生数据3.3 在进行算术运算时,数组运算和矩阵运算各有什么要求?答:进行数组运算的两个数组必须有相同的尺寸。
进行矩阵运算的两个矩阵必须满足矩阵运算规则,如矩阵a与b相乘(a*b)时必须满足a的列数等于b的行数3.4 数组运算和矩阵运算的运算符有什么区别?答:在加、减运算时数组运算与矩阵运算的运算符相同,乘、除和乘方运算时,在矩阵运算的运算符前加一个点即为数组运算,如a*b为矩阵乘,a.*b为数组乘3.5 计算矩阵与之和3.6 求的共轭转置3.7 计算与的数组乘积3.8 “左除”与“右除”有什么区别?答:在通常情况下,左除x=a\b是a*x=b的解,分母在左边右除x=b/a是x*a=b的解,分母在右边一般情况下,a\b不等于b/a3.9 对于,如果,,求解X3.10 已知:,分别计算a的数组平方和矩阵平方,并观察其结果 3.11 ,,观察a与b之间的六种关系运算的结果 3.12 ,在进行逻辑运算时,a相当于什么样的逻辑量 答:相当于a=[1 1 0 1 1] 3.13 在sin(x)运算中,x是角度还是弧度?答:在sin(x)运算中,x是弧度,MATLAB规定所有的三角函数运算都是按弧度进行运算3.14 角度,求x的正弦、余弦、正切和余切3.15 用四舍五入的方法将数组[2.4568 6.3982 3.9375 8.5042]取整。
3.16 矩阵,分别对a进行特征值分解、奇异值分解、LU分解、QR分解3.17 将矩阵、和组合成两个新矩阵:(1)组合成一个4´3的矩阵,第一列为按列顺序排列的a矩阵元素,第二列为按列顺序排列的b矩阵元素,第三列为按列顺序排列的c矩阵元素,即(2) 按照a、b、c的列顺序组合成一个行矢量,即 3.18 将(x-6)(x-3)(x-8)展开为系数多项式的形式 3.19 求解多项式x3-7x2+2x+40的根 3.20 求解在x=8时多项式(x-1)(x-2) (x-3)(x-4)的值 3.21 计算多项式乘法(x2+2x+2)(x2+5x+4) 3.22 计算多项式除法(3x3+13x2+6x+8)/(x+4) 3.23 对下式进行部分分式展开: 3.24 计算多项式的微分和积分 3.25 解方程组3.26 矩阵,计算a的行列式和逆矩阵第4章 MATLAB符号运算4.1 创建符号变量有几种方法?MATLAB提供了两种创建符号变量和表达式的函数:sym和symsSym用于创建一个符号变量或表达式,用法如x=sym(‘x’)及f=sym(‘x+y+z’);syms用于创建多个符号变量,用法如syms x y z。
4.2 下面三种表示方法有什么不同的含义?(1)f=3*x^2+5*x+2(2)f='3*x^2+5*x+2'(3)x=sym('x') f=3*x^2+5*x+2答;(1)f=3*x^2+5*x+2 表示在给定x时,将3*x^2+5*x+2 的数值运算结果赋值给变量f,如果没有给定x则指示错误信息 (2)f='3*x^2+5*x+2' 表示将字符串'3*x^2+5*x+2'赋值给字符变量f,没有任何计算意义,因此也不对字符串中的内容做任何分析 (3)x=sym('x') f=3*x^2+5*x+2 表示x是一个符号变量,因此算式f=3*x^2+5*x+2就具有了符号函数的意义,f也自然成为符号变量了4.3 用符号函数法求解方程at2+b*t+c=0 4.4 用符号计算验证三角等式: sin(j1)cos(j2)-cos(j1)sin(j2) =sin(j1-j2) 4.5 求矩阵的行列式值、逆和特征根 4.6 因式分解: 4.7 ,用符号微分求df/dx 4.8 求代数方程组关于x,y的解 4.9 符号函数绘图法绘制函数x=sin(3t)cos(t),y=sin(3t)sin(t)的图形,t的变化范围为[0,2p]。
4.10 绘制极坐标下sin(3*t)*cos(t)的图形第5章MATLAB程序设计1 命令文件与函数文件的主要区别是什么?答:(1)命令文件是一系列命令的组合,函数文件的第一行必须用function说明; (2)命令文件没有输入参数,也不用返回函数,函数文件可以接受输入参数,也可以返回参数; (3)命令文件处理的变量为工作空间变量,函数文件处理的变量为函数内部的局部变量,也可以处 理全局变量2 如何定义全局变量?答:用关键字global可以把一个变量定义为全局变量,在M文件中定义全局变量时,如果在当前工作空间已经存在了相同的变量,系统将会给出警告,说明由于将该变量定义为全局变量,可能会使变量的值发生改变,为避免发生这种情况,应该在使用变量前先将其定义为全局变量3 如果x是一个结构型数组,如何观察其中的内容? 答:结果数组用于存储一组相关的数据元素(域),这些元素可以是不同类型、不同尺寸的,结构数组不能用数组编辑器观察和修改其中的元素对于明为x的结构型数组,可以直接键入x以观察其中所包含的域名及内容,也可以键入x.域名观察指定域名的内容,例如 >>x x = name: 'line' color: 'red' data: [1 2.7000 3 5.9000 8.4000 12.2000 16.6000 18.8000 26.2000] >> x.color ans = red4 if语句有几种表现形式?(1) if 表达式 语句体 end(2) if 表达式 语句体1 else 语句体2 end(3) if 表达式1 语句体1 elseif 表达式2 语句体2 end(4) )if 表达式1 语句体1 elseif 表达式2 语句体2 else 语句体3 end5 说明break语句和return语句的用法。
答:break语句用于终止for循环和while循环的执行如果遇到break语句,则退出循环体,继续执行循环体外的下一行语句在嵌套循环中,break只存在于最内层的循环中 return语句用于终止当前的命令序列,并返回到调用的函数或键盘,也用于终止keyboad方式,在MATLAB中,被调用的函数运行结束后会自动返回调用函数,使用return语句时将return插入被调用函数的某一位置,根据某种条件迫使被调用函数提前结束并返回调用函数6 有一周期为4p的正弦波上叠加了方差为0.1的正态分布的随机噪声的信号,用循环结构编制一个三点线性滑动平均的程序提示:①用0.1*randn(1,n)产生方差为0.1的正态分布的随机噪声;②三点线性滑动平均就是依次取每三个相邻数的平均值作为新的数据,如x1(2)=(x(1)+x(2)+x(3))/3,x1(3)=( x(2)+x(3)+x(4))/3……)7 编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1 function c=collatz(n) % collatz % Classic “3n+1” Ploblem from number theory c=n; while n>1 if rem(n,2)==0 n=n/2; else n=3*n+1; end c=[c n]; end 8 有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。
学生姓名王张刘李陈杨于黄郭赵成 绩728356941008896685465 Name=['王','张','刘','李','陈','杨','于','黄','郭','赵']; Marks=[72,83,56,94,100,88,96,68,54,65]; n=length(Marks); for i=1:n a{i}=89+i; b{i}=79+i; c{i}=69+i; d{i}=59+i; end; c=[d,c]; for i=1:n switch Marks(i) case 100 Rank(i,:)=' 满分'; case a Rank(i,:)=' 优秀'; case b Rank(i,:)=' 良好'; case c Rank(i,:)=' 及格'; otherwise Rank(i,:)='不及格'; end end disp(' ') disp(['学生姓名 ',' 得分 ',' 等级']); disp('--------------------------') for i=1:10; disp([' ',Name(i),' ',num2str(Marks(i)),' ',Rank(i,:)]); end9 编写一段程序,能够把输入的摄氏温度转化成华氏温度,也能把华氏温度转换成摄氏温度。
k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):'); if k~=1 & k~=2 disp('请指定转换方式') break end tin=input('输入待转变的温度(允许输入数组):'); if k==1 tout=tin*9/5+32; % 摄氏转换为华氏 k1=2; elseif k==2 Tout=(tin-32)*5/9; % 华氏转换为摄氏 k1=1; end str=[' °C';' °F']; disp(['转换前的温度', ' ', '转换后的温度']) disp([' ',num2str(tin),str(k,:), ' ', num2str(tout),str(k1,:)])10 keyboard命令的作用是什么?当在函数中使用keyboard命令时,是否可以在工作空间浏览器中观察和修改函数中的局部变量?退出keyboard状态的命令是什么?编一个函数文件,在其中设置keyboard,观察变量情况。
答:当运行中的程序遇到keyboard命令时会暂时停止运行,将控制权交给键盘,这时命令窗口的提示符变为K>>,可以在命令窗口或工作空间浏览器中观察和修改变量内容,如果keyboard命令设置在函数中,则可以观察和修改函数中的局部变量,检查或修改完成后,键入return命令,退出keyboard状态,控制权交还给系统,程序将继续运行第6章 常用图形命令1 绘制曲线,x的取值范围为[-5,5] 2 有一组测量数据满足,t的变化范围为0~10,用不同的线型和标记点画出a=0.1、a=0.2和a=0.5三种情况下的曲线 3 在上题结果图中添加标题,并用箭头线标识出各曲线a的取值 4 在上题结果图中添加标题和图例框 5表中列出了4个观测点的6次测量数据,将数据绘制成为分组形式和堆叠形式的条形图第1次第2次第3次第4次第5次第6次观测点1367428观测点2673247观测点3972584观测点46432746 x= [66 49 71 56 38],绘制饼图,并将第五个切块分离出来 7 ,当x和y的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。
8 绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分布情况 >> surf(peaks(30));>> colormap(hot)>> colormap(cool)>> colormap(lines)9 用sphere函数产生球表面坐标,绘制不通明网线图、透明网线图、表面图和带剪孔的表面图 10 将上题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示 axis square axis off 第7章 Simulink基础7.1 什么是Simulink ? 答:Simulink是一个用来对动态系统进行建模、仿真和分析的软件包,它支持连续的、离散的或二者混合的线性和非线性系统,也支持具有多种采样速率的多速率系统7.2 如何进行下列操作:(1)翻转模块(2)给模型窗口加标题(3)指定仿真时间(4)设置示波器的显示刻度答:(1)翻转模块 翻转:将鼠标指针指向要翻转的模块并按下鼠标右键,在弹出的菜单中选择Format栏中的Flip Block项,模块将翻转180°,每选择一次模块都将翻转180°,该操作也可以在菜单栏中的Format菜单中进行。
(2)给模型窗口加标题 在模型窗口的上方双击鼠标左键,会出现的一个文本输入框,输入文字并通过Format菜单中的选项改变字体的颜色和大小,就可以做出一个好看的标题在模型窗口的任意地方都可以通过双击鼠标左键后输入文字为模型窗口添加说明) (3)指定仿真时间 选择Simulation菜单打开参数设置对话框,在Solver页面中第一项Simulation time中通过输入开始时间和结束时间来确定仿真时间 (4)设置示波器的显示刻度 双击示波器模块弹出示波器显示窗口,在坐标轴区域内的任意位置单击鼠标右键,在弹出的菜单中选择Axes properties…菜单项弹出示波器坐标轴属性对话框,可以设置Y轴显示的范围7.3 有传递函数如下的控制系统,用Simulink建立系统模型,并对系统的阶跃响应进行仿真 7.4 建立一个简单模型,用信号发生器产生一个幅度为2V、频率为0.5Hz的正弦波,并叠加一个0.1V的噪声信号,将叠加后的信号显示在示波器上并传送到工作空间7.5 建立一个简单模型,产生一组常数(1×5),再将该常数与其5倍的结果合成一个二维数组,用数字显示器显示出来7.6 建立一个模拟系统,将摄氏温度转换为华氏温度(Tf = 9/5Tc+32)。
7.7 建立二阶系统的脉冲响应模型,设ωn=10Hz,观察当0<ζ<1、ζ=0、ζ=1及ζ>1时系统的响应 。