Matlab课设

时间:2019-05-12 12:57:10下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Matlab课设》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Matlab课设》。

第一篇:Matlab课设

武汉理工大学《Matlab课程设计》课程设计说明书

目录

摘要.............................................................................................2

一、Matlab运算与应用............................................................3 1.1..........................................................................................3 1.2..........................................................................................3

二、Matlab运算与应用设计题目分析....................................4 2.1..........................................................................................4 2.2..........................................................................................5 2.3..........................................................................................6 2.4..........................................................................................7 2.5........................................................................................13 2.6........................................................................................14 2.7........................................................................................15 2.8........................................................................................17 2.9........................................................................................19 2.10......................................................................................22

三、matlab课程设计心得体会..............................................23 参考文献...................................................................................23

武汉理工大学《Matlab课程设计》课程设计说明书

摘要

MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

Matlab和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。Matlab可以经行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

本次课程设计主要通过学习了解Matlab,熟悉Matlab界面、进行简单操作,并运用此款软件完成安排的相关题目。

关键字:Matlab、课程设计、矩阵实验室

武汉理工大学《Matlab课程设计》课程设计说明书

一、Matlab运算与应用

1.1理论分析

Matlab是MathWorks公司的产品,是一个为科学和工程计算而专门设计的高级交互式放的软件包。Matlab环境集成了图示与精确的数值计算,是一个可以完成各种计算和数据处理可视化的、强有力的、易于使用和理解的工具。Matlab已被证明是为解决数学、物理、化学、工程、医药、金融和其他涉及复杂数值计算的应用领域的一个十分灵活的、便于使用的工具,也是数学、数值分析和工程等课程教学的一个优秀的教育工具。这个程序被世界各地高等学院广泛使用,在工业应用中也很流行,Matlab使用于PC到超级计算机以及大多数诸如PC、Macintosb和UNIX等平台。

Matlab中有大量的命令集和可用函数集,也通称为Matlab M文件,这是应用更加容易。因此,在Matlab中求解问题通常比传统编程快得多,由于是采用自然表示法,因而使代码清晰和自释。因为多数M文件是公开的,因此,易于修改这些函数。

Matlab中有一些命令可以用来控制Matlab语句的执行,如条件语句、循环语句和支持用户交互的命令。Matlab是一种高级的程序设计语言,能帮助用户解决矩阵户或其它问题。

1.2归纳与总结

Matlab的主要特点是:

(1)有高性能数值计算的高级算法,特别适合矩阵代数领域;(2)有大量事先定义的数学函数,并具有用户自定义函数的能力;(3)绘图和显示数据,并具有教育、科学和艺术学的图解和可视化的二维、三 维图;

(4)基于HTML的完全帮助系统;

(5)适合个人应用的强有力的面向矩阵/向量的高级程序设计语言;(6)与用其他语言编写的程序结合和输入输出格式化的能力;

武汉理工大学《Matlab课程设计》课程设计说明书

(7)有在多个应用领域解决难题的工具箱。

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。

二、Matlab运算与应用设计题目分析

2.1已知t=linspace(0,2*pi,6),求t的正弦和正弦的绝对值。

2.1.1理论分析

由题目已知分析知,linspace(a,b,n)为线性分割函数,在a与b之间均匀地产生n个点值,行成n维向量。Matlab中求解正弦的函数为sin(),求取绝对值和复数模值的函数为abs()。

2.1.2程序代码

>> t=linspace(0,2*pi,6)%创建线性间隔向量t,范围从0到2pi,元素 个数为6 >> a=cos(t)%对向量t求得余弦向量a >> b=abs(a)%对余弦向量a求绝对值得绝对值向量b 2.1.3运行结果

a =

1.0000 0.3090-0.8090-0.8090 0.3090 1.0000 b =

1.0000 0.3090 0.8090 0.8090 0.3090 1.0000

武汉理工大学《Matlab课程设计》课程设计说明书

2.1.4题目总结

为了方便给大量元素赋值,Matlab提供了一些基本矩阵,Linspace()就是其中的均分向量函数命令,大部分的Matlab函数都适用于做元素群运算,只有专门的几个除外,那就是*、/、、^运算符和sqrtm、expm、logm三个函数。题目中用到的正弦函数sin()和取绝对值函数abs()均可用于元素群运算,也即其自变量都可以是任意阶的矩阵。

2.2绘制余弦曲线y=cos(x)和指数函数y=x^2曲线。

2.2.1理论分析

本题是画函数的曲线图,可以利用plot,ezplot等命令进行绘图。也可以用funtool命令直接绘制函数图象。由于plot要设置自变量的范围,而ezplot不需要设置,所以本题采用ezplot进行画图。

2.2.2程序代码:

syms x;%声明变量

y1=cos(x);%将cos(s)赋值给y1 y2=x^2;% 将x^2赋值给y2 ezplot(y1);%画函数1图 hold on

grid on %保持图形 %画方格

ezplot(y2)%画函数2图

2.2.3运行结果

武汉理工大学《Matlab课程设计》课程设计说明书

图2.2.3 2.2.4题目总结

ezplot功能简介:

