MATLAB课程设计

时间:2024.4.20

1 MATLAB的简介

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 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。   

2 具体题目分析总结

2.1 计算y1=和y2=

2.1.1 理论分析

  这是利用MATLAB处理数值运算的题目。其中要用到cos( )、sqrt( )等函数。

2.1.2 程序代码与运行结果

>> y1=20*cos(0.5*pi)/(2+sqrt(3))  %计算y1的表达式

y1 =

     3.2814e-016                %y1的计算结果

>> y2=5*cos(0.4*pi)/(4+sqrt(3))     %计算y2的表达式

y2 =

     0.2696                     %y2的计算结果

2.1.3 总结

  MATLAB中的pi与真正的有差距,而且数字与因式相乘要使用乘法符号‘*’,通过这个计算了解到MATLAB的数值计算功能。

2.2 绘制函数时的曲线。

2.2.1 理论分析

 利用MATLAB软件绘制曲线图。在此要用到plot命令及exp( )函数。

2.2.2 程序代码与运行结果

   >> x=0:0.01:1;                %自变量x的范围

>> y=x.*exp(-x);                 %y的表达式

>> plot(x,y,'r');                   %画出图形

>> xlabel('x');                    %横坐标标注 

>> ylabel('x');                    %纵坐标标注

>> title('函数y=e.*exp(-x)')        %标题  

运行结果如图2-1:

图2-1 函数曲线图

2.2.3 总结

 plot命令可以很方便的画出所需区域的函数图像。同时可以用’xlabel’、’ylabel’、’title’等给坐标轴进行标注和给图形添加标题。使用函数时注意运算符是矩阵元素乘法运算符’.*’。

2.3 用图形表示离散函数

2.3.1 理论分析

这道题要用到plot()函数来描点。其中还要用到绝对值函数abs(),绘制坐标网络命令。

2.3.2 程序代码与运行结果

   >> n=0:12;                    %自变量n的范围

>> y=1./abs(n-6);                 %计算相应点的函数值y

Warning: Divide by zero.           %有为0的分母,警告

>> plot(n,y,'r*','MarkerSize',10)      %画出图形,标出各点

>> axis([0,12,0,2])                %确定x,y轴范围

>> grid on                       %画坐标网格

运行结果如图2-2: 

图2-2 离散函数

2.3.3 总结

 描点时出现“Warning: Divide by zero.”,说明除法的分母出现零的情况

2.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:10

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.1 分析、运行及结果

    (1) 其功能是使用plot()函数画函数图

            >> X=0:0.25:3;          %定义向量X及其范围

>> Y=X.*exp(-X);           %函数Y的表达式

>> plot(X,Y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)'); 

%画出函数图,并标注,添加标题

其结果如图2-3:

图2-3 函数y=x*exp(-x)图

(2) 本题考察矩阵的操作

     >> A=zeros(3,5)          %定义一个3x5的全零矩阵

A =

     0     0     0     0     0

     0     0     0     0     0

     0     0     0     0     0

>> A(:)=-4:10                 %将元素-4到10按列赋值给A

 -4    -1     2     5     8

    -3     0     3     6     9

    -2     1     4     7    10

>> L=abs(A)>4               %绝对值大于4的元素变为1,否则为0

L =

 0     0     0     1     1            

     0     0     0     1     1

     0     0     0     1     1

>> islogical(L)            %判断L是不是逻辑数

ans =

          1

>> X=A(L)               %取出A中绝对值大于4的元素

X =

         5

         6

         7

         8

         9

        10

(3) 本题考察指数函数pow2()的使用

     >> A=[1:5;6:10]          %生成一个矩阵

A =

     1     2     3     4     5

     6     7     8     9    10

>> pow2(A)                  %相应元素的值变成以2为底的指数

ans =

           2           4           8          16          32

          64         128         256         512        1024

(4) 本题考察矩阵的乘法和转秩用法

      >> A=zeros(3,2)           %生成一个3x2的全零矩阵

A =

      0     0

      0     0

      0     0

>> A(:)=1:6                    %将1到6按列赋给矩阵的各元素

A =

      1     4

      2     5

      3     6

>> A=A*(1+i)                   %矩阵A各元素乘以(1+i)

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=A.'                      %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

>> B1=A'                      %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

(5) 本题考察使用函数对特殊矩阵的构造

     >> A=ones(2,3)              %定义一个2X3的元素全为1的矩阵

A =

     1     1     1

     1     1     1

>> B=ones(2)                  %定义一个2X2的元素全为1的矩阵

B =

      1     1

      1     1

>> C=eye(4)                   %定义一个4阶单位矩阵

