MATLAB课程设计报告(绝对完整)_第1页
MATLAB课程设计报告(绝对完整)_第2页
MATLAB课程设计报告(绝对完整)_第3页
MATLAB课程设计报告(绝对完整)_第4页
MATLAB课程设计报告(绝对完整)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计任务书课程设计任务书 学生姓名:学生姓名: 董航董航 专业班级:专业班级: 电信电信 10061006 班班 指导教师:指导教师: 阙大顺,李景松阙大顺,李景松 工作单位:工作单位: 信息工程学院信息工程学院 课程设计名称课程设计名称: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(美)穆尔,高会生,刘童娜,李聪聪MATLAB 实用教程(第二版) . 电子工业出版社,2010. 2王正林,刘明精通 MATLAB(升级版) .电子工业出版社,2011. 3陈杰 . MATLAB 宝典(第 3 版) . 电子工业出版社,2011. 4刘保柱,苏彦华,张宏林 . MATLAB 7.0 从入门到精通(修订版) . 人民邮电出版社,2010. 指导教师签名:指导教师签名: 年年 月月 日日 系主任(或责任教师)签名:系主任(或责任教师)签名: 年年 月月 日日 目录目录 1 1 MATLABMATLAB 的简介的简介.1 2 2 课程设计内容课程设计内容.4 2.12.1.5 2.22.2.2 2.32.3.2 2.42.4.2 2.52.5.2 2.62.6.2 2.72.7.2 2.82.8.2 2.9.2 2.10.2 3 3 课程设计心得体会课程设计心得体会.1 4 4 参考文献参考文献.1 1 1 MatlabMatlab 软件简介软件简介 1.11.1 MATLABMATLAB 产生的历史背景产生的历史背景 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 12 2 MATLABMATLAB 的语言特点和开发环境的语言特点和开发环境 MATLAB 作为一种科学计算的高级语言之所以受欢迎,就是因为它有 丰富的函数资源和工具箱资源,编程人员可以根据自己的需要选择函数,而无 需再去编写大量繁琐的程序代码,从而减轻了编程人员的工作负担。被称为第 四代编程语言的 MATLAB 最大的特点就是简洁开放的程序代码和直观实用的开发 环境。具体地说 MATLAB 主要有以下特点: (1)库函数资源丰富 (2)语言精炼,代码灵活 (3)运算符多而灵活 (4)面向对象控制功能优良,使界面编程更方便、自由。 (5)程序设计自由 (6)图形功能强大 (7)程序的兼容性好 (8)源代码开放 (9)形形色色的工具箱 2 2课程设计内容课程设计内容 2.12.1 已知 t=linspace(0,2*pi,6),求 t 的正弦和正弦的绝对值。 2.1.12.1.1 理论分析理论分析 该函数 linspace()为赋值向量函数,还要用到简单的正弦 sin() 和绝对值 abs()函数。 2.1.22.1.2 程序代码程序代码 t = linspace(0,2*pi,6); %产生 6 维的从 0 到 2*pi 等分行向量 sin(t) %求 t 的正弦值 abs(sin(t) %求 sin(t)的的绝对值 2.1.32.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.42.1.4 总结总结 在 matlab 中乘号不能不写,也不能写成 。只能写成* 。 2.22.2 制函数制函数在在时的曲线。时的曲线。 x xey 10 x 2.2.12.2.1 理论分析理论分析: 这是一个简单的函数,但要了解该函数用程序代码书写的正确和规范,以 及了解绘制二维曲线的函数。 2.2.22.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.32.2.3 程序运行结果程序运行结果 2.2.42.2.4 总结:总结: 在 matlab 中两数之间应该用*符号,不能省略,而且注意如果是进行向 量的运算得用.*运算。 2.32.3 已知已知 a=1,3,0;2,0,1;4,6,5,a=1,3,0;2,0,1;4,6,5, a1=logical(1a1=logical(1 0 0 1),1), a2=logical(1a2=logical(1 1 1 0),b=a1,0),b=a1,求求 a(a1,a2)a(a1,a2)和和 a(b)a(b)。 2.3.12.3.1 理论分析:理论分析: 注意矩阵的赋值以及各种运算 2.3.22.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.32.3.3 程序运行结果程序运行结果 ans = 1 3 4 6 ans = 2 4 3 6 5 2.3.42.3.4 总结总结 在 matlab 中矩阵的形式各种各样,还有各种赋值形式,我们要了解矩阵的 各种形式以及运算 2.42.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:5 L=abs(A)4 islogical(L) X=A(L) (3) A=1:5;6:10 pow2(A) (4) A=zeros(3,2) A(:)=1:6 A=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.12.4.1 理论分析:理论分析: 该大题是让我们练习编写代码,观察执行结果,根据结果去了解各个函数的 功能及用法,所以我们必须熟练了解一些常用函数的用法。 2.4.1.22.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.32.4.1.3 程序运行结果程序运行结果 2.4.2.22.4.2.2 程序代码程序代码 A = zeros(2,5) %生成一个 25 的全 0 矩阵 A(:) = -4:5 %将 A 矩阵赋值 L = abs(A) 4 %将 A 中绝对值与 4 比较后的逻辑值矩阵 islogical(L) %求 L 的逻辑值 X = A(L) %求出 L 中逻辑值为 1 的那个元素对应 A 的值 2.4.2.32.4.2.3 程序运行结果程序运行结果 A = -4 -2 0 2 4 -3 -1 1 3 5 L = 0 0 0 0 0 0 0 0 0 1 ans = 1 X = 2.4.3.22.4.3.2 程序代码程序代码 A = 1:5;6:10 %生成一个二维数组 pow2(A) %求该数组的每个元素的平方值 2.4.3.32.4.3.3 程序运行结果程序运行结果 A = 1 2 3 4 5 6 7 8 9 10 ans = 2 4 8 16 32 64 128 256 512 1024 2.4.4.22.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.32.4.4.3 程序运行结果程序运行结果 A = 0 0 0 0 0 0 A = 1 4 2 5 3 6 A = 1.0000 + 1.0000i 4.0000 + 4.0000i 2.0000 + 2.0000i 5.0000 + 5.0000i 3.0000 + 3.0000i 6.0000 + 6.0000i A1 = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i 6.0000 + 6.0000i B1 = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i 4.0000 - 4.0000i 5.0000 - 5.0000i 6.0000 - 6.0000i 2.4.5.22.4.5.2 程序代码程序代码 A = ones(2,3) %生成一个 23 的全为 1 的矩阵 B = ones(2) %生成一个 22 的全为 1 的方阵 C = eye(4) %生成一个 4 阶单位矩阵 D = diag(C) %取 C 矩阵中的对角元素作为列向量 E = repmat(C,1,3) %将 C 矩阵复制为 13 块的矩阵 2.4.5.32.4.5.3 程序运行结果程序运行结果 A = 1 1 1 1 1 1 B = 1 1 1 1 C = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 D = 1 1 1 1 E = 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 2.4.42.4.4 总结:总结: 在该程序编程题中,有很多函数,要注意他们的用法以及他们之间的联系, 比如 A(:) = -4 : 5,是给矩阵数组赋值,在之前 zeros()是确定 A 的矩阵形 式,所以赋值是应与 A 数组矩阵有相同多的元素个数,本来原题中是 zeros(3,5),但运行时却有错误,是因为 zeros(3,5)赋给 A,A 是 35 矩阵 共有 15 个元素,而后来赋值时又只赋给 -4:5 只有 10 个元素所以就出错了; 当改成 zeros(2,5)就可以了。还有各种其他函数的功能和用法。 2.52.5 计算计算在在 x=0.1x=0.1 与与 1010 处的值。处的值。101 . 02 35 xxy 2.5.12.5.1 理论分析:理论分析: 该题是简单的二元方程带值求解问题,只需用 matlab 编写出该方程的表达 式,带值即可求解。 2.5.22.5.2 程序代码程序代码 x = 0.1; %将 x 初始化为 0.1 y = 2*x5+0.1*x3-10; %y 关于 x 的表达式 y %求当 x=0.1 时 y 的值 x = 10; %将 x 赋值为 10 y = 2*x5+0.1*x3-10; %y 关于 x 的表达式 y %求当 x=10 时 y 的值 2.5.32.5.3 程序运行结果程序运行结果 y = -9.9999 y = 200090 2.5.42.5.4 总结:总结: 在写出表达式之前一定要定义出表达式中的变量 2.62.6 求函数求函数, , n n=100=100 的值的值 333 1 3 1 2 1 1 n 2.6.12.6.1 理论分析理论分析: 该题是一道用循环函数编写的数学题 2.6.22.6.2 程序代码程序代码 s = 0; %为 s 变量赋初值为 0 for i = 1:100 %循环函数,从 1 到 100 s = s+1/i3; %s 的累加求和表达式 end s %求 s 的值 2.6.32.6.3 程序运行结果程序运行结果 s = 1.2020 2.6.42.6.4 总结总结: 在这个题目中应该注意 s = s+1/i3 的通式的表达,这是一个累加表达式, 但是还要注意等比数列的写法。 2.72.7 求求 15001500 个元素的随机数向量个元素的随机数向量 A A 中大于中大于 0.50.5 的元素个数。的元素个数。 2.7.12.7.1 理论分析:理论分析: 该题看起来很简单,其实涉及到了很多方面,产生 1500 个元素得用的随机 函数,依次比较 1500 个数得用到循环函数,还要看是否大于 0.5,所以得用到 if 函数,再其次就是要用到累加表达式。 2.7.22.7.2 程序代码程序代码 A = rand(1500); %随机函数产生 1500 个随机数向量赋给一维数组 A s = 0; %给 s 赋初值 0 for i = 1:1500 %循环语句,从 1 到 1500 循环 1500 次 if A(i)0.5 %判断数组 A 中 1500 是否大于 0.5 s = s+1; %如果大于 0.5,则将 s 的值加 1,累计个数 end end s %求出 s 最后的累计值 2.7.32.7.3 程序运行结果程序运行结果 s = 760 2.7.42.7.4 总结总结 要注意随机函数的用法,以及要分析好函数的嵌套,那个 rand()是随机 函数所以每次产生的数都是不一样的,即每次运行的结果应该是不同的。应该 巧妙运用到 for 函数与 if 函数的嵌套。 2.82.8 用图形表示连续调制波形用图形表示连续调制波形, ,运行下面的程序,运行下面的程序,)9sin()sin(tty 观察结果,并简单说明。观察结果,并简单说明。 t1=(0:11)/11*pi;t1=(0:11)/11*pi; y1=sin(t1).*sin(9*t1);y1=sin(t1).*sin(9*t1); t2=(0:100)/100*pi;t2=(0:100)/100*pi; y2=sin(t2).*sin(9*t2);y2=sin(t2).*sin(9*t2); subplot(2,2,1),plot(t1,y1,r.),axis(0,pi,-subplot(2,2,1),plot(t1,y1,r.),axis(0,pi,- 1,1),title(1,1),title(子图子图 (1)(1) subplot(2,2,2),plot(t2,y2,r.),axis(0,pi,-subplot(2,2,2),plot(t2,y2,r.),axis(0,pi,- 1,1),title(1,1),title(子图子图 (2)(2) subplot(2,2,3),plot(t1,y1,t1,y1,r.)subplot(2,2,3),plot(t1,y1,t1,y1,r.) axis(0,pi,-1,1),title(axis(0,pi,-1,1),title(子图子图 (3)(3) subplot(2,2,4),plot(t2,y2)subplot(2,2,4),plot(t2,y2) axis(0,pi,-1,1),title(axis(0,pi,-1,1),title(子图子图 (4)(4) 2.8.12.8.1 理论分析:理论分析: 这题是用图形表示连续调制函数 y=sin(t)sin(9t)的波形,注意比较几 个图得到不同。 2.8.22.8.2 程序代码程序代码 t1 = (0:11)/11*pi; %生成一个 0 到 1/ 步距为 1/(11*)的 数组 y1 = sin(t1).*sin(9*t1); %y1 关于 t1 的数学表达式 t2 = (0:100)/100*pi; %生成一个 0 到 1/ 步距为 1/(100*)的 数组 y2 = sin(t2).*sin(9*t2); %y2 关于 t2 的数学表达式 subplot(2,2,1),plot(t1,y1,r.),axis(0,pi,-1,1),title(子图(1)) %指 定分成一个图到指定位置,以 r 的格式画出 t1,y1 点图形,x 轴从 0 到 ,y 轴-1 到 1,标记为子图(1) subplot(2,2,2),plot(t2,y2,r.),axis(0,pi,-1,1),title(子图(2)) %指 定分成一个图到指定位置,以 r 的格式画出 t2,y2 点图形,x 轴从 0 到 ,y 轴-1 到 1,标记为子图(2) subplot(2,2,3),plot(t1,y1,t1,y1,r.) axis(0,pi,-1,1),title(子图(3)) %指定分成一个图到 指定位置,以 r 的格式画出 t1,y1 连线的折线图形,x 轴从 0 到 ,y 轴-1 到 1,标记为子图(3) subplot(2,2,4),plot(t2,y2) axis(0,pi,-1,1),title(子图(4)) %指定分成一个图到 指定位置,以 r 的格式画出 t2,y2 默认的曲线图形,x 轴从 0 到 ,y 轴-1 到 1,标记为子图(4) 2.8.42.8.4 总结:总结: 在这几个图中,子图(1)描写函数的能力最差,子图(3)也有较大的失真, 因为数据太少。对于离散数据,Plot 指令默认处理方法是:自动地把这些离散 点用直线连接,使之成为连续曲线。Subplot 是指定几号子图。Axis 设置平面 轴的范围、坐标分割线。 2.92.9 已知方程组已知方程组,用矩阵除法来解线性方程组。,用矩阵除法来解线性方程组。 123 123 123 3xx2x9 -5xx +3x5 xx4x8 2.9.12.9.1 理论分析:理论分析: 本题是运用矩阵法来求解线性方程组,在 matlab 中有很简单实用的方法求 解线性方程组 2.9.22.9.2 程序代码程序代码 A = sym(3,-1,2;-5,1,3;1,-1,4); %将方程组的各个元素的系数 定义为符号数组 b = sym(9;5;8); %将方程组等号后的值定义为 符号列向量 X = Ab %解出方程组 2.9.42.9.4 总结:总结: 将各个方程组的各个元素的的系数赋给 A,用到方程组的符号解,矩阵计 算是求解线性方程组最简便有效的方法。用 sym()符号函数,注意 b 要用 sym(9;5;8) ,不能用 sym(9,5,8) 。 2.102.10 已知已知,其中,其中 t t 的范围是的范围是00 1010,计算,计算 y y 的微分和的微分和 -1 ye cos(t) 积分并给出曲线图。积分并给出曲线图。 2.10.12.10.1 理论分析:理论分析: 这是一个求积分和微分的题,以及也涉及到画图函数。有各种不同的画图 函数,注意选择方便的。 2.10.22.10.2 程序代码以及结果:程序代码以及结果: syms t,y = exp(-1)*cos(t); %定义符号变量 df = diff(y,t) %将符号 t 视作变量求 y 对 t 的微分 jf = int(y,t) %将符号 t 作为变量求 y 对 t 的积分 subplot(2,1,1),ezplot(df,0,10) %在分成后的指定地方绘制微分在 0 到 10 之间的曲线图 subplot(2,1,2),ezplot(jf,0,10) %在分成后的指定地方绘制积分在 0 到 10 之间的曲线图 2.10.32.10.3 程序运行结果程序运行结果 2.10.42.10.4 总结总结 要了解积分和微分函数的运用,该题用到了符号积分和符号微分,对 ezplot()画图函数的运用; 3 心得体会 通过这次 MATLAB 的学习,我对 MATLAB 有了一个基础的认识,matlab 是一 个可以完成各种精确计算和数据处理的、可视化的、强大的计算工具。它集图 示和精确计算于一身,在应用数学、物理、化工、机电工程、医药、金融和其 他需要进行复杂数值计算的领域得到了广泛应用。MATLAB 是一个高级的矩阵/ 阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程的 特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一 个较大的复杂程序(M 文件)后再一起运行。 在这短短的一周内从开始的一头雾水,到自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论