EZPLOT即:Easy to use function plotter。它是一个易用的一元函数绘图函数。特别是在绘制含有符号变量的函数的图像时,ezplot要比plot更方便。因为plot绘制图形时要指定自变量的范围,而ezplot无需数据准备[2],直接绘出图形。要将两个函数绘制到同一个图上要使用hold on 命令。

2.3利用for...end循环语句,求 2+4+6…+100 的值。

2.3.1理论分析

for语句作用是按照预先设定的循环步骤重复执行某语句段, 其语法: for 循环控制变量=存储着该变量依次所取值的一个向量。

循环语句块, 本块重复执行的次数由上方向量的长度决定, 每次执行, 循

武汉理工大学《Matlab课程设计》课程设计说明书

环控制变量依次取该向量中的值.end

2.3.2程序代码

sum=0;%赋初值sum为0

for i=2:2:100 %变量i变化范围为2到100,以2步进 sum=sum + i;%累加求和 end %结束for循环

2.3.3运行结果

>> sum sum =

2550 2.3.4题目总结

matlab的for 循环语句有其独有的特点, 它使用一个向量来控制循环, 循环次数由向量的长度来决定, 而每次循环都依次从向量中取值.这使得Matlab循环更灵活多样, 其循环变量取值可以不按照特定的规律;但是另一方面, Matlab 的for循环也有独特的限制, 当次循环中改变循环变量赋值, 不会代入下次循环, 所以除非在其中用break提前退出, Matlab循环的次数是预先定好的.举个例子: for a=1:2:7 , 将循环4次, a的取值依次是1, 3, 5, 7.2.4分析下面每条指令的功能并运行,观察执行结果。

(1)X=0:0.25:3;Y=X.*exp(-X);plot(X,Y),xlabel(‘x’),武汉理工大学《Matlab课程设计》课程设计说明书

ylabel(‘y’),title(‘y=x*exp(-x)’);

(2)A=zeros(3,5)A(:)=-4:5 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程序分析

 X=0:0.25:3;%变量x的取值范围为0 ~3,以0.25增加 Y=X.*exp(-X);%函数y=xex的表达式

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

%绘制y=xex的图线,横坐标为x,纵坐标为y,标题为

y=x*exp(-x) A=zeros(3,5)%创建一个3*5的零矩阵A A(:)=-4:5 %为矩阵A赋值,得到列向量范围为-4到5,步进为1 L=abs(A)>4 %判断矩阵A的绝对值是否大于4

武汉理工大学《Matlab课程设计》课程设计说明书

islogical(L)%判断L是否为逻辑值

X=A(L)%X为逻辑数组L对应为1的位置的数据为列向量  A=[1:5;6:10] %创建一个2*5的矩阵A,范围为1到10,步进为1 pow2(A)%返回数组X,依次计算A中元素以2为底的幂  A=zeros(3,2)%创建一个3*2的零矩阵 A(:)=1:6 %为矩阵A赋值,范围为1到6,步进为1 A=A*(1+i)%将矩阵A中的每一个元素乘以(1+i)A1=A.' %对A进行数组转置生成矩阵A1 B1=A' %对A进行矩阵转置生成矩阵B1  A=ones(2,3)%创建一个2*3的1矩阵A B=ones(2)%创建一个2*2的1矩阵B C=eye(4)%创建一个4*4的单位矩阵C D=diag(C)%获取单位矩阵C的对角线元素矩阵D E=repmat(C,1,3)%将矩阵C生成为1*3的新矩阵E

2.4.2运行结果

2.4.2.1程序运行结果一

图2.4.2.1

2.4.2.2程序运行结果二

A =

武汉理工大学《Matlab课程设计》课程设计说明书

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

A =

-4-1 2 5 8-3 0 3 6 9-2 1 4 7 10

L =

0 0 0 1 1 0 0 0 1 1 0 0 0 1 1

ans = 1

X = 5 6

武汉理工大学《Matlab课程设计》课程设计说明书

8 9 10

2.4.2.3程序运行结果三

>> pow2(A)

ans =

64 128 256 512 1024 2.4.2.4程序运行结果四

>> A1=A.'

A1 =

0 + 2.0000i 0 + 4.0000i 0 + 6.0000i

0 + 8.0000i 0 +10.0000i 0 +12.0000i >> B1=A'

B1 =

04.0000i 08.0000i 0-10.0000i 0-12.0000i 11

武汉理工大学《Matlab课程设计》课程设计说明书

2.4.2.5程序运行结果五

>> A=ones(2,3)A =

1 1 1 1 1 >> B=ones(2)B =

1 1 1 >> C=eye(4)C =

0 0 0

0 1 0 0

0 0 1 0 0 0 0 1 >> D=diag(C)D =

1

武汉理工大学《Matlab课程设计》课程设计说明书

>> E=repmat(C,1,3)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.4.3题目总结

对于实数矩阵,矩阵转置和数组矩阵计算结果是一样的,但是对于复数矩阵,数组转置和矩阵转置的计算结果不一致。所以,对于数组转置运算也被称为非共轭转置,矩阵转置运算则被称为共轭矩阵。数组的运算是指数组对应元素之间的运算,也称点运算。

2.5计算多项式p(x)= x3+15x2+8x在x=3和x=0:1:8时的值。