C =

       1     0     0     0

       0     1     0     0

       0     0     1     0

       0     0     0     1

>> D=diag(C)                  %得到矩阵C的主对角元素

D =

       1

       1

       1

       1

>> E=repmat(C,1,3)             %复制矩阵C得到1X3个C的大矩阵

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.5 计算在x=0.1与10处的值。

2.5.1 理论分析

这道题目是运用MATLAB计算多项式。这里运用到的是polyval()函通过polyval()函数可以很快的计算出在相应值下的多项式的值。

2.5.2 程序代码与运行结果

   >> y=[2 0 0.1 0 0 -10]        %用行向量表示多项式

y =

    2.0000     0    0.1000       0      0   -10.0000

>> y1=polyval(y,0.1)           %计算x=0.1时多项式的值

y1 =

   -9.9999

>> y2=polyval(y,10)            %计算x=10时多项式的值

y2 =

      200090

2.5.3 总结

MATLAB采用行向量来表示多项式,将多项式的系数按降幂次序放在行向量中,但要注意多项式中缺少的幂次要用“0”补齐。MATLAB使用函数polyval()来计算多项式的值。

2.6 求函数,n =100的值。

2.6.1 理论分析

本题可使用MATLAB的符号计算功能并运用函数symsum对符号表达式进行求和。

2.6.2 程序代码与运行结果

       >> syms n                 %定义符号变量n

>> s=1/n^3                   % s的表达式

s =

1/n^3

>> s1=symsum(s,n,1,100)       %求n从1到100的s值求和得s1的精确值

s1 =

81473483330743503583074181861672511931518122336172216406894149391331289704097519580221863303145356050828007873151451209887/677811827830924958486563450918440215717341906309145902293321613799502571708280980311029502647691786525566601429540864

>> double(s1)                 %得到s1的双精度型数值

ans =

1.2020

    2.6.3 总结

在计算级数和的过程中,注意要先定义变量,否则将不会得到最终结果。会出现 Undefined function or variable 'n'.需要用syms()将‘n'符号化。注意符号计算过程得到的结果不会出现舍入误差,可用double()函数得到双精度型数据。

2.7 求1500个元素的随机数向量A中大于0.5的元素个数。                   
2.7.1 理论分析

    本题先用矩阵函数rand()产生随机向量,并用循环语句求得符合条件的元素的个数。

2.7.2 程序代码与运行结果

  >> A=rand(1,1500);          %产生1x1500的0-1的随机向量

>> n=0                      %符合条件的元素个数

n =

     0

>> for i=1:1500               %for循环求A中大于0.5的元素个数

if A(i)>0.5

n=n+1;

end

end

>> n                        %输出符合条件元素的个数

n =

    759

2.7.3 总结

for循环中嵌套有if语句,使用时注意“end”的个数,if与end各对应一个“end”。由于rand()函数产生随机数,每次产生的向量都不相同。

2.8 用图形表示连续调制波形,运行下面的程序,观察结果,并简单说明。

t1=(0:11)/11*pi;                                                                               y1=sin(t1).*sin(9*t1);

t2=(0:100)/100*pi;                                                                                        y2=sin(t2).*sin(9*t2);

subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图 (1)')

subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图 (2)')

subplot(2,2,3),plot(t1,y1,t1,y1,'r.')

axis([0,pi,-1,1]),title('子图 (3)')

subplot(2,2,4),plot(t2,y2)

axis([0,pi,-1,1]),title('子图 (4)')

2.8.1 理论分析

本题考察subplot()、plot()及axis()等绘图函数的用法,并使用title()添加标题。

2.8.2 程序代码与运行结果

>>  t1=(0:11)/11*pi;        %定义一组自变量t1,间隔为1/11

y1=sin(t1).*sin(9*t1);           %y1的表达式,数组元素对应相乘

t2=(0:100)/100*pi;             %定义一组自变量t2,间隔为1/100

y2=sin(t2).*sin(9*t2);           %y2的表达式

>> subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图(1)')                            %将窗口分为四个,描点

                            %控制x,y轴的取值范围,添加标题

>> subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图(2)')                            %将窗口分为四个,当前为第2个

                            %将点描到坐标图上

                            %控制x,y轴的取值范围

                            %添加标题

>> subplot(2,2,3),plot(t1,y1,t1,y1,'r.') 

%当前第3个窗口,描点并画线

>> axis([0,pi,-1,1]),title('子图 (3)') 

  %控制x,y轴取值范围,添加标题

>> subplot(2,2,4),plot(t2,y2)     %当前第4个窗口,画线

