MATLAB课程设计.docx
《MATLAB课程设计.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
![MATLAB课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/6/509a1f91-91ba-41e3-9a33-05619ed645c7/509a1f91-91ba-41e3-9a33-05619ed645c71.gif)
MATLAB课程设计
课程设计任务书
学生姓名:
**专业班级:
电信****
指导教师:
****工作单位:
信息工程学院
题目:
Matlab运算与应用设计4
初始条件:
1.Matlab6.5以上版本软件;
2.课程设计辅导资料:
“Matlab语言基础及使用入门”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;
3.先修课程:
信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.本课程设计统一技术要求:
研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析总结。
具体设计要求包括:
1初步了解Matlab、熟悉Matlab界面、进行简单操作;
2MATLAB的数值计算:
创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计;
3基本绘图函数:
plot,plot3,mesh,surf等,要求掌握以上绘图函数的用法、简单图形标注、简单颜色设定等;
4使用文本编辑器编辑m文件,函数调用;
5能进行简单的信号处理Matlab编程;
2.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:
1目录;
2与设计题目相关的理论分析、归纳和总结;
3与设计内容相关的原理分析、建模、推导、可行性分析;
4程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;
5课程设计的心得体会(至少500字);
6参考文献;其它必要内容等。
时间安排:
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
一.MATLAB简介……………………………………………………………………(3)
二.具体题目分析…………………………………………………………………(4)
2.1……………………………………………………………………………(4)
2.2……………………………………………………………………………(4)
2.3……………………………………………………………………………(5)
2.4……………………………………………………………………………(6)
2.5……………………………………………………………………………(9)
2.6……………………………………………………………………………(10)
2.7……………………………………………………………………………(10)
2.8……………………………………………………………………………(11)
2.9……………………………………………………………………………(11)
2.10…………………………………………………………………………(12)
三.课程设计得…………………………………………………………………(14)
四.参考文献……………………………………………………………………(15)
五.本科生课程设计成绩评表…………………………………………………(16)
(2)
一.MATLAB的简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB应用
MATLAB产品族可以用来进行以下各种工作:
●数值分析
●数值和符号计算
●工程与科学绘图
●控制系统的设计与仿真
●数字图像处理
●数字信号处理
●通讯系统设计与仿真
●财务与金融工程
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
(3)
二.具体题目分析
2.1算y1=
和y2=
2.1.1理论分析
这是利用matlab处理数值运算的题目。
这其中要用到cos()函数。
2.1.2程序代码
>>y1=5*cos(0.6*pi)/(2+3^0.5)%计算y1的表达式
y1=
-0.4140%y1的计算结果
>>y2=5*cos(0.2*pi)/(3+3^0.5)%计算y2的表达式
y2=
0.8548%y2的计算结果
2.1.3总结
我们注意到matlab中的pi与真正的
有差距,而且数字与因式相乘要使用乘法符号'*'.通过这个计算,我了解到matlab有处理数据计算的功能。
2.2绘制函数
在
时的曲线。
2.2.1理论分析
利用MATLAB软件绘制曲线图。
在这里用到的是plot函数。
熟悉使用plot函数
2.2.2程序代码
x=(0:
0.00001:
1);%x的范围
y=x.*exp(-x).*sin(x);%表达式
plot(x,y)%输出图形
其图形如下:
(4)
2.2.3总结
Plot函数是很好使用的函数。
他可以很方便的画出所需区域的函数图像。
甚至可以很轻松的描绘处函数运算之后以及符合函数的图像。
2.3.用图形表示离散函数
。
2.3.1理论分析
这道题目中还是要用到plot()函数来描点。
其中还用到绝对值的函数abs(),exp()函数。
2.3.2程序代码
>>n=linspace(1,100);
>>y=(abs((n-6).*exp(n))).^(-1);
>>plot(n,y);
得到的图像为:
2.3.3总结
Plot函数是很好使用的函数。
他可以很方便的画出所需区域的函数图像。
甚至可以很轻松的描绘处函数运算之后以及符合函数的图像。
2.4.分析下面每条指令的功能并运行,观察执行结果。
2.4.1分析指令
X=0:
0.25:
3;%产生一组自变量数据
Y=X.*exp(-X);%数组的乘法
plot(X,Y),xlabel(‘x’),ylabel(‘y’),title(‘y=x*exp(-x)’);
%将函数视图划并表明x,y轴和标题
执行结果:
(5)
2.4.2指令分析
A=zeros(4,5)%定义一个4x5的全零矩阵
A(:
)=-4:
15%将元素-4到15按列取出生成4行5列数组
L=abs(A)>4%绝对值大于4的值变为1,小于3的为0
islogical(L)%判断L是不是逻辑数
X=A(L)%取出A中大于1的元素组成一个新矩阵
执行结果:
>>A(:
)=-4:
10
A=
-404812
-315913
-2261014
-1371115
>>L=abs(A)>4
L=
00011
00111
00111
00111
>>islogical(L)
(6)
ans=
1
>>X=A(L)
X=
5
6
7
8
9
10
11
12
13
14
15
2.4.3指令分析
A=[1:
5;6:
10]%生成一个矩阵
pow2(A)%矩阵相应位子的值变成原来的平方
执行结果:
>>A=[1:
5;6:
10]
A=
12345
678910
>>pow2(A)
ans=
2481632
641282565121024
2.4.4指令分析
A=zeros(5,6)%生成一个5X6的全零矩阵
A(:
)=1:
30%将1到30分别赋给矩阵的各元素
A=A*(1+i)%给A矩阵的元素从新赋值
A1=A.’;%A的转置矩阵
B1=A’;%A的共轭转置矩阵
执行结果:
>>A=zeros(5,6)
(6)
A=
000000
000000
000000
000000
000000
>>A(:
)=1:
30
A=
1611162126
2712172227
3813182328
4914192429
51015202530
>>A=A*(1+i)
A=
Columns1through5
1.0000+1.0000i6.0000+6.0000i11.0000+11.0000i16.0000+16.0000i21.0000+21.0000i
2.0000+2.0000i7.0000+7.0000i12.0000+12.0000i17.0000+17.0000i22.0000+22.0000i
3.0000+3.0000i8.0000+8.0000i13.0000+13.0000i18.0000+18.0000i23.0000+23.0000i
4.0000+4.0000i9.0000+9.0000i14.0000+14.0000i19.0000+19.0000i24.0000+24.0000i
5.0000+5.0000i10.0000+10.0000i15.0000+15.0000i20.0000+20.0000i25.0000+25.0000i
Column6
26.0000+26.0000i
27.0000+27.0000i
28.0000+28.0000i
29.0000+29.0000i
30.0000+30.0000i
>>A1=A.';B1=A';
>>A1
(7)
A1=
1.0000+1.0000i2.0000+2.0000i3.0000+3.0000i4.0000+4.0000i5.0000+5.0000i
6.0000+6.0000i7.0000+7.0000i8.0000+8.0000i9.0000+9.0000i10.0000+10.0000i
11.0000+11.0000i12.0000+12.0000i13.0000+13.0000i14.0000+14.0000i15.0000+15.0000i
16.0000+16.0000i17.0000+17.0000i18.0000+18.0000i19.0000+19.0000i20.0000+20.0000i
21.0000+21.0000i22.0000+22.0000i23.0000+23.0000i24.0000+24.0000i25.0000+25.0000i
26.0000+26.0000i27.0000+27.0000i28.0000+28.0000i29.0000+29.0000i30.0000+30.0000i
>>B1
B1=
1.0000-1.0000i2.0000-2.0000i3.0000-3.0000i4.0000-4.0000i5.0000-5.0000i
6.0000-6.0000i7.0000-7.0000i8.0000-8.0000i9.0000-9.0000i10.0000-10.0000i
11.0000-11.0000i12.0000-12.0000i13.0000-13.0000i14.0000-14.0000i15.0000-15.0000i
16.0000-16.0000i17.0000-17.0000i18.0000-18.0000i19.0000-19.0000i20.0000-20.0000i
21.0000-21.0000i22.0000-22.0000i23.0000-23.0000i24.0000-24.0000i25.0000-25.0000i
26.0000-26.0000i27.0000-27.0000i28.0000-28.0000i29.0000-29.0000i30.0000-30.0000i
2.4.5指令分析
A=ones(2,3)%定义一个2X3的全一矩阵
B=ones
(2)%定义一个2X2的全一矩阵
C=eye(4)%生成四行四列的单位矩阵
D=diag(C)%生成C的对角矩阵
E=repmat(C,1,3)%将C矩阵作为一个元素生成一个1行3列的矩阵
执行结果:
>>A=ones(2,3)
A=
(8)
111
111
>>B=ones
(2)
B=
11
11
>>C=eye(4)
C=
1000
0100
0010
0001
>>D=diag(C)
D=
1
1
1
1
>>E=repmat(C,1,3)
>>E=repmat(C,1,3)
E=
100010001000
010001000100
001000100010
000100010001
2.5.计算
在x=0.1与10处的值。
2.5.1理论分析
这道题目是运用MATLAB计算多项式。
这里运用到的是polyval()命令。
通过polyval()命令可以很快的计算出在相应值下的多项式的值。
(9)
2.5.2程序代码
>>p=[200.10-10];
>>polyval(p,0.1);
ans=
-9.9988
>>polyval(p,10)
ans=
20000
2.5.3总结
本题要注意四次项和二次项的系数为零。
2.6.求函数
n=100的值
2.6.1理论分析
本题可用for循环实现函数求值其中循环次数为100次。
2.6.2程序代码
s=0;%函数初值为0
forn=0:
100%for控制循环100次
x=exp(n);
s=s+x;%函数加和
end%结束
s
s=
4.2525e+043
2.6.3总结
For循环可以简单的用来求和,使用的时候要注意使用格式。
for循环控制变量=表达式1:
表达式2:
表达式3
语句
end
2.7.求3000个元素的随机数向量A中大于0.5的元素个数。
2.7.1理论分析
这道题中要用到随机函数rand()。
在生成矩阵后还要用程序控制。
其中还要用到循环语句,和选择语句。
其中用到嵌套循环语句。
2.7.2程序代码
>>A=rand(1,3000);%产生3000个随机数
sum(A>0.5)%对A中大于0.5的数的个数求和
ans=
(10)
1530
2.7.3总结
8.用图形表示连续调制波形
及其包络线,运行下面的程序,观察结果,并简单说明。
8.1简要分析
t=(0:
pi/100:
pi)';%定义t的范围
y1=sin(t)*[1,-1];
y2=sin(t).*sin(9*t);%数组的乘法
t3=pi.*(0:
9)/9;
y3=sin(t3).*sin(9*t3);plot(t,y1,'r:
',t,y2,'b',t3,y3,'bo')%显示波形及其包络线
axis([0,pi,-1,1])
9.计算下列矩阵A的特征之和特征向量。
9.1理论分析
这里是运用matlab中的函数来处理矩阵,从而生成所需要的矩阵。
这里用到的是[X,Lamda]=eig()来球矩阵的特征值和特征向量。
9.2程序代码
>>A=[114;225;336];
[X,Lamda]=eig(A)
X=
(11)
0.39080.86370.7071
0.56050.2007-0.7071
0.7302-0.4623-0.0000
Lamda=
9.908300
0-0.90830
00-0.0000
2.9.3总结
在MATLAB中有很多很方便的函数帮助我们处理数据。
我们要时常注意相关的函数,在以后的数据处理中就显得很轻松了。
2.10.用FFT直接计算x=3sin(2*pi*50*t)+2cos(2*pi*120*t)+w(t)的功率谱。
2.10.1理论分析
用FFT直接计算x=3sin(2*pi*30*t)+3cos(2*pi*140*t)+w(t)的功率谱。
2.10.1理论分析在本题中注意.调用方法X=FFT(x);X=FFT(x,N);x=IFFT(X);x=IFFT(X,N)做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。
在IFFT时已经做了处理。
要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。
2.10.2程序设计
>>clf;
>>fs=100;N=128;%采样频率和数据点数
>>n=0:
N-1;t=n/fs;%时间序列
>>w=rands(1,N);%加入噪音信号
>>x=3*sin(2*pi*30*t)+3*cos(2*pi*140*t)+w;%信号
>>y=fft(x,N);%对信号进行快速
>>mag=abs(y);%求得Fourier变换后的振幅
>>f=n*fs/N;%频率序列
>>subplot(2,2,2),plot(f(1:
N/2),mag(1:
N/2));%绘出随频率变化的振幅
>>xlabel('频率/Hz');ylabel('振幅');title('功率谱');%分别对X,Y轴进行标记
2.10.3运行结果
(12)
2.10.4实验总结
实验总结一般说来利用fft只是对已有数据进行傅里叶变换,而具体应用到画图还要经过处理,如对已知数据x进行fft傅里叶变换只需运行:
y=fft(x);做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。
在IFFT时已经做了处理。
要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。
注意w=rands(1,N);%加入噪音信号。
(13)
三.课程设计心得
正所谓“纸上得来终觉浅,觉知此事要躬行。
”学习任何知识,仅从理论上去求知,而不去实践、探索是不够的。
因此在学期末来临之际,我们迎来了MATLAB课程设计。
通过为期一周半的MATLAB课程设计,我对MATLAB这个仿真软件有了更进一步的认识和了解。
在这一周半时间里,我通过自己摸索,向同学请教,查阅资料,完成了老师教给我们的任务。
这次课程设计,提高自己的基础理论知识、基本动手能力,提高人才培养的基本素质,并帮助我们掌握基本的文献检索和文献阅读的方法,同时提高我们正确地撰写论文的基本能力。
在整个设计过程中我懂得了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。
虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富,使我终身受益。
在没有做课程设计以前,觉得课程设计只是对知识的单纯总结,但是通过这次课程设计发现自己的看法有点太片面,课程设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次课程设计使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次课程设计,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。
希望以后像这样的课程设计在多一点。
(14)
四.参考文献
①张智星.MATLAB程序设计与应用.北京:
清华大学出版社,2002
②陈怀琛.MATLAB及其在理工课程中的应用指南.西安:
西安电子科技大学出版社,1999.10
③肖伟、刘忠.MATLAB程序设计与应用[M].北京:
清华大学出版社2005
④姚东.MATLAB及在电子信息课程中的应用[M].第二版.北京:
北京电子工业出版社,2000
⑤葛哲学等编.MATLAB时频分析技术及其应用.人民邮电出版社.2007年
(15)
本科生课程设计成绩评定表
姓名
性别
男
专业、班级
题目:
答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
2010年1月13日
(16)