2.5.1理论分析

由题目已知的条件分析可知是运用MATLAB计算多项式。这里运用到的是polyval()命令。通过polyval()命令可以快速的计算出在相应值下的多项式的值。

2.5.2程序代码

x=3;y= x^3+15.*x^2+8.*x 式

%赋初值3给x %写出函数表达

武汉理工大学《Matlab课程设计》课程设计说明书

 clear all %清除所有变量 >> syms x;%声明变量x >> y=x^3+15.*x^2+8.*x;%写出函数表达式

>> x=0:1:8;%生成一个0到8的数组,每相邻两数间间隔为1 >> p=[1 15 8];%将函数表达式的系数放在数组P中 >> polyval(p,x)%用polyval函数求得表达式的值

2.5.3运行结果

X=3时

186 X=0:1:8时 y =

2.5.4题目总结

Matlab为用户提供了解决多项式运算的和插值的函数库,ployval()就是其中的多项式求值函数。在表达多项式系数中要把缺少的自变量系数0补充到系数矩阵中。

2.6随机生成一个10000×3的矩阵,并绘制其柱状图

2.6.1理论分析

随机生成矩阵函数可以用rand(M,N),表示随机产生一个M*N的矩阵。柱状绘图函数可以用bar,此函数是在平面内绘制柱状图,如果要绘制立体的,用bar3。

武汉理工大学《Matlab课程设计》课程设计说明书

2.6.2程序代码

arry=rand(10000,3);

%随机生成一个10000*3的矩阵

bar(arry)%bar函数用于绘制柱状图 %画出柱状图

2.6.3运行结果

图2.6.3

2.7利用switch…case编写以下程序:

某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

price<200 无折扣 200price<500 5%折扣 500price<1000 10%折扣 Price1000 15%折扣 输入所售商品的价格,求其实际销售价格。

武汉理工大学《Matlab课程设计》课程设计说明书

2.7.1理论分析

MATLAB语言为解决多分支判断选择提供了switch-case语句。switch-case语句的一般表达形式为: switch〈选择判断量〉 Case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 …… otherwise 判断执行语句

2.7.2程序代码

price = input();

%输入商品价格

switch fix(price/100)%价格除以100后取整 case {0,1} price=price*1;case {2,3,4} price=price*0.95;case {5,6,7,8,9} price=price*0.9;case others price=price*0.85;end 16

武汉理工大学《Matlab课程设计》课程设计说明书

2.7.3运行结果

2.7.4题目总结

与其他的程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。这样就不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。

2.8编程将表达式

10(s3)s(s-6)(s-16)进行部分分式展开

2.8.1理论分析

计算模型

10(s3)s(s-6)(s-16)=k1sk2s6k3s16

武汉理工大学《Matlab课程设计》课程设计说明书

k110(s3)(s6)(s16)10(s3)s(s16)10(s3)s(s6),s=0;k2,s=6;k3,s=16。

2.8.2程序代码

clear,close all;syms x,x=0;syms s;

while x<20 %判断当x<20 时 switch x

case 0

%清除所以变量和关闭所有打开的图像框

k1=10*(x+3)/((x-6)*(x-16));

x=6;

case 6

k2=10*(x+3)/(x*(x-16));

x=16;

case 16

k3=10*(x+3)/(x*(x-6));

x=20;end end

y=k1/s+k2/(s-6)+k3/(s-16);

%将计算出的k1、k2、k3带入表达式

武汉理工大学《Matlab课程设计》课程设计说明书

2.8.3运行结果

2.8.4题目总结

本题主要在于数学运算模型建立和计算表达式的书写,利用while…end语句对其

进行三次循环条件判断并计算三个常数,通过switch…end语句分别给出三个常数的计算表达式,最后再将计算出的三个常数带入到

10(s3)s(s-6)(s-16)=

k1sk2s6k3s16中即可。

2.9已知ye出曲线图-1cos(t),其中t的范围是[0 10],计算y的微分和积分并给2.9.1理论分析

已知函数方程和自变量t的变化范围,对于积分,可以利用函数quad()对确定自变量变化范围进行计算,格式如quad('函数名',初值,终值)所示。对于微分,可以利用函数diff()对确定自变量变化范围进行计算。函数图象可用funtool指令得到。

2.9.2程序代码

2.9.2.1积分运算 yt='exp(-1)*cos(t)'

%写出函数表达式

Ic=quad(yt,0,10,1e-8)%用quad函数求积分 Funtool %进行画图 2.9.2.2微分运算

syms t y

武汉理工大学《Matlab课程设计》课程设计说明书