>> axis([0,pi,-1,1]),title('子图(4)') 

 %控制x,y轴取值范围,添加标题

运行结果如图2-4:

图2-4 连续调制波形

  2.8.3 总结

     subplot()函数可将窗口分为多个,plot()函数有多种绘图方式,可绘制不同的线型、点标和颜色的图形,axis()函数用于控制坐标轴的刻度范围。

2.9 计算下列矩阵A正交阵 。

 

2.9.1 理论分析

 这里是运用matlab中的函数来处理矩阵,从而生成所需要的矩阵。这里所用到的函数为orth()。

2.9.2 程序代码与运行结果

   >> A=[1 1 4;2 2 5;3 3 6]       %定义矩阵A

A =

     1     1     4

     2     2     5

     3     3     6

>> Q=orth(A)                 %求A得正交矩阵Q

Q =

   -0.4080    0.8166

   -0.5633    0.1268

   -0.7185   -0.5631

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=fft(x);X=fft(x,N)。并用plot()画出功率谱。

   2.10.2 程序代码与运行结果

      >> fs=1000;                %采样频率

t=0:1/fs:0.25;                 %时间序列,样本长度0.25s

N=256;                      %元素个数,为2的幂次

x_noise=randn(size(t));          %加入噪音信号

x=3*sin(2*pi*50*t)+2*cos(2*pi*120*t)+x_noise;

 %信号

Y=fft(x,N);                   %对信号进行快速fourier变换

mag=abs(Y);                  %求得Fourier变换后的振幅

f=(0:N/2-1)*fs/N;              %使频率轴从零开始

>> plot(f,mag(1:N/2))          %画出频谱图

>> xlabel('频率/Hz');ylabel('振幅');title('功率谱');

                                %添加标注及标题

    运行结果如图2-5 :

图2-5: x=3sin(2*pi*50*t)+2cos(2*pi*120*t)+w(t)功率谱

    2.10.3 总结

 一般说来利用fft只是对已有数据进行傅里叶变换,而具体应用到画图还要经过处理,如对已知数据x进行fft傅里叶变换只需运行:y=fft(x);注意w=randn( ); %加入噪音信号。

3 课程设计心得 

通过本次课程设计,我了解了MATLAB强大的数值计算功能。初步了解了

MATLAB、熟悉了MATLAB界面,并能进行其计算及绘图操作;能够使用MATLAB创建矩阵、矩阵运算、多项式运算、线性方程组、数值统计;能进行简单的信号处理。

    这是我第一次进行课程设计并撰写课程设计说明书,通过这次课程设计,我了解了课程设计的步骤,并熟悉了课程设计说明书的撰写要求和其工作规范,了解了它的统一书写格式,为以后的其他课程设计及相关的内容打下了基础。

    设计过程中,用到了MATLAB的数值处理运算功能。用到了cos()、sqrt()函数来进行数值处理,使用过程中,了解到MATLAB中可以用pi来表示圆周率,注意MATLAB中的pi与真正的有差距,且数字与因式相乘要使用乘法符号‘*’。另外还有指数函数pow2()的使用,表示以2为底的指数。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,因此用MATLAB来解算问题要比C言处理相同的问题简捷得多。本次课程设计中,我使用的是MATLAB7.0版本,可以使用C语言语句在软件中运行,C语言中的顺序、选择、循环结构都能在MATLAB中得到体现,如设计题中用for循环并嵌套if语句来求符合条件的元素。使用过程中,注意for与if语句各要对应一个“end”,否则无法正常运行而得不到正确的结果。矩阵构造函数rand()可以产生随机向量,且由于rand()函数产生的是随机数,每次产生的向量都是不相同的。

另外,设计过程中用到了MATLAB的绘图功能。MATLAB中有方便的plot()绘图函数,plot()函数可以很方便的画出所需区域的函数图象。而subplot()函数可将窗口分为多个。可用‘xlabel’、‘ylabel’、‘title’等给坐标轴进行标注和给图形添加标题。而函数axis()用于控制坐标轴的刻度范围及显示形式。

MATLAB中有很多方便的函数帮助我们处理数据,要时常注意相关的函数,在以后的数据处理中就显得很轻松了。MATLAB可以进行信号处理,用fft()函数求傅里叶变换,并用绘图功能绘出信号的频谱图。MATLAB用函数polyval()函数来计算多项式的值,且用行向量来表示多项式,将多项式的系数按降幂

次序放在行向量中,其缺少的幂次用“0”补齐。另外syms()函数定义符号变量,double()函数可得到结果的双精度型数据。

