小球弹跳仿真讲课教案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

小球弹跳仿真

Matlab仿真技术作品报告

题目:基于MATLAB的小球弹跳仿真

系(院):

专业:

班级:

学号:

姓名:

指导教师:

学年学期: ~ 学年第学期

年月日

设计任务书

摘要matlab的应用领域非常广泛,从基本的线性代数、泛函分析,到应用广泛的信号处理、可控制系统、通信系统,直到神经网络、小波理论等最新技术领域。为了体现matlab这个语言工具的应用,所以以本次课程设计为小小的实例,来体现它的应用价值。本次课程设计思想来源于基础实验课的第一次实验,不过在此基础上提高了难度,综合运用了整个matlab课程中所学到的知识。第一次关于小球弹跳的实验只是把它的轨迹图用绘图方法制作出来,而且物理情景简单,初始速度为0,高度为1,小相当于竖直下落过程,所以让我想到在此基础上深入挖掘,做一个初始速度、初始高度和衰减系数都可以通过输入来确定,可以描绘出小球弹跳的整个动态过程,而这一切正是matlab仿真技术可以解决的问题,也是体现这门课程的主要特色所在。

关键词初始速度、初始高度、衰减系数、动态、simulink、GUI界面、仿真图形

一、绪论

MATLAB语言是一种以矩阵运算为基础的交互式程序语言。它集成度高,使用方便,输入简捷,运算高效,内容丰富,并且很容易有用户自行扩展。与其它计算机语言相比,MATLAB具有以下特点:

(1)、MATLAB是以解释方式工作,输入算是立即得出结果,无需编译,对每条语句解释后立即执行。若有错误也立即作出反应,便于编程者马上改正。这些都大大减轻了编程和调试的工作量。

(2)、变量的多功能性。每个变量代表一个矩阵,可以有mn 个元素;每个元素都可以看做一个复数;矩阵的行数列数无需定义,MATLAB会根据用户输入的数据形式,自动决定一个矩阵的阶数。

(3)、运算符号的多功能性。所有的运算,包括加减乘除、函数运算都对矩阵和复数有效。

(4)、语言规则与笔算式相似。

(5)、强大而简易的作图功能。能根据输入数据自动确定坐标绘图;能规定多种坐标(极坐标、对数坐标等)绘图;能绘制三维坐标中的曲线和曲面;可设置不同的颜色、线型、视角等,如果数据齐全,往往只需要一条命令即可给出相应的图形。

(6)、智能化程度高。绘图时自动选择最佳坐标,以及按输入或输出变元数自动选择算法等;做数值积分时自动按精确度选择步长;自动检测和显示程序错误的能力强,易于调试。、

(7)、功能丰富,可扩展性强。MATLAB软件包括基本部分和专业扩展部分。基本部分包括:矩阵的运算和各种变换,代数和超越方程的求解,数据处理和

傅里叶变换及数值积分等。扩展部分称为工具箱,它实际上是用MATLAB的基本语句编成的各种子程序集,用于解决某一方面的专门问题,或某一领域的新算法,现在已经有控制系统、信号处理、图像处理、系统辨识、模糊集合、神经元网络及小波分析等多个工具箱,并且还在继续发展中。

而对于我们信息工程类专业生,学习本课程,重点介绍信号处理、自动控制和通信仿真三个方面的应用,涉及的课程有高等数学,信号与系统、数字信号处理、自动控制原理、数字通信等。本次课程设计也是在此基础上综合运用所学知识,体现matlab这门语言工具的强大应用功能。

二、作品内容

小球弹跳的具体物理模型是:小球在某一初始高度h处,以某一初始速度竖直上抛或者竖直下落,假设速度方向向上时为正,初始速度为正时小球表现为竖直上抛运动,初速度为负时表现为竖直下落运动,不考虑空气的阻力。但是,由于小球在碰地过程中会有能量损失,所以存在衰减系数k(0

三、作品的具体实现

1、对小球弹跳进行数学建模,以及获得每个时刻小球的位移、速度等数据,需要解决一下问题:

(1)、首先应该考虑怎么获得各个时刻速度与位移对应的数据,时间间隔怎么取,考虑到规模比较小,可以规定每隔dt=0.05s个时间取一个时间点,从0时刻

到25s取500个点,所以限制了初速度和初始高度的范围,如果超过此范围,小球就不会停下来,不能完成整个过程的仿真。

(2)、小球在y>0,即小球在上升或者下降过程中,均表现为加速度为-g(-9.8)的匀变速运动。

代码部分表示为:

v=v0+g*(t-T); %速度

y=h+v0*(t-T)+g*(t-T)^2/2; %位移

(3)、怎样控制小球在落地时改变速度这一瞬时状态。在y<=0时

代码部分表示为:

v0=k*v;

T=t; %求取每次落地时所用时间

h=0;

2、对整个速度、位移数据进行处理,并描绘成动态图像。

主要运用到的命令:

(1)、图形窗的内容保持命令hold

格式:hold on

功能:保持当前图形窗的内容,使后续绘制函数仍可在该图形窗口中完成绘制,完成在一张图中绘制多个图形。

(2)、设置网格线命令grid on

格式:grid on

功能:对当前坐标图加上网格线

(3)、程序暂停命令pause

格式:pause(n)

功能:暂停程序的执行,n秒钟之后继续执行

(4)、设计坐标轴刻度函数axis

格式:axis( [xmin,xmax,ymin,ymax])

功能:对当前二维图形对象的X轴和Y轴进行标定。X轴的刻度范围是[xmin,xmax],Y轴的刻度范围是[ymin,ymax]。

(5)、二维图形绘制命令plot

格式: plot(1,y,'or','MarkerSize',15,'MarkerFace',[1,0,1])

功能:其数据点均用红色圆圈标记,“MarkerSize”表示圆圈的大小为

15,模拟小球。

3、simulink系统模型的搭建

需要的模块Constant, Scope, Integrate,Gain,IC

(1)模块如何在落地时改变初速度值V

我们看选项External reset, 其意义是在外部触发条件下重新计算, 点击小三角形, 打开下拉菜单, 可以看到外部触发条件有none( 没有条件) , rising( 上升时) ,

falling( 下落时) , either( 两者同时) , 我们是选择下落时触发。由于是选择falling 触发, 因此球落地时触发条件起作用, velocity 模块以落地时速度的0.8 倍反向开

始重新积分, 从而实现一次又一次的模拟运动。初速度的设置还需要有IC, Gain 模块, 模块初值为15( 即开始上抛时的初速度) , 以后则在触发条件生效时则将由当时的速度V算出的新速度- 0.8V 重新输入模块velocity 中作为新的初速度

(2)怎样控制在落地时才触发

我们需要打开position( 位置) 模块, limit output( 限制输出) 选项意味着何时产生触发条件, 选项中的upper satuationlimit 为inf 意味着无论上抛多高都不会产生触发

相关文档
最新文档