y=(exp(-1)*cos(t)dydt=diff(y,t)%用diff函数求解微分 funtool %进行画图

2.9.3运行结果

2.9.3.1积分运算

2.10.3.1.1 程序运行结果

Ic =

-0.2001

2.10.3.1.2积分图形

图 2.10.3.1.2 20

武汉理工大学《Matlab课程设计》课程设计说明书

2.9.3.2微分运算

2.10.3.2.1程序运行结果

dydt =

-(****sin(t))/***8 2.10.3.2.2微分图形

图2.10.3。2.2

2.9.4题目总结

绘制函数图像时还可以借助Matlab提供的专门绘制函数图象的指令flot(),格式如flot('函数名',[初值,终值])。

武汉理工大学《Matlab课程设计》课程设计说明书

2.10 用fminbnd求解函数f(x)x1/x5在区间(1,10)上的最小值

2.10.1理论分析

用于求某个给定函数的最小值点。使用方法是: x=fminbnd(func,x1,x2)func是函数句柄,然后x1和x2就是函数的区间,得到的结果就是使func取最小值的x值

当然也可以使用[x,fv]=fminbnd(func,x1,x2)的方式,这个时候fv就是函数 的最小值,即有:fv=f(x)2.10.2程序代码

f=@(x)x-1/x+5;%确定函数 [x,fv]=fminbnd(f,1,10)

%求区间1到10中函数的最小值

2.10.3运行结果

x =

1.0001

fv =

5.0001 2.10.4题目总结

本题主要在于fminbnd函数的使用方法,它有两种方式,一种是 x=fminbnd(func,x1,x2);另一种是[x,fv]=fminbnd(func,x1,x2)。运用时随便选哪种都可以,但是如果在某个区间上是单调的,结果就有点意思了,例如clear

>> f=@(x)x^-2*x-3;

武汉理工大学《Matlab课程设计》课程设计说明书

>> [x,fv]=fminbnd(f,2,3)

x = 2.9999

fv =-2.6667 看样子MATLAB是使用了定长小区间的方式计算的,而且结果也是错误的,这不免

让人对这个函数的可靠性产生怀疑…

三、matlab课程设计心得体会

这次Matlab课程设计使用了Matlab2010版本,虽然对它熟悉不过短短一个月左右时间,但也感受和学习到它的功能强大、可扩展性强和智能化程度高。它提供了丰富的操作指令,还有强大而又简单的作图功能。而且软件本身还提供了演示(demo)和求助(help)的命令,让用户更好的学习到软件的功能。此次课程设计学习到的不仅仅是软件运用操作的知识,还学到了更多的学习方法。为了做好这次的课程设计,我查阅了大量的资料,并上网搜索了很多Matlab程序应用的教程和详解,这个过程使我受益匪浅,发现了很多关于Matlab的论坛和学习网站,网上提供了很多关于Matlab学习的方法及其自学的方法,相信这些论坛和网站对于将来继续学习Matlab及其他方面的知识也都有很大的帮助。

虽然在规定的时间内完成了老师所布置的所有题目,但还是觉得不免有些不足,由于时间的限制,对许多Matlab所运用到的只有仅仅只是有所了解,而并没有完全掌握,甚至可以说是只知其然,而不知其所以然。这是我认识到对于Matlab的学习任务还很艰巨,还有许多知识需要去了解,去深研。

参考文献

【1】陈怀身.吴大正.高西全.Matlab及在电子信息课程中的应用[M].电子工业出版社 【2】朱习军.张宾.刘尊年.隋思连.Matlab信号与图像处理中的应用[M].电子工业出版社 【3】罗建军.Matlab教程[M].电子工业出版社.2005

武汉理工大学《Matlab课程设计》课程设计说明书

【4】陈怀琛.Matlab及其在理工课程中的应用指南.2000 【5】张威.Matlab基础与编程入门.西安电子科技大学出版社

【5】 周开立.MATLAB基础及其应用教程.北京:北京大学出版社,2007.【5】 张智星.MAYLAB程序设计及应用.北京:清华大学出版社,2002.【5】 陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用.北京:电子工业出版社,2006.【5】 张琨.MATLAB 2010

从入门到精通.北京:电子工业出版社,2011.

第二篇:数据结构课设

数据结构课设 大整数计数器 1.问题描述

实现大整数(200位以内的整数)的加、减、乘、除运算。2.设计要求

设计程序实现两个大整数的四则运算,输出这两个大整数的和、差、积、商及余数。

3.数据结构

本课程设计采用顺序串来实现。4.问题分析

由于整数数据存储位数有限,因此引入串的概念,将整型数据用字符串进行存储,利用字符串的一个字符存储大整数的一位数值,然后根据四则运算规则,对相应位依次进行相应运算,同时保存进位,从而实现大整数精确的运算。具体设计思路如下:

(1)计算大整数加法时,采用数学中列竖式的方法,从个位(即字符串的最后一个字符)开始逐位相加,超过或达到10则进位,同时将该位计算结果存到另一个字符串中,直至加完大整数的所有位为止。

(2)计算大整数减法时,首先调用库函数strcmp判断这两个大整数是否相等,如果相等则结果为0,否则用compare函数判断被减数和减数的大小关系,进而确定结果为正数还是负数,然后对齐位依次进行减法,不够减则向前借位,直至求出每一位减法之后的结果。

(3)计算大整数乘法时,首先让乘数的每一位都和被乘数进行乘法运算,两个乘数之积与进位相加作为当前位乘积,求得当前位的同时获取进位值,进而实现大整数的乘法运算。

(4)计算大整数除法时,类似做减法,基本思想是反复做减法,从被除数里最多能减去多少次除数,所求得的次数就是商,剩余不够减的部分则是余数,这样便可计算出大整数除法的商和余数。

需求分析(1)任何一个表达式都是由操作数、运算符和界限符组成的,我们称之为单词.(2)表达式求值首先要符合四则运算规则: ① 先乘除,后加减 ② 从左到右进行运算 ③ 先括号内,后括号外(3)功能实现: ① 若当前单词为数字串,则压入数值栈 ② 若当前单词为运算符并大于运算栈的栈顶符号,则进栈 ③ 若当前单词为运算符并等于运算栈的栈顶符号,去括号,输出 ④ 若当前单词为运算符并小于运算栈的栈顶符号,则进行运算

课程设计的目的 通过课程设计全面掌握《C语言程序设计》关键知识点,掌握C语言中数组、指针、结构体、文件等方面的基本知识。

通过课程设计了解并掌握C语言程序设计的方法,熟悉C程序设计的开发环境及C程序的

调试过程。

培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研有关问题,学会自己分析、解决问题的方法。

课程设计的任务和要求 任务: 编程求出输入的两个正整数之和,这两个正整数的可能达到200位。

要求:

输入:

共有两行,第一行为第1个正整数;第二行为第2个正整数。

输出:

2个正整数之和。

主要参与成员

姓 名 学 号

系 别 班 级 主要作用(分工)

成果形式

设计 软件 作品 其他:

完成情况及以后的拓展设想 通过用C语言编写函数基本实现了大整数相加这个程序,但该程序仍存在一些不足,还可以加上一些语句使程序具有容错功能,并且可以正确计算一个负数和一个正数相加。

课 程 设 计 鉴 定 情 况 表 小组鉴定意见

小组长签名:

年 月 日

指导教师意见

教师签名:

****年**月**日

课程设计成绩 优 良 及格 不及格 教研室意见

年 月 日 备注 《C语言程序设计》课程设计报告书 作者:廖 序 课程设计概述 课程设计名称

大整数相加 任务要求: 编程求出输入的两个正整数之和,这两个正整数的可能达到200位。

输入:

共有两行,第一行为第1个正整数;第二行为第2个正整数。

输出:

2个正整数之和。开发环境: C语言。C语言是目前世界上流行、使用最广泛的高级程序设计语言。1972年,C语言在美国贝尔实验室里问世,后来又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准。

目前,在微机上广泛使用的C语言编译系统有MicrosoftC、Turbo C、Borland C等。这些C语言版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。

C语言的特点: C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。

由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。

此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

参考资料

李铮、叶艳冰、汪德俊,C语言程序设计基础与应用,清华大学出版社,2005 [2]CSDN技术中心

二、概要设计

为了实现大整数相加这个程序,将程序划分为了三个模块: 输入数据。运算。输出结果。

首先定义了子函数Input()来存储用户输入的两个加数,为了满足任意位数的两个大整数相加,在子函数Input()中嵌套调用子函数Init()使sum数组里面存放的数初始化为”0”。

然后定义子函数Long_Add()使两个大整数作加法运算,从后面往前面相加,附带进位。定义子函数Output()实现输出结果。

最后如下图所示,在主函数main中调用Input(),Long_Add(),Output()三个子函数实现程序。

三、详细设计

程序的流程图:

四、调试过程 第一次 测试数据a=***7,b=111111 编译运行后不能输出结果,检查函数后编译正确。再次分析,发现如果直接把a,b,sum定义为unsigned int型的话,计算出来的和的范围只能在0~65535之间,否则就会出现错误。尝试将a,b,sum存放到字符数组中,从个位开始,一位一位相加。

第二次 测试数据a=***7,b=111111 编译运行后仍不能输出结果。分析原因,在用于输出的子函数Output()中,输出数组字符数组sum[]前未确定和的最高非零位。

尝试加入for(i=0;i

第三次 测试数据a=99999919,b=99 编译运行后发现计算出来结果不正确。经过分析,函数中没有对最后

一个进位进行处理。

尝试加入while(carry > 0)语句,再次进行调试。

{ tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} 第四次 测试数据a=99999919,b=99 编译运行后得到正确结果。

第五次 随意输入几组数据进行测试,结果都是正确的。程序得到实现。

五、结论与体会

通过不断的调试、修改,本课程设计最终实现了200位以内的两个大整数相加,但程序还

可以进一步完善,程序中仍存在一些不足之处,比如缺少容错功能,不能准确计算负整数加正整数,等等问题

虽然C语言程序设计在上学期做为我们的必修课已经学习过了,但书到用时方恨少,这次课程设计的学习程序设计中暴露出的我自身的问题更是非常明显。

一开始看到题目认为非常简单,直接将两个数都定义为整型。编写程序并运行后发现并不能达到题目的要求,计算出来的和只能小于等于65535,否则就会出现错误。分析后,将数据作为字符串来处理,用for循环语句从存数的字符数组中一位一位的取数出来,按照数位对齐,从个位开始,按位相加,逢十进一的运算规则进行运算。最后用字符输出函数putchar()输出计算出来的结果。由于程序偏大且较复杂,将程序划分为了输入数据、运算、输出数据三个子程序。数次编译调试后,最终使程序得以实现。

经过三个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,让我能够进一步的掌握和运用C语言来编写程序。要想学好C语言要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处和薄弱环节。

首先,基础掌握不牢固,对于C语言中的许多基本语法尚没有熟练掌握,在设计过程中仍需请教其它同学,查阅课本,设计效率很低。

其次,经典算法掌握不牢。在完成作业的过程中还需查阅书籍和借鉴他人。

再次,程序量过大的时候,头绪理不清。杂乱无章,无系统性,不便调试和阅览,自己也易于出错。

并且对C语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

六、源程序清单 #include #include &l

t;string.h> #define Max 1000 char sum[Max+1];/*和*/ char a[Max],b[Max];/*两个加数*/ int len1,len2;void Input(char a[],char b[]){ int i,len;void Init(char a[]);/*对Init()函数进行声明*/ printf(“Please enter two integer:n”);scanf(“%s %s”,a,b);len1=strlen(a);len2=strlen(b);Init(sum);len=strlen(a);for(i=len-1;i>=0;i--)sum[Max+i-len] = a[i];} void Init(char a[])

{ int i;for(i=0;i

void Long_Add(char sum[],char new[]){ int i,j;int len;int tempsum;int carry = 0;/*进位*/ len = strlen(new);/*从个位开始,按位相加,逢十进一*/ for(i=Max-1,j=len-1;i>=0,j>=0;i--,j--){ tempsum = sum[i]-'0'+new [j]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;} while(carry > 0)/*处理最后一个进位*/ {

tempsum = sum[i]-'0'+carry;sum[i] = tempsum%10+'0';carry = tempsum/10;i--;} return;} void Output(char sum[]){int i,n;/*寻找和的最高非零位*/ for(i=0;i

Long_Add(sum,b);Output(sum);getch();return 0;

第三篇:计算机网络课设

计算机网络应用课程设计

报告

系(院):

计算机科学学院 专业班级: 计科11511 姓

名: 钟灿均 学

号: 201503687 指导教师: 余绍文 设计时间: 2017.6.12-2017.6.23 设计地点: 12教1楼机房

一、课程设计目的和意义

计算机网络课程设计的目的,是为了让我们更深入地掌握计算机网络的核心内容,实现理论与实践相结合。让学生用具体的实践成果,体现对理论知识的掌握程度。有利于学生提高计算机网络的实践能力,加深对计算机网络理论知识的理解。其基本目的是:

1. 培养学生理论联系实际的设计思想,训练综合运用所学的基础理论知识,结合生产实际分析和解决网络应用中问题的能力,从而使基础理论知识得到巩固和加深。2. 学习掌握网络应用工程的一般设计过程和方法。

二、设计题目和要求

1.编写程序,实现系统的基本功能;

2.要有用户界面:要求至少采用文本菜单界面;鼓励采用图形菜单界面; 3.写课程设计报告,内容包括:  封面(参见附录I)

 需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?给出功能模块图和流程图。同时明确规定:输入的形式和输出值的范围;输出的形式;程序所能够达到的功能;测试数据,包括正确的输入及其输出结果和含有错误的输入及其输出结果。 概要设计:包括程序设计组成框图,程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

 详细设计:包括模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等),每个模块的算法设计说明(可以是描述算法的流程图)。其中源程序要按照写程序的规则来编写,结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。 运行结果:包括典型的界面、输入和输出数据等;

 总结:包括课程设计中遇到的问题,解决问题的过程及体会、收获、对课程设计的认识与思考等。

 附录:包括主要程序清单,要有适当的注释,使程序容易阅读。 开发环境:windows 10

 开发工具: vs2008

题目3:基于UDP协议的简易聊天机器人

设计目标:

1.了解Socket通信的原理,在此基础上编写一个聊天程序; 2.理解upd原理;课程设计系统组成及模块功能: 此课程设计实现了基于UDP的客户/服务器通信程序,需要实现以下一些基本功能: 1.客户端连接聊天机器人服务器;

2.消息发送:客户端发送消息给机器人服务器。

3.消息接收:客户端接收到机器人服务器发送给他的消息。4.可以有多个客户端同时连接

5.智能回复功能:根据用户发送的消息内容,稍微有点智能回复。

运行效果:

服务器端和客户端截图

三、设计内容

1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。

2、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。

3、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。

4、UDP传送数据较TCP快速,系统开销也少。

5、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。

从以上UDP协议特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。

1.服务端

1.2.3.4.5.加载协议栈; 创建套接字;

将套接字绑定到一个本地地址和端口bind; 等待接收数据recvfrom;关闭套接字;

2.客户端

1.2.3.4.加载协议栈;

创建套接字socket;

向服务器发送数据sendto;关闭套接字; 3.相关代码显示:(客户端)

int main(int argc, char* argv[]){

system(“@color 0e”);WORD socketVersion = MAKEWORD(2, 2);WSADATA wsaData;if(WSAStartup(socketVersion, &wsaData)!= 0){ } sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = inet_addr(m);int len = sizeof(sin);return 0;以上代码为相关版本信息及热启动的一些操作;;

结构体端口号及相关地址信息以及转化函数,将输入的信息转化为计算机可识别的二进制代码,进行相关构造

char * sendData = new char[255];cout << “主人:”;cin >> sendData;while(strcmp(sendData, “#”)!= 0){

sendto(sclient, sendData, strlen(sendData), 0,(sockaddr *)&sin, len);char recvData[255];int ret = recvfrom(sclient, recvData, 255, 0,(sockaddr *)&sin, &len);if(ret > 0){

} recvData[ret] = 0x00;cout << “机器人:”;printf(recvData);4.相关代码展示:(服务端)

SOCKET serSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if(serSocket == INVALID_SOCKET){

} printf(“socket error!”);return 0;3

if(bind(serSocket,(sockaddr *)&serAddr, sizeof(serAddr))== SOCKET_ERROR){

} sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);char * sendData = new char[255];char recvData[255];while(true){

int ret = recvfrom(serSocket, recvData, 255, 0,(sockaddr *)&remoteAddr, //printf(recvData);if(ret > 0){

} struct Ro { char recv[255];char send[255];recvData[ret] = 0x00;printf(“接受到一个连接:%s rn”, inet_ntoa(remoteAddr.sin_addr));cout << “主人:”;printf(recvData);printf(“bind error!”);closesocket(serSocket);return 0;以上为对套接字的绑定及判断绑定是否成功,以及对于相关信息的初始化

&nAddrLen);}Ro;FILE *fp;fp = fopen(“G:机器人问答机制.txt”, “r”);while(!feof(fp)){

} fscanf(fp, “%s %s”, Ro.recv, Ro.send);if(strcmp(recvData, Ro.recv)== 0){

} else { } strcpy(sendData, Ro.send);break;strcpy(sendData, “对不起,我不知道”);4

fclose(fp);cout << endl;cout << “机器人:” << sendData << endl;sendto(serSocket, sendData, strlen(sendData), 0,(sockaddr *)&remoteAddr, nAddrLen);

四、设计成果以及心得 1.成果

2.心得

通过对课设的相关的操作,加强了对于相关知识的理解,对于知识的应用也得以加强,在课设过程中,聊天机器人制作较为有趣,对于TCP与UDP的通信方式有了进一步的理解和加强,对于socket编程的相关基础也得以进一步的理解和学习。在今后的学习过程中希望可以将所学知识应用于实际,学以致用。而且对于课设中存在的问题和不足,以及通过老师的讲解,对一些算法加以分析和改进,从而不断完善课设内容,对内容的理解得以加深。

指导老师意见:

成绩:

教师签名: 2017年6月23日

第四篇:课设小结

本次课程设计我们小组顺利的完成了锅炉内胆水温与循环水流量串级控制系统。我们通过讨论对过程参数方面的知识有了更加深入的了解。我负责的是传模拟量采集模块。

和以前做过的课程设计一样,经过两周的课程设计和学习巩固过程,我充分认识到理论联系实际能力的重要性。另外还让我知道设计过程中应自始至终持有严谨的科学态度,不能存有一丝的侥幸心理。首先设计中发现自己的理论知识掌握的不牢固。其次就是在设计过程中出现了很多问题,但是自己不会具体情况具体分析。本次工程实践就是利用THJ-4型过程控制实验装置为硬件基础做锅炉内胆水温控制系统实验分析,采用MCGS组态软件在上位机实现显示和控制。通过本次工程实践,来熟悉工业过程控制的控制流程以及其控制原理。

同学的帮助在为期一周的课设候中有至关重要的作用。因为一个人的能力是有限的。在同学的点滴帮助下不断的自我完善,从而达到目的。

我觉得作为一名自动化专业的学生,传感器的课程设计是很有意义的。更重要的是如何把自己平时所学的东西应用到实际中。虽然自己对于这门课懂的并不多,很多基础的东西都还没有很好的掌握,觉得很难,也没有很有效的办法通过自身去理解,但是靠着这一个礼拜的“学习”,在小组同学的帮助和讲解下,渐渐对这门课逐渐产生了些许的兴趣,自己开始主动学习并逐步从基础慢慢开始弄懂它。我认为这个收获应该说是相当大的。觉得课程设计反映的是一个从理论到实际应用的过程,但是更远一点可以联系到以后毕业之后从学校转到踏上社会的一个过程。小组人员的配合﹑相处,以及自身的动脑和努力,都是以后工作中需要的。

第五篇:课设规范

电 子 工 程 学 院 课程设计报告格式及要求

一、封面:单独1页(见样件)

二、摘要、关键词:中文(250~300字)、英文;单独1页

中文摘要前加:“摘要:”,英文摘要前加“Abstract:”。

关键词一般是3-6个,中英文关键词一一对应,中文前冠以“关键词:”,英文前冠以“Key words:”。

三、目录:内容必要对应页码号。目录包括设计总结报告的章节标题、附录的内容所对应的页码。章节标题的排列如下格式进行:

1.........................................................................(第1级)

1.1………………………………………………(第2级)

1.1.1………………………………………(第3级)

(1)……………………………………(第4级)

①……………………………………….(第5级)

a……………………………………….(第6级)

四、正文:正文是设计总结报告的核心。设计总结报告正文的主要内容包含有:系统设计、单元电路设计、软件设计、系统测试、结论等。

字体要求:

设计报告统一用A4纸打印,设计报告正文内容用小四号宋体。报告从正文开始统一编页码。左侧装订。

一级标题:小二号黑体,居中占5行,标题与题目之间空一个汉字的空。二级标题:三号标宋,居中占三行,标题与题目之间空一个汉字的空。三级标题:四号黑体,顶格占两行,标题与题目之间空一个汉字的空。四级标题:小四号粗楷体,顶格占一行,标题与题目之间空一个汉字的空。

标题中的英文字母均采用“Times New Roma”体,字号同标题字号。四级标题下的分级标题的标题字号为五宋。

所有文中图和表要先说明再有图表。图要清晰、并与文中的叙述要一致,对图中内容的说明尽量放在文中。图序、图题(必须有)为小五号宋体,居中排与图的正下方。表序、表题为小五号黑体,居中排于表的正上方;图和表中的文字为六号宋体;表格四周封闭,表跨越时另起表头。

图和表的注释、注脚为六号宋体;数学公式居中排,公式中字母正斜体和大小写前后要统一。

公式另行居中,公式末不加标点,有编号时可靠右侧顶边线;若公式前有文字,例

如、解等,文字顶格写,公式任居中;公式中的外文字母之间、运算符号与各量符号之间应空半个数字的间距;若对公式有说明,可接排,如式中,A-XX(双字线);B-XX;当说明较多时另起行顶格写“式中A-XX”;回行与A对齐写“B-XX”;公式中矩阵要居中且行列上下左右对齐。

物理量及技术术语全文要统一,要采用国际标准。

五、参考文献:参考文献部分应列出在设计过程中参考的主要书籍、刊物、杂志等。参考文献的格式如下:

(1)专著、论文集、学术论文、报告

[序号]主要责任者(.)文献提名[专著([ M ].);论文集([C].);学术论文([ D].);报告([ R].)](.)出版地(:)出版者(,)出版年(.)起止页码(.)

(2)期刊文章

[序号]主要责任者(.)文献提名([ J ].)刊名(,)年(,)卷(期)(:)起止页码(.)

(3)国际、国家标准

[序号]标准编号(,)标准名称([ S ])

六、附录:附录包括元器件明细表、仪器设备清单、电路图图纸、设计的程序清单、系统(作品)使用说明等。

设计要求:单独1页(由指导教师给出)1. 设计报告正文:

一、前言: 总体方案设计:

包括方案比较、方案论证、方案选择(以方框图的形式给出各方案)单元模块设计:

各单元模块功能介绍及电路设计; 电路参数的计算及元器件的选择; 特殊器件的介绍; 各单元模块的联接。软件设计:

① 说明软件设计原理及设计所用工具; 画出软件设计结构图、说明其功能; 画出主要软件设计流程框图。系统调试:

包括系统硬件及软件调试,说明调试方法与调试内容。系统功能、指标参数:

①说明系统能实现的功能;②系统指标参数测试,说明测试方法,要求有测试参数记录表;③系统功能及指标参数分析(与设计要求对比进行)。设计总结:

包括:①对设计的小结;②设计收获体会;③对设计的进一步完善提出意见或建议。

下载Matlab课设word格式文档
下载Matlab课设.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    高频课设资料

    一、课程设计目的 由于高频振动器所产生的高频振动信号的功率很小,不能满足发射机天线对发射机的功率要求,所以在发射之前需要经过功率放大后才能获得足够的功率输出。 本次课......

    操作系统课设

    操作系统课程设计 一实验目的 在多道程序或多任务系统中,系统中同时处于就绪态的进程有若干个,也就是说能运行的进程数远远大于处理机个数。为了使系统中的各进程能有条不紊......

    操作系统课设

    课 程 设 计 报 告 课程名称: 计算机操作系统 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 华 中 科 技 大 学 课 程 设 计 报 告 目 录 1 2 3 实验目......

    课设心得

    课程设计心得 在这学期的期末课设中我们很幸运的接触到了嵌入式,通过历时两天的课程设计,我们对嵌入式虽然说不上熟练,不过也算是已经入门。 通过老师介绍,我们知道当今社会,嵌入......

    ERP课设

    ERP原理与应用 课程设计报告-电器公司ERP系统应用班级:1121808 姓名:丁贤民 学号:201120180827 指导老师:徐玮 日期:2014.6.25 一. 实验时间和地点: 2014.06.25~2014.06.26 二.......

    EDA课设

    EDA课程设计报告 课题名称:智力竞赛抢答器 班级:11电科2班 姓名:代维宽 学号:201114580207 同组人:闻仔逊 指导老师:贾默伊任务书 一、用VHDL运用层次化设计方法设计一个小型数字......

    课设心得

    财务管理专业综合实验心得201123090133邓雨长安大学渭水校区WX23042014.6.25—6.27摘要:本实验主要是通过使用“理财之道”财务软件,进行预算,报表建立与分析,成本分析,销售分析......

    说课设稿

    《》说课设计 一.说教材 《》是义务教育课程标准试验教科书苏教版()年级的一篇课文,主要…… 二.说目标 《语文课程标准》明确指出,语文课程应致力于学生语文素养的形成。根据新......