通过这次课程设计,我初步掌握了MATLAB这个数值计算及绘图工具的使用,掌握了一项课程学习中强大的工具,为以后更深层次的学习打下了基础。通过这次课程设计,我受益匪浅。

4 参考文献

[1]  张立科,MATLAB7.0从入门到精通,人民邮电出版社,2006

[2]  胡辰浩,MATLAB7.0基础教程,清华大学出版社,2005

 [3]  吴传生,王卫华,曾祥金,经济数学线性代数,高等教育出版社,2009

 [4]  陈怀琛,吴大正,高西全,MATLAB及在电子信息课程中的应用(第3版),电子工业出版社,2008

[5]  穆尔,高会生,刘童娜,李聪聪,MATLAB实用教程,电子工业出版社,2010

5本科生课程设计成绩评表

  本科生课程设计成绩评定表

指导教师签字:

        

更多相关推荐:
财务会计课程设计难点汇总及心得体会

经过三周的艰苦奋斗,财务会计课程设计这门大实验终于告一段落,虽然课程设计的过程很艰辛,但是也收获了不少。在课程设计的过程中,首先,我们知道了如何将自己所学的会计知识融会贯通于实际操作中,锻炼了自身的能力;其次,…

会计课程设计心得

会计课程设计心得有一种“东西”一去不复返,不因人的主观意念而改变。她既给我们留下了美好,留下了期待,也留下了记忆的伤痕,金钱没了可以赚回来,但这个所谓的“东西”是用金钱买不到的,那就是我们每时每刻都在享用的时间…

会计学课程设计总结

xx大学《会计学》实习总结20xx-20xx学年第一学期系别专业班级学生姓名指导教师成绩评定一、实习目的会计学模拟实习是《会计学》的课内实习。主要目的是通过手工模拟实习,使学生能够系统、全面地掌握企业会计核算的…

课程设计心得(会计实训)

课程设计报告10921610325郑皓月本学期在夏季的第三学期,进行了课程设计“财务会计综合实验”实训。财务会计综合实验目的在于提高实际应用水平。在培训过程中,通过做分录,填制凭证到制作账本来巩固技能。通过财务…

基础会计培训心得体会

《基础会计》在线培训心得体会为了学习优秀教师先进的教学方法和教学理念,提高我院教师的教学水平,在学院和系部的安排下,我于20xx年x月~20xx年x月,历时两个月的时间,在教师发展在线接受网络培训,学习了沃健…

工程成本会计课程设计心得

工程成本会计课程设计心得体会学习工程成成本会计已近一学期,在这半年的学习中,不仅对成本会计有了比较系统和科学的认识,并且学到实用的技巧去处理相关方面的问题。本学期的主要学习内容是学习有关工程成本会计的知识,对会…

会计学习心得体会

一、通过基础会计的学习,使我进一步体会到了会计在经济生活中的重要作用。会计工作是经济管理的重要组成部分,在经济发展中发挥着基础作用。建立和实施会计制度规范了单位的会计核算,提供了真实完整会计信息,规范有序的会计…

会计专业网络课程设计

会计专业网络课程设计提要会计网络课程作为高校质量改革的重点部分在高职教学质量改革中扮演着很重要的角色对会计专业网络课程进行教学分析和系统设计将网络课程教学与传统学科课程教学有机结合使它们在新的水平上结合成一个整...

会计课程设计

一模拟实训目的会计综合课程设计是会计学专业的学生必修集中实践的课程之一为了提高我们的会计实务操作水平培养会计业务综合处理能力因此在本学期末安排了为期一个月的会计综合课程设计此次实训突出了综合性完整性超前性和系统...

建大管理会计课程设计3组

全面预算管理体系设计和模拟运行实训指导书3组一实训目的会计模拟实训的基本目标是让学生通过会计模拟实训巩固所学会计理论知识提高实际动手能力以培养学生的创新能力和实践能力本全面预算管理体系设计和模拟运行实训就是要让...

财务会计心得体会

企业财务会计心得体会本书是中等职业教育国家规划会计专业主干课程教材也是财经类专业的基础课程教材在体例结构上每章均有学习目标与知识目标设计了相关链接思考与实践对学有余力的同学给出社会实践的方向旨在提高其动手能力本...

武汉理工财务会计课程设计

武汉理工大学财务会计课程设计说明书手工做账苦乐相随会计模拟手工做帐历时两周在这样原本是暑假的日子我们却经历了一次手工实习的风雨洗礼在这个过程中我经历了其中的苦与乐并让我对未来的工作有了初步的认识1实习目的手工做...

会计课程设计心得体会(23篇)