M专业基础实践课设Word文件下载.docx
《M专业基础实践课设Word文件下载.docx》由会员分享,可在线阅读,更多相关《M专业基础实践课设Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
4课程设计心得22
参考文献23
1前言
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)图形用户界面设计。
2设计题目
第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)
)=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
100010%折扣
Price
100015%折扣
输入所售商品的价格,求其实际销售价格。
(8).利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
(9).已知
,其中t的范围是[010],计算y的微分和积分并给出曲线图。
(10).编写程序,用plot(x,y)绘制下图所示曲线。
a)b)
3设计内容
3.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题二
绘制余弦曲线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)运行结果为
图1题3.2程序运行结果
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题四
分析下面每条指令的功能并运行,观察执行结果。
3.4.1分析下面指令的功能并运行,观察执行结果。
3
此题中需要用到绘制二维图形的基本函数plot,常用形式为plot(x,y1,x,y2)。
并用title(‘y=x*exp(-x)’)为他加上图形标题;
以及用xlabel(‘x’)为他加上x轴说明;
和用ylabel(‘y’)为他加上y轴说明。
应注意从老师题目中直接复制到matlab窗口后是不能执行的,因为word文档中的“‘”是中文状态下输入的,在matlab中需用英文输入法状态下的“’”来输入才能执行。
1)程序如下:
y=x.*exp(-x);
plot(x,y),xlabel('
x'
),ylabel('
y'
),title('
y=x*exp(-x)'
);
图2题3.4.1运行结果
3.4.2分析下面指令的功能并运行,观察执行结果。
A=zeros(3,5)
分析:
A=zeros(3,5)会产生一个3*5阶的全0矩阵A,A(:
7会将矩阵元素从-7到7依次赋值,L=abs(A)>
4会标记矩阵A中元素的绝对值大于4的元素,islogical(L)判断L是不是逻辑数,X=A(L)取出A中绝对值大于4的元素组成一个新的矩阵A。
A=zeros(3,5)
x=A(L)
2)结果如下:
A=
00000
-7-4-125
-6-3036
-5-2147
L=
10001
ans=
1
x=
-7
-6
-5
5
6
7
3.4.3分析下面指令的功能并运行,观察执行结果。
A=[1:
10]为矩阵的第一行从1到5依次赋值,第二行,从6到10依次赋值,pow2(A)将A按矩阵运算出平方。
12345
678910
2481632
641282565121024
3.4.4分析下面指令的功能并运行,观察执行结果。
A=zeros(3,2)得到一个3*2的全零矩阵。
6将1到6内的整数值赋给A,形成新的矩阵A。
A=A*(1+i)计算A*(1+i),得到新矩阵A。
A1=A.'
得到非共轭转置矩阵A1。
B1=A'
得到共轭转置矩阵B1。
00
14
25
36
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分析下面指令的功能并运行,观察执行结果。
A=ones(2,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并在第一行平铺三个。
111
B=
11
C=
1000
0100
0010
0001
D=
图3题3.4.5运行结果
3.5题五
利用while…end循环结构编程求出1+3+5…+101的值。
用while…end循环结构编程求1+3+5…+101需要一个循环变量k和一个累加变量s,最终得到的s即为求和的值。
s=0;
%定义s并赋初值0
k=1;
%定义k并赋初值1
whilek<
102%当k小于102时执行下面的操作
s=s+k;
k=k+2;
s%输出m的值
s=
2601
3.6题六
随机生成一个10000×
生成随即矩阵需要用到函数rand(),绘制柱状图需要用到函数bar()。
A=rand(10000,3);
bar(A)
2结果如下
图4题3.6运行结果
3.7题七
利用switch…case编写以下程序:
price<
5005%折扣
Price
用switch语句来编写,需要将价格的不同区间对应不同的数字,用fix函数将price/100的结果靠近0取整后,可以使小于200对应情况为(01),200到500对应情况为(234),500到1000对应情况为(5789)。
同时为避免用户输入负数这种不可能出现的价格情况,用while语句设置一个循环判断,是用户输入小于0的数字时提示其输入错误,需要重新输入,这样的话剩下的最后一种情况即为价格大于1000的情况,可以用otherwise语句编写。
price=input('
price'
whileprice<
disp('
请输入大于0的数据'
)
price=input('
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;
price=price*(1-rate)%计算商品的价格
2)结果如下:
1)当输入小于0的数据时
-100
-100
price-100
请输入大于0的数据
2)当输入200到500之间的数据时
price200
price=
190
3)当输入500到1000直接的数据时
price800
720
4)当输入大于1000的数据时
price2000
1700
3.8题八
利用函数调用编写函数文件,求半径r分别为0.5与5时圆的面积与周长。
编写函数文件首先要用到function语句,该程序需要输入半径r一个变量,然后输出周长l与面积s两个变量。
周长计算公式为l=2*pi*r,面积计算公式为s=pi*r*r。
function[sl]=circle(r)%声明函数circle
s=pi*r^2;
%求面积
l=2*pi*r;
%求周长
s
l
end
circle(0.5);
0.7854
l=
3.1416
circle(5);
78.398
31.4159
3.9题九
已知
首先需要定义两个变量t和y,将所求函数用y=exp(-1)*cos(t)表示出来,求积分需要用到int()函数,求微分需要用到diff()函数,vpa函数用于控制精度,画图像用ezplot()函数比较简单,只需方程式即可画出图像。
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=
-.269467031
d=
-.367879441171442334982*cos(t)
图5题3.9运行结果
3.10.题十
编写程序,用plot(x,y)绘制图六、图七所示曲线。
图6图7
3.10.1
有图像很容易可以求出函数的表达式为y=3*x+1,x取值范围为(0,5),画图像可以用到plot()函数,再用xlabel('
)两个语句确定其横纵坐标轴的名称。
0.001:
y=3*x+1;
plot(x,y);
%画出y的曲线
xlabel('
图8题3.10.1运行结果
3.10.2
容易看出这是两个表达式的图像所形成的图形,分别为y1=x+1和y2=-x+3,可以用plot()函数画出其图形,但要注意的是画出第一个图形后需要用holdon语句将第一个图形锁住,再画第二个图形,否则第二个图形会将第一个图形覆盖,无法得出如题所示图形。
0.1:
1;
y1=x+1;
y2=-x+3;
plot(x,y1),holdon,plot(x,y2);
%画出y1和y2的两条曲线并同时显示
图9题3.10.2运行结果
4课程设计心得
Matlab作为一款数学处理软件,其功能是非常强大的,通过对该软件的学习,我有学会了一种方法去解决比较纠结的数学问题。
刚开始我是先找了一本电子工业出版社的《MATLAB及在电子信息工程课程中的应用》这本书,通过对这本书的学习,我对Matlab有了初步的了解,然后又在网上找了些视频,跟着学做了几次就开始自己做了,感觉只要是以认真学Matlab不是很难。
首先,Matlab是针对矩阵的,然后好多的与方程的解有关的问题便迎刃而解,还有就是比较强大的绘图功能,以前在高中的时候只看过书本上做的一些比较复杂的图像,但现在可以自己做感觉还是蛮激动的,Matlab有个很方便的工具,就是它的帮助,遇到什么不懂的问题只要查一下help就能解决了。
在help中输入不理解的函数语句,就会弹出非常详细的解释,当然这是全英文的,不过正好可以锻炼一下我的英文水平。
遇到看不懂的,可以自己把它导入有道里面,一般都能找到翻译,还有些错误不能解决的我就自己还上网XX,越发觉得XX是一个非常强大的搜索引擎,上面有好多与Matlab相关的知识,所以说网络是个非常好的学习语言的平台,可以通过网络与其他人交流经验。
通过这次课程设计,我体会到了Matlab的强大功能,其次就是它在我们专业中的用处也是很大的,比如说在信号处理和自动控制上的应用等等,以后我还得深入学习Matlab,并在以后的专业学习中去应用它.
参考文献
[1]唐向宏.MATLAB及在电子信息类课程中的应用.电子工业出版社.[M]2006
[2]穆尔.MATLAB实用教程(第二版).电子工业出版社.[M]2010
[3]陈杰.MATLAB宝典(第3版).电子工业出版社.[M]2011
[4]刘保柱.MATLAB7.0从入门到精通(修订版).人民邮电出版社.[M]2010
[5]陈怀琛.MATLAB及在电子信息课程中的应用.电子工业出版社.[M]2006
[6]张琨.MATLAB2010从入门到精通.电子工业出版社.[M]2011
[7]薛山.MATLAB基础教程.清华大学出版社.[M]2011
[8]张圣勤.MATLAB7.0使用教程.机械工业出版社.[M]2006
本科生课程设计成绩评定表
姓名
性别
专业、班级
电子信息工程1303班
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日