课程设计任务书学生姓名:董航专业班级:电信1006班指导教师:阙大顺,李景松工作单位:信息工程学院课程设计名称:Matlab应用课程设计课程设计题目:Matlab运算与应用设计5初始条件:1.Matlab6.5以上版本软件;2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应用”、线性代数及相关书籍等;3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成;2.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。
具体设计要求包括:①初步了解Matlab、熟悉Matlab界面、进行简单操作;②MATLAB的数值计算:创建矩阵矩阵运算、多项式运算、线性方程组、数值统计;③基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;④使用文本编辑器编辑m文件,函数调用;⑤能进行简单的信号处理Matlab编程;⑥按要求参加课程设计实验演示和答辩等。
3.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:①目录;②与设计题目相关的理论分析、归纳和总结;③与设计内容相关的原理分析、建模、推导、可行性分析;④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;⑤课程设计的心得体会(至少500字);⑥参考文献(不少于5篇);⑦其它必要内容等。
时间安排:1.5周(分散进行)参考文献:[1](美)穆尔,高会生,刘童娜,李聪聪.MA TLAB实用教程(第二版) . 电子工业出版社,2010.[2]王正林,刘明.精通MATLAB(升级版) .电子工业出版社,2011.[3]陈杰. MA TLAB宝典(第3版) . 电子工业出版社,2011.[4]刘保柱,苏彦华,张宏林. MATLAB 7.0从入门到精通(修订版) . 人民邮电出版社,2010.指导教师签名:年月日系主任(或责任教师)签名:年月日目录1 Matlab的简介................................... 错误!未定义书签。
2课程设计内容..................................... 错误!未定义书签。
2.12.22.342.452.5122.6132.7142.8152.9162.10173课程设计心得体会 (20)4参考文献 (21)1 Matlab 软件简介1.1 MATLAB产生的历史背景MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple 并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用 MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB 成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB的应用:利用MATLAB可以进行以下各种工作●数值计算●数值和符号计算●工程和科学绘图●控制系统的设计与仿真●数字图像处理●数字信号处理●通讯系统设计与仿真●财务与金融工程1.2 MATLAB的语言特点和开发环境MATLAB作为一种科学计算的高级语言之所以受欢迎,就是因为它有丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。
被称为第四代编程语言的MATLAB最大的特点就是简洁开放的程序代码和直观实用的开发环境。
具体地说MATLAB主要有以下特点:(1)库函数资源丰富(2)语言精炼,代码灵活(3)运算符多而灵活(4)面向对象控制功能优良,使界面编程更方便、自由。
(5)程序设计自由(6)图形功能强大(7)程序的兼容性好(8)源代码开放(9)形形色色的工具箱2.课程设计内容2.1 已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。
2.1.1理论分析该函数linspace()为赋值向量函数,还要用到简单的正弦sin()和绝对值abs()函数。
2.1.2程序代码t = linspace(0,2*pi,6); %产生6维的从0到2*pi等分行向量sin(t) %求t的正弦值abs(sin(t)) %求sin(t)的的绝对值2.1.3程序运行结果ans =0 0.9511 0.5878 -0.5878 -0.9511 -0.0000 ans =0 0.9511 0.5878 0.5878 0.9511 0.0000 2.1.4总结在matlab中乘号不能不写,也不能写成‘×’。
只能写成‘*’。
2.2 制函数x=在1xey-≤x时的曲线。
0≤2.2.1理论分析:这是一个简单的函数,但要了解该函数用程序代码书写的正确和规范,以及了解绘制二维曲线的函数。
2.2.2程序代码x = 0:0.01:1; %x轴上以0.01的速度从0递增到1的数组y = x.*exp(-x); %y关于x的表达式plot(x,y) %以x为横坐标y为纵坐标画出二维曲线2.2.3程序运行结果2.2.4总结:在matlab中两数之间应该用‘*’符号,不能省略,而且注意如果是进行向量的运算得用‘.*’运算。
2.3 已知a=[1,3,0;2,0,1;4,6,5],a1=logical([1 01]),a2=logical([1 1 0]),b=a>1,求a(a1,a2)和a(b)。
2.3.1理论分析:注意矩阵的赋值以及各种运算2.3.2程序代码a = [1,3,0;2,0,1;4,6,5]; %定义a的矩阵并赋值a1 = logical([1 0 1]); %a1的逻辑值数组a2 = logical([1 1 0]); %a2的逻辑值数组b = a > 1; %a,b的逻辑表达式a(a1,a2) %求矩阵a的1,3行和1,2列的子矩阵a(b) %求a中大于1的数2.3.3程序运行结果ans =1 34 6ans =243652.3.4总结在matlab中矩阵的形式各种各样,还有各种赋值形式,我们要了解矩阵的各种形式以及运算2.4分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:0.25:3;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);(2)A=zeros(3,5)A(:)=-4:5L=abs(A)>4islogical(L)X=A(L)(3)A=[1:5;6:10]pow2(A)(4)A=zeros(3,2)A(:)=1:6A=A*(1+i)A1=A.’;B1=A’;(5)A=ones(2,3)B=ones(2)C=eye(4)D=diag(C)E=repmat(C,1,3)2.4.1理论分析:该大题是让我们练习编写代码,观察执行结果,根据结果去了解各个函数的功能及用法,所以我们必须熟练了解一些常用函数的用法。
2.4.1.2程序代码X=0:0.25:3; %生成数组Y=X.*exp(-X); %y1的表达式plot(X,Y),xlabel('x'), ylabel('y'),title('y=x*exp(-x)'); %标注x,y轴及标题2.4.1.3程序运行结果2.4.2.2程序代码A = zeros(2,5) %生成一个2×5的全0矩阵A(:) = -4:5 %将A矩阵赋值L = abs(A) > 4 %将A中绝对值与4比较后的逻辑值矩阵islogical(L) %求L的逻辑值X = A(L) %求出L中逻辑值为1的那个元素对应A的值2.4.2.3程序运行结果A =-4 -2 0 2 4-3 -1 1 3 5L =0 0 0 0 00 0 0 0 1ans =1X =2.4.3.2程序代码A = [1:5;6:10] %生成一个二维数组pow2(A) %求该数组的每个元素的平方值2.4.3.3程序运行结果A =1 2 3 4 56 7 8 9 10ans =2 4 8 16 3264 128 256 512 1024 2.4.4.2程序代码A=zeros(3,2) %生成一个3行2列的全0 矩阵A(:)=1:6 %将A从新赋值A=A*(1+i) %将A中的每个元素进行运算A1=A.' %求A的转置矩阵B1=A' %求A的共轭转置矩阵2.4.4.3程序运行结果A =0 00 00 0A =1 42 53 6A =1.0000 + 1.0000i 4.0000 + 4.0000i2.0000 + 2.0000i 5.0000 + 5.0000i3.0000 + 3.0000i 6.0000 + 6.0000iA1 =1.0000 + 1.0000i2.0000 + 2.0000i3.0000 + 3.0000i4.0000 + 4.0000i5.0000 + 5.0000i6.0000 + 6.0000iB1 =1.0000 - 1.0000i2.0000 - 2.0000i3.0000 - 3.0000i4.0000 - 4.0000i5.0000 - 5.0000i6.0000 - 6.0000i2.4.5.2程序代码A = ones(2,3) %生成一个2×3的全为1的矩阵B = ones(2) %生成一个2×2的全为1的方阵C = eye(4) %生成一个4阶单位矩阵D = diag(C) %取C矩阵中的对角元素作为列向量E = repmat(C,1,3) %将C矩阵复制为1×3块的矩阵2.4.5.3程序运行结果A =1 1 11 1 1B =1 11 1C =1 0 0 00 1 0 00 0 1 00 0 0 1D =1111E =1 0 0 0 1 0 0 0 1 0 0 00 1 0 0 0 1 0 0 0 1 0 00 0 1 0 0 0 1 0 0 0 1 00 0 0 1 0 0 0 1 0 0 0 1 2.4.3总结:在该程序编程题中,有很多函数,要注意他们的用法以及他们之间的联系,比如A(:)= -4 : 5,是给矩阵数组赋值,在之前zeros()是确定A 的矩阵形式,所以赋值是应与A 数组矩阵有相同多的元素个数,本来原题中是zeros(3,5),但运行时却有错误,是因为zeros (3,5)赋给A ,A 是3×5矩阵共有15个元素,而后来赋值时又只赋给 -4:5 只有10个元素所以就出错了;当改成zeros (2,5)就可以了。