专业基础实践任务书
学生姓名:_ __专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 专业基础实践第2套综合题 初始条件:
(1)提供实验室机房及其Matlab6.5以上版本软件; (2)《MATLAB教程》学习。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体
要求):
(1)选择一本《MATLAB教程》,认真学习该教程的全部内容,包括基本使用方法、数组运算、矩阵运算、数算、程序设计、符号计算、图形绘制、GUI设计等内容;
(2)对该套综合题的10道题,进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表)。 (3)对实验结果进行分析和总结;
(4)要求阅读相关参考文献不少于5篇;
(5)根据课程设计有关规范,按时、完成专业基础实践说明书。
时间安排:
(1)布置课程设计任务,查阅资料,学习《MATLAB教程》 2.5天; (2)进行编程设计 2天; (3)完成专业基础实践报告书 1天; (4)答辩 0.5天;
指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日
目 录
摘要.....................................................Ⅰ 第1章 关于MATLAB........................................1 1.1 MATLAB的简介.......................................1 1.2 MATLAB的功能.......................................1 1.3 MATLAB的典型应用...................................3 第2章 设计题目...........................................4 第3章 设计内容...........................................5 3.1 题一................................................5 3.2 题二................................................5 3.3 题三................................................6 3.4 题四................................................6 3.5 题五...............................................11 3.6 题六...............................................12 3.7题七................................................12 3.8题八................................................12 3.9 题九...............................................13 3.10 题十..............................................14 第4章 心得体会..........................................15 参考文献.................................................17
摘 要
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。
尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。 MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少 MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能 MATLAB的应用领域十分广阔,可应用于数据分析、数值与符号计算、控制系统设计、航天工业、汽车工业、生物医学工程、语音处理、图像与数字信号处理、财务、金融分析、建模、仿真及样机开发、新算法研究开发、图形用户界面设计等领域。
关键字:数据处理 图形处理 广泛应用
Ⅰ
第1章 关于MATLAB
1.1 MATLAB简介
MATLAB软件由美国Math Works公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。
MATLAB软件具有很强的开放性和适应性。在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了图象处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大地方便了不同学科的研究工作。国内已有越来越多的科研和技术人员认识到MATLAB的强大作用,并在不同的领域内使用MATLAB来快速实现科研构想和提高工作效率。
MATLAB提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。这些函数按其功能可分为:图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。
1.2 MATLAB的功能
(1)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简
1
单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数算、数组操作以及建模动态仿真等。
(2)出色的图形处理功能
图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(3)应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(4)实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库以及图形库,将自己的MATLAB程序自动转换为于MATLAB运行的C和C++的代码。允许用户编
2
写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
(5)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。
1.3MATLAB的典型应用
MATLAB的应用领域十分广阔,典型的应用举例如下: (1) 数据分析; (2) 数值与符号计算; (3) 工程与科学绘图; (4) 控制系统设计; (5) 航天工业; (6) 汽车工业; (7) 生物医学工程;
(8) 语音处理;
(9) 图像与数字信号处理; (10) 财务、金融分析; (11) 建模、仿真及样机开发; (12) 新算法研究开发; (13) 图形用户界面设计。
3
第2章 设计题目
专业基础实践课程设计2 1.计算y1=
2sin(0.5)1617(3t)cos(t/5)及其他的包络线y0e(3t),t的取值范围是[0,6]. 2.画出衰减震荡曲线ye3.画出z和y2=
3cos(0.5);
cos2x22y2xy22所表示的三维曲面。x,y的取值范围是[-9, 9]。
4.分析下面每条指令的功能并运行,观察执行结果。
(1) X=0:0.2:2;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);
(2) A=zeros(3,4)
A(:)=-4:7 L=abs(A)>3 islogical(L) X=A(L)
(3) A=randn(2,5)
B=[1:5;6:10] A*B’
(4) A=zeros(3,5)
A(:)=1:15 A=A*(1+i) A1=A.’; B1=A’;
(5) A=ones(3,4)
B=magic(2) C=eye(4) D=diag(C)
E=repmat(C,1,3)
535.计算yx0.1x90在x=0.1与10处的值。 6.求函数1111, n=100的值。 22223n7.求1000个元素的随机数向量A中大于0.5的元素个数。
8.求线性方程组AX=b的根。
0.41560.3206A0.51460.71920.84200.23190.20240.27300.36900.03050.34490.36500.56620.18120.46310.37340.73150.35750.6278, b0.5759
0.05000.42260.63410.94450.74830.07390.83950.580.40580.429.画出y=|1000sin(4x)|+1的y轴为对数图。 10.有如下数据: x y 1 1.00000 1.1 1.23368 1.2 1.55271 1.3 1.99372 1.4 2.61170 利用线性插值方法对其进行插值,得到每隔 0.05 的结果。
4
第3章 设计内容
3.1题一
1.计算y1=2sin(0.5)16和y2=3cos(0.5)17;分析:直接输入进行运行: y1=2*sin(0.5*pi)/(1+sqrt(6));y1 y1= 0.5798 y2=3*cos(0.5*pi)/(1+sqrt(7));y2 y2 =5.0387e-017
3.2题二
cos(t/5)及其他的包络线y0e2.画出衰减震荡曲线ye,t的取值范围是[0,6].
分析:先声明t的范围,写出y、y0关于t的方程,然后运行程序。
(3t)(3t) t=0:0.2:6*pi;
y=exp(-3*t).*cos(t/5); y0=exp(-3*t);
Subplot (2,1,1),plot(t,y); Subplot (2,1,2),plot(t,y0);
5
3.3题三
画出zcos2x22y2xy22所表示的三维曲面。x,y的取值范围是[-9, 9]。
分析:先设置x,y的范围,用mesh函数绘制给定的三维曲面,运行程序。
x=[-9:0.5:9]; y=[-9:0.5:9];
[x,y]=meshgrid(x,y);
z=cos(sqrt(2*x.*x+2*y.*y))./sqrt(x.*x+y.*y); surf(x,y,z);
3.4题四
分析下面每条指令的功能并运行,观察执行结果。
(1)X=0:0.2:2;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’), ylabel(‘y’),title(‘y=x*exp(-x)’);
6
(2)A=zeros(3,4)
A(:)=-4:7 L=abs(A)>3 islogical(L) X=A(L)
(3)A=randn(2,5) B=[1:5;6:10]
A*B’
(4)A=zeros(3,5)
A(:)=1:15 A=A*(1+i) A1=A.’; B1=A’;
(5)A=ones(3,4)
B=magic(2) C=eye(4) D=diag(C) E=repmat(C,1,3)
1) >>X=0:0.2:2; %X取值从0 到2 每隔0.2 取一个数 >> Y=X.*exp(-X); %Y对于X 的表达式,求出X 对应下的Y 值 >> plot(X,Y),xlabel('x'), ylabel('y'),title('y=x*exp(-x)')
7
2) >> A=zeros(3,4) %产生3 x 4 的全零矩阵A
>> A(:)=-4:7 %将-4 到7 依次赋值给A
L=abs(A)>3 %判断A 内各元素绝对值是否大于3,大于返回1,小于返回0,并将返回值构成与A相同行列的矩阵L
>> islogical(L) %判断矩阵L 内是否为逻辑值,是返回1,不是则返回0 ans = 1
>> X=A(L) %将A 对应L 内为真的元素取出来,构成列向量X,即绝对值大于3的值取出
3)>> A=randn(2,5) %产生一个2到5之间的随机数 A =
0.6715 0.7172 0.48 0.7269 0.2939
8
-1.2075 1.6302 1.0347 -0.3034 -0.7873 >> B=[1:5;6:10] B =
1 2 3 4 5 6 7 8 9 10 >> A*B'
ans =
7.9496 22.4415
0.0069 1.8405
4)A=zeros(3,5) %产生3 x 5 的全零矩阵A
A =
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A(:)=1:15 %将1 到15 依次赋值给各元素
A =
1 4 7 10 13 2 5 8 11 14 3 6 9 12 15
A=A*(1+i) %将A 各元素乘以(1+i),成为复数矩阵 A =
1.0000 + 1.0000i 4.0000 + 4.0000i 7.0000 + 7.0000i 10.0000 +10.0000i 13.0000 +13.0000i
2.0000 + 2.0000i 5.0000 + 5.0000i 8.0000 + 8.0000i 11.0000 +11.0000i 14.0000 +14.0000i
3.0000 + 3.0000i 6.0000 + 6.0000i 9.0000 + 9.0000i 12.0000 +12.0000i 15.0000 +15.0000i
>> A1=A.’ %令A1 成为A 的转置非共轭矩阵 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
9
7.0000 + 7.0000i 8.0000 + 8.0000i 9.0000 + 9.0000i 10.0000 +10.0000i 11.0000 +11.0000i 12.0000 +12.0000i 13.0000 +13.0000i 14.0000 +14.0000i 15.0000 +15.0000i
>> B1=A' %令B1 成为A 的转置共轭矩阵
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 7.0000 - 7.0000i 8.0000 - 8.0000i 9.0000 - 9.0000i 10.0000 -10.0000i 11.0000 -11.0000i 12.0000 -12.0000i 13.0000 -13.0000i 14.0000 -14.0000i 15.0000 -15.0000i
5)A=ones(3,4) %产生一个3 x 4 全1 矩阵A
A =
1 1 1 1 1 1 1 1 1 1 1 1
B=magic(2) %产生一个行列为2 的全1 的方阵B B =
1 3 4 2
>> C=eye(4) %产生一个行列为4 单位方阵C
C =
1 0 0 0 0 1 0 0 0 0 1 0
10
0 0 0 1
>> D=diag(C) %将C 的主对角元素取出形成列向量D
D = 1 1 1 1
E=repmat(C,1,3) %将C 看成一个元素,重复C 构成一个1 x 3 的矩阵E
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
3.5题五
计算yx50.1x390在x=0.1与10处的值。 myfhd=@(x)(x^5+0.1*(x^3)-90);myfhd(0.1) ans =
-.9999 >> myfhd(10) ans =
100010
11
3.6 题六
111, n=100的值。 2232n2分析:可以使用for循环进行解决
求函数1>> y=0;
for n=1:100;y=y+1/(n^2); end; y y =
1.6350
3.7 题七
求1000个元素的随机数向量A中大于0.5的元素个数。 >> A=rand(1,1000); a=0;
for n=1:1:1000,if A(1,n)>0.5,a=a+1; end; end; a a = 481
3.8 题八
求线性方程组AX=b的根。
0.41560.23190.20240.32060.36500.5662A0.51460.37340.73150.71920.05000.42260.84200.07390.8395
0.27300.36900.03050.34490.18120.46310.35750.6278, b0.5759
0.63410.94450.74830.580.40580.4212
>> X=A\\b
X = -2.5682
-0.1145 0.04 2.9677 0.3631
3.9 题九
画出y=|1000sin(4x)|+1的y轴为对数图。 >> x=1:0.0001:10; y=abs(1000*sin(4*x))+1;
semilogy(x,y),xlabel('x'),ylabel('log(y)');
13
3.10 题十
有如下数据: x y 1 1.00000 1.1 1.23368 1.2 1.55271 1.3 1.99372 1.4 2.61170 利用线性插值方法对其进行插值,得到每隔 0.05 的结果。
x=[1 1.1 1.2 1.3 1.4]; y=[1.00000 1.23368 1.55271 1.99372 2.61170]; length_of_x=length(x);
scalar_x=[x(1):0.05:x(length_of_x)]; length_of_sx=length(scalar_x); for i=1:length_of_sx
y_liner(i)=interp1(x,y,scalar_x(i),'liner'); end
plot(scalar_x,y_liner),title('linear');
14
第4章 心得体会
在做MATLAB的过程中还是比较艰辛的,由于大多数的教程是英文的,对于英语还是很薄弱,学习起来很吃力。基本上进度比较慢,由于时间比较紧,多是采取跳跃式学习,存在着很多学习漏洞。在学习的过程中,我明白了理论与实践结合的重要性,一个在书上看到觉得很简单的运算在电脑上运行时,很容易出现常识性与粗心的错误,很容易漏掉某些字符,而且简单看书搞不懂的问题在电脑运行之后很容易就搞懂了,对那方面的知识也更深刻。而且在实践之中也很容易产生意想之外的问题,有效地提高了自身解决问题的能力。学习MATLAB是一个枯燥的过程,在装MATLAB这个软件也发生很多小插曲,费了很长的时间,一开始就极大地挫败了自己的信心。由于软件是全英文的,大多数教程也是纯英文的,一时间不知道如何下手。拿到中文材料后,打开电脑学习一下MATLAB软件的一些基本操作后,渐渐对他有了初步的了解,越来越发现他的强大。高效的数值计算及符号计算功能,能使用户从繁杂的数算分析中解脱出来; 具有完备的图形处理功能,实现计算结果和编程的可视化;友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。
使我印象最深刻的是MATLAB强大的图形处理能力。我们只需输入运算的程序与数据,MATLAB就会自动根据所输入的数据完成图形的绘制,为计算过程和结果的可视化提供了极佳的手段。而且MATLAN可以提供如二维图形的绘制命令,三维图形的绘制命令和特殊绘图命令与图形管理命令等,满足各种不同人的需求,使得数据与结果更直观。我们可以根据自身需求自己选择。例如第三题就要求绘制出三维曲面图形,就要用到surf函数,就不能用plot3,不然绘制出来的就成了三维曲线图。
通过这次课设,首先我深刻的感受到英语的重要性,英语过硬可以很好地获得第一手学习资料而不被。其次,MATLAB强大的功能给我留下了极深的印象,其便捷性,实用性和可视性对于各学科有着极大的帮助作用。也迫切的认识到自身对程序设计等方面的不足,对自我能力的提高的急切性。同时MATLAB有效地培养使用者的严谨性。短短的一段时间的学习,只能说对MATLAB有了
15
初步的认识与一些简单的功能运算的认识,今后一定认真好好学习,为自己的专业学习添砖加瓦。
16
参考文献
[1].唐向宏,岳恒立,郑雪峰,MATLAB及在电子信息类课程中的应用,电子工业出版社,2006.
[2].(美)穆尔,高会生,刘童娜,李聪聪,MATLAB实用教程(第二版),电子工业出版社,2010.
[3].陈杰,MATLAB宝典(第3版),电子工业出版社,2011.
[4].刘保柱,苏彦华,张宏林.MATLAB 7.0从入门到精通(修订版),人民邮电出版社,2010.
[5].陈怀琛,吴大正,高西全,MATLAB及在电子信息课程中的应用,电子工业出版社,2006.
[8].MATLAB7.0使用教程/张圣勤编著,机械工业出版社.2006.7
17
本科生课程设计成绩评定表
姓 名 专业、班级 性 别 课程设计题目:专业基础实践课程设计 课程设计答辩或质疑记录: 成绩评定依据: 最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字:
年 月 日
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务