Matlab.docx
《Matlab.docx》由会员分享,可在线阅读,更多相关《Matlab.docx(26页珍藏版)》请在冰豆网上搜索。
![Matlab.docx](https://file1.bdocx.com/fileroot1/2023-6/28/445faf91-6f07-4b67-9f00-dcee8bf680b0/445faf91-6f07-4b67-9f00-dcee8bf680b01.gif)
Matlab
Matlab应用课程设计任务书
学生姓名:
王兵专业班级:
电信1102班
指导教师:
李达工作单位:
信息工程学院
题目:
Matlab应用第7套综合题
初始条件:
(1)提供实验室机房及其Matlab6.5以上版本软件;
(2)《MATLAB教程》学习。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):
(1)选择一本《MATLAB教程》,认真学习该教程的全部内容,包括基本使用方法、数组运算、矩阵运算、数学运算、程序设计、符号计算、图形绘制、GUI设计等内容;
(2)对该套综合题的10道题,进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表)。
(3)对实验结果进行分析和总结;
(4)要求阅读相关参考文献不少于5篇;
(5)根据课程设计有关规范,按时、独立完成课程设计说明书。
时间安排:
(1)布置课程设计任务,查阅资料,学习《MATLAB教程》十周;
(2)进行编程设计一周;
(3)完成课程设计报告书一周;
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
一前言1
1.1MATLAB简介1
1.2MATLAB的功能1
1.3MATLAB的典型应用1
二设计题目3
三设计内容5
3.1题一5
3.2题二5
3.3题三6
3.4题四7
3.5题五14
3.6题六15
3.7题七15
3.8题八17
3.9题九18
3.10题十19
四课程设计心得22
参考文献23
一前言
1.1MATLAB简介
MATLAB软件由美国MathWorks公司于1984年推出,经过不断的发展和完善,如今己成为覆盖多个学科的国际公认的最优秀的数值计算仿真软件。
MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可在MATLAB中实现。
作为一个跨平台的软件,MATLAB已推出Unix、Windows、Linux和Mac等十多种操作系统下的版本,大大方便了在不同操作系统平台下的研究工作。
MATLAB软件具有很强的开放性和适应性。
在保持内核不变的情况下,MATLAB可以针对不同的应用学科推出相应的工具箱(toolbox),目前己经推出了图象处理工具箱、信号处理工具箱、小波工具箱、神经网络工具箱以及通信工具箱等多个学科的专用工具箱,极大地方便了不同学科的研究工作。
国内已有越来越多的科研和技术人员认识到MATLAB的强大作用,并在不同的领域内使用MATLAB来快速实现科研构想和提高工作效率。
MATLAB提供了20类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按其功能可分为:
图像显示;图像文件I/O;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理;灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换。
1.2MATLAB的功能
1)强大的科学计算机数据处理能力
2)出色的图形处理功能
3)应用广泛的模块集合工具箱
4)实用的程序接口和发布平台
1.3MATLAB的典型应用
1)数据分析
2)数值与符号计算;
3)工程与科学绘图;
4)控制系统设计;
5)航天工业;
6)汽车工业;
7)生物医学工程;
8)语音处理;
9)图像与数字信号处理;
10)财务、金融分析;
11)建模、仿真及样机开发;
12)新算法研究开发;
13)图形用户界面设计。
二设计题目
第7套题:
Matlab应用课程设计7
1.求[100,200]之间第一个能被21整除的整数。
2.绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
3.计算2+4+6...+100的值,当和大于2000时终止计算。
4.分析下面每条指令的功能并运行,观察执行结果。
X=0:
0.25:
3;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
A=zeros(3,5)
A(:
)=-7:
7
L=abs(A)>4
islogical(L)
X=A(L)
A=[1:
5;6:
10]
pow2(A)
A=zeros(3,2)
A(:
)=1:
6
A=A*(1+i)
A1=A.’
B1=A’
A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
5.利用while…end循环结构编程求出1+3+5…+101的值。
6.随机生成一个10000×3的矩阵,并绘制其柱状图。
7.利用switch…case编写以下程序:
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200无折扣
200
price<5005%折扣
500
price<100010%折扣
Price
100015%折扣
输入所售商品的价格,求其实际销售价格。
8.利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
9.已知
,其中t的范围是[010],计算y的微分和积分并给出曲线图。
10.编写程序,用plot(x,y)绘制下图所示曲线。
a)b)
三设计内容
3.1题一
1.求[100,200]之间第一个能被21整除的整数。
分析;要求(100,200)之间第一个能被21整除的整数,首先需要一个循环变量n,使其从100到200按步长为1递增,每增加1就用21去除看能否整除,若不能则继续循环,若能则跳出循环,输出n即为所需整数。
1).程序如下
forn=100:
200%定义n的区间为100到200的for循环语句
ifrem(n,21)~=0%用if语句来判断n除以21的结果是否为0
continue%终止当前循环回到循环体的开头准备执行下一次循环
end%结束if循环
break%跳出for循环
end%结束for循环
n%显示n
2).运行结果为
>>n
n=
105
3.2题二
2.绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。
分析:
绘制曲线用plot函数。
为方便观察两个图像,应适当设置横纵坐标的大小,这需要用到axis([xminxmaxyminymax])函数。
设置其x在(0,2pi),y为(-3,3)较为合适。
1)程序如下
x=0:
pi/30:
2*pi;%产生一个0到2pi的等差数列
y1=cos(x);y2=x.*x;%定义关于y1和y2的函数
plot(x,y1,'-ro',x,y2)%将y1y2的图像以不同的样式绘制出来
axis([0,2*pi,-3,3])%定义x和y的最值
h=legend('cos_x','x.*x',2);%添加两个函数的标注
2)运行结果为
图3-2
3.3题三
3.计算2+4+6...+100的值,当和大于2000时终止计算。
分析:
此题为求偶数的和第一次大于2000时的值,因此要设置累加后的值放在sum里面,用while循环,令m的初值为2步长为2,终值为100.
1)程序如下:
sum=0;%定义sum的初值为0
m=2;%定义m的初值为2
whilesum<=2000%当和小于等于2000时执行循环
sum=sum+m;%求和
m=m+2;%m的值增加2
end
sum%输出m
m%当和大于2000时的第一个m
2)运行结果如下:
sum=
2070
m=
92
3.4题四
4.分析下面每条指令的功能并运行,观察执行结果。
3.4.1
(1)X=0:
0.25:
3;
Y=X.*exp(-X);
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
分析:
此题中需要用到绘制二维图形的基本函数plot,常用形式为plot(x,y1,x,y2)。
并用title(‘y=x*exp(-x)’)为他加上图形标题;以及用xlabel(‘x’)为他加上x轴说明;和用ylabel(‘y’)为他加上y轴说明。
应注意从老师题目中直接复制到matlab窗口后是不能执行的,因为word文档中的“‘”是中文状态下输入的,在matlab中需用英文输入法状态下的“’”来输入才能执行。
1)程序如下:
x=0:
0.25:
3;
y=x.*exp(-x);
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)');
2)运行结果如下:
图3-4-1
3.4.2
(2)A=zeros(3,5)
A(:
)=-7:
7
L=abs(A)>4
islogical(L)
X=A(L)
分析:
A=zeros(3,5)会产生一个3*5阶的全0矩阵A,A(:
)=-7:
7会将矩阵元素从-7到7依次赋值,L=abs(A)>4会标记矩阵A中元素的绝对值大于4的元素,islogical(L)判断L是不是逻辑数,X=A(L)取出A中绝对值大于4的元素组成一个新的矩阵A。
1)程序如下:
A=zeros(3,5)
A(:
)=-7:
7
L=abs(A)>4
islogical(L)
x=A(L)
2)结果如下:
>>
A=
00000
00000
00000
A=
-7-4-125
-6-3036
-5-2147
L=
10001
10001
10001
ans=
1
x=
-7
-6
-5
5
6
7
3.4.3
(3)A=[1:
5;6:
10]
pow2(A)
分析:
A=[1:
5;6:
10]为矩阵的第一行从1到5依次赋值,第二行,从6到10依次赋值,pow2(A)将A按矩阵运算出平方。
1)程序如下:
A=[1:
5;6:
10]
pow2(A)
2)结果如下:
A=
12345
678910
ans=
2481632
641282565121024
A=
12345
678910
ans=
2481632
641282565121024
3.4.4
(4)A=zeros(3,2)
A(:
)=1:
6
A=A*(1+i)
A1=A.’
B1=A’
分析:
A=zeros(3,2)得到一个3*2的全零矩阵。
A(:
)=1:
6将1到6内的整数值赋给A,形成新的矩阵A。
A=A*(1+i)计算A*(1+i),得到新矩阵A。
A1=A.'得到非共轭转置矩阵A1。
B1=A'得到共轭转置矩阵B1。
1)程序如下:
A=zeros(3,2)
A(:
)=1:
6
A=A*(1+i)
A1=A.'
B1=A'
2)运行结果如下:
A=
00
00
00
A=
14
25
36
A=
1.0000+1.0000i4.0000+4.0000i
2.0000+2.0000i5.0000+5.0000i
3.0000+3.0000i6.0000+6.0000i
A1=
1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i
4.0000+4.0000i5.0000+5.0000i6.0000+6.0000i
B1=
1.0000-1.0000i2.0000-2.0000i3.0000-3.0000i
4.0000-4.0000i5.0000-5.0000i6.0000-6.0000i
3.4.5
(5)A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
分析:
A=ones(2,3)得到2*3全1矩阵A。
B=ones
(2)得到全1二阶方阵B。
C=eye(4)得到四阶单位矩阵C。
D=diag(C)提取C的对角矩阵D。
E=repmat(C,1,3)复制矩阵C并在第一行平铺三个。
1)程序如下:
A=ones(2,3)
B=ones
(2)
C=eye(4)
D=diag(C)
E=repmat(C,1,3)
2)结果如下:
A=
111
111
B=
11
11
C=
1000
0100
0010
0001
D=
1
1
1
1
图3-4-1
(老师,由于这个复制粘贴后就没有原来的格式了,就不能显示是一行平铺三个了,所以就截图了)
3.5题五
5.利用while…end循环结构编程求出1+3+5…+101的值。
分析:
用while…end循环结构编程求1+3+5…+101需要一个循环变量k和一个累加变量s,最终得到的s即为求和的值。
1)程序如下:
s=0;%定义s并赋初值0
k=1;%定义k并赋初值1
whilek<102%当k小于102时执行下面的操作
s=s+k;
k=k+2;
end
s%输出m的值
2)结果如下:
s=
2601
>>
3.6题六
6.随机生成一个10000×3的矩阵,并绘制其柱状图。
分析:
生成随即矩阵需要用到函数rand(),绘制柱状图需要用到函数bar()。
1)程序如下:
A=rand(10000,3);
bar(A)
2结果如下
图3-6-1
3.7题七
7.利用switch…case编写以下程序:
某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):
price<200无折扣
200
price<5005%折扣
500
price<100010%折扣
Price
100015%折扣
输入所售商品的价格,求其实际销售价格。
分析:
用switch语句来编写,需要将价格的不同区间对应不同的数字,用fix函数将price/100的结果靠近0取整后,可以使小于200对应情况为【01】,200到500对应情况为【234】,500到1000对应情况为【5789】。
同时为避免用户输入负数这种不可能出现的价格情况,用while语句设置一个循环判断,是用户输入小于0的数字时提示其输入错误,需要重新输入,这样的话剩下的最后一种情况即为价格大于1000的情况,可以用otherwise语句编写。
1)程序如下:
price=input('price');
whileprice<0
disp('请输入大于0的数据')
price=input('price');
end
switchfix(price/100)%取price/100后接近0的数
case{0,1}
rate=0;
case{2,3,4}
rate=5/100;
case{5,6,7,8,9}
rate=10/100;
otherwise
rate=15/100;
end
price=price*(1-rate)%计算商品的价格
2)结果如下:
1)当输入小于0的数据时
-100
ans=
-100
price-100
请输入大于0的数据
2)当输入200到500之间的数据时
price200
price=
190
3)当输入500到1000直接的数据时
price800
price=
720
4)当输入大于1000的数据时
price2000
price=
1700
3.8题八
8.利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
分析:
编写函数文件首先要用到function语句,该程序需要输入半径r一个变量,然后输出周长l与面积s两个变量。
周长计算公式为l=2*pi*r,面积计算公式为s=pi*r*r。
1)程序如下:
function[sl]=circle(r)%声明函数circle
s=pi*r^2;%求面积
l=2*pi*r;%求周长
s
l
end
2)结果如下:
>>circle(0.5);
s=
0.7854
l=
3.1416
>>circle(5);
s=
78.398
l=
31.4159
3.9题九
9.已知
,其中t的范围是[010],计算y的微分和积分并给出曲线图。
分析:
首先需要定义两个变量t和y,将所求函数用y=exp(-1)*cos(t)表示出来,求积分需要用到int()函数,求微分需要用到diff()函数,vpa函数用于控制精度,画图像用ezplot()函数比较简单,只需方程式即可画出图像。
1)程序如下:
symstyabcd%定义变量ty
y=exp(-1)*cos(t)%表达出函数y=exp(-1)*cos(t)
a=int(y,0,10);%求y的积分并赋给a
b=diff(y,0,10);%求y的微分并赋给b
ezplot(y,[0,10])%画出y的图像
c=vpa(a);%控制a的精度后并把其赋给c
d=vpa(b);%控制b的精度后并把其赋给d
c
d
2)运行如下
c=
-.20013418225944862880696669467031
d=
-.36787944117144233402427744294982*cos(t)
图3-9
3.10.题十
10.编写程序,用plot(x,y)绘制下图所示曲线。
3.10.1
分析:
有图像很容易可以求出函数的表达式为y=3*x+1,x取值范围为(0,5),画图像可以用到plot()函数,再用xlabel('x'),ylabel('y')两个语句确定其横纵坐标轴的名称。
1)程序如下:
x=0:
0.001:
5;
y=3*x+1;
plot(x,y);%画出y的曲线
xlabel('x'),ylabel('y');
2)结果如下:
图10-1-1
3.10.2
分析:
容易看出这是两个表达式的图像所形成的图形,分别为y1=x+1和y2=-x+3,可以用plot()函数画出其图形,但要注意的是画出第一个图形后需要用holdon语句将第一个图形锁住,再画第二个图形,否则第二个图形会将第一个图形覆盖,无法得出如题所示图形。
1)程序如下:
x=0:
0.1:
1;
y1=x+1;
y2=-x+3;
plot(x,y1),holdon,plot(x,y2);%画出y1和y2的两条曲线并同时显示
2)结果如下:
图3-10-2
四课程设计心得
Matlab作为一款数学处理软件,其功能是非常强大的,通过对该软件的学习,我有学会了一种方法去解决比较纠结的数学问题。
刚开始我是先找了一本电子工业出版社的《MATLAB及在电子信息工程课程中的应用》这本书,通过对这本书的学习,我对Matlab有了初步的了解,然后又在网上找了些视频,跟着学做了几次就开始自己做了,感觉只要是以认真学Matlab不是很难。
首先,Matlab是针对矩阵的,然后好多的与方程的解有关的问题便迎刃而解,还有就是比较强大的绘图功能,以前在高中的时候只看过书本上做的一些比较复杂的图像,但现在可以自己做感觉还是蛮激动的,Matlab有个很方便的工具,就是它的帮助,遇到什么不懂的问题只要查一下help就能解决了。
在help中输入不理解的函数语句,就会弹出非常详细的解释,当然这是全英文的,不过正好可以锻炼一下我的英文水平。
遇到看不懂的,可以自己把它导入有道里面,一般都能找到翻译,还有些错误不能解决的我就自己还上网XX,越发局的XX是一个非常强大的搜索引擎,上面有好多与Matlab相关的知识,所以说网络是个非常好的学习语言的平台,可以通过网络与其他人交流经验。
通过这次课程设计,我体会到了Matlab的强大功能,其次就是它在我们专业中的用处也是很大的,比如说在信号处理和自动控制上的应用等等,以后我还得深入学习Matlab,并在以后的专业学习中去应用它.
参考文献
[1]唐向宏.MATLAB及在电子信息类课程中的应用.电子工业出版社.2006年
[2]穆尔.MATLAB实用教程(第二版).电子工业出版社.2010年
[3]陈杰.MATLAB宝典(第3版).电子工业出版社.2011年
[4]刘保柱.MATLAB7.0从入门到精通(修订版).人民邮电出版社.2010年
[5]陈怀琛.MATLAB及在电子信息课程中的应用.电子工业出版社.2006年
[6]张琨.MATLAB2010从入门到精通.电子工业出版社.2011年
[7]薛山.MATLAB基础教程.清华大学出版社.2011年
[8]张圣勤.MATLAB7.0使用教程.机械工业出版社.2006年
本科生课程设计成绩评定表
姓名
王兵
性别
男
专业、班级
电子信息工程1102班
课程设计题目:
Matlab应用第7套综合题
课程设计答辩或质疑记录:
1.函数abs是什么意思?
答:
是对一个数取绝对值的意思。
2.在一个坐标里面绘制两个函数怎么区分两个函数?
答:
这个由于在打印后都是黑色的不能进行区分,因此我用了legend函数对
其进行了标注,而且用了不同的样式绘制两个图案。
3.函数islogical是什么意思?
答:
判断输入参数是否是逻辑类型。
True时即为逻辑1,false时即为逻辑0。
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日