Bouncing Ball Explorer

Duncan Carlsmith, University of Wisconsin-Madison, Dept. of Physics

Author Profile


Exploration of the sound of a bouncing ball dropped on a hard surface, the sound recorded with a mobile phone or laptop microphone, is the basis for an accessible experiment in elementary mechanics. For one-dimensional motion over a limited range of collision speeds and in the absence of air drag, inelastic energy loss reduces the ball speed in each bounce by a nearly constant fraction, called the coefficient of restitution (COR), which depends upon the constitution of the ball and of surface. The coefficient of restitution is the ratio of speeds in successive bounces and equal to the ratio of successive loft times. 
The MATLAB Live Script Bouncing Ball Acoustic Analysis analyzes several provided audio recordings of bouncing balls and may be used to analyze other such files. It introduces acoustic data processing and several signal analysis techniques (spectral analysis, filtering, and cross-correlation) in finding the bounce times, and examines the validity of the COR model. For light balls, air drag mimics a speed dependence of the COR. The script Bouncing Ping Pong Ball Analysis models this effect. It may also serve as a model for the numerical solution of nonlinear ordinary differential equations encountered in introductory physics, with the added twist of handling boundary event conditions, the bounces.
The scripts may be of interest to students and teachers of computational physics.The results and scripts themselves may be used in various ways in an educational setting.  'Try this' suggestions are included for further exploration and offer one basis for assessments.

Used this activity? Share your experiences and modifications

Learning Goals

In studying and using the Bouncing Ball Acoustic Analysis script, students will encounter the concept of coefficient of restitution (COR) characterizing energy loss in collisions and explore the limitations of that concept empirically, i.e. observe a COR speed dependence. By rapid analysis of provided or student data from repeated experiments with the same conditions and ball, they can get a sense of the reproducibility of results. By using different balls and surfaces (samples provided), students can explore the material dependence of the COR. In studying and using the Bouncing Ball With Drag script, students will learn that the apparent speed dependence for low-mass balls can also result from air drag so is a source of systematic uncertainty in the interpretation of the COR speed dependence for such balls. This script also contains 'Try this" suggestion to help students explore parameters and as a possible basis for assessment.

MATLAB provides the means to examine acoustic data in detail. It also provides advanced data analysis techniques including the bandpass function uses to reduce noise, the xcorr function used to locate pulses in a data stream that match a template, and the findpeaks function used to find the times of the bounces. In experiencing the application of these functions to automation of bounce time location, students may appreciate the general challenge of finding signals embedded in noise, in this case, both reverberation and ambient acoustic noise.

Aside from developing general data analysis technical skills and higher order thinking, students will be initiated into acoustic data manipulation, a quite engaging topic on its own, especially for the musical or music-curious. The opportunity to collect data with their mobile devices promotes self-efficacy.

Context for Use

This activity is appropriate for students of physics in their first semester studying mechanics. The topic concerns collisions but familiarity with kinematics is actually unnecessary. Only elementary math is required to understand and state the concept of COR. However, to follow along with the Live Scripts, the student must be familiar already with elementary coding in MATLAB. The function of each advanced data analysis function is described in elementary terms without mathematics.

Students should be familiar with Live Scripts and how to execute them if required, and basic MATLAB syntax, arrays, and plotting functions, and be prepared to digest online MathWorks function documentation as needed - hyperlinks are provided as new functions are introduced.

This activity can be used as a virtual lab using provided audio files, as a home lab with audio collected in home experiments, or as a hands-on face-to-face lab during which students take mobile phone recordings of balls being dropped and use the scripts as templates for their own data analysis. Executed Live Script pdfs or the figures produced by the scripts could be used in an activity based on the analysis results alone, and would not require students to be in a position to execute the Live Scripts with MATLAB.

Description and Teaching Materials

The materials for this activity are available at the MathWorks File Exchange as Duncan Carlsmith (2022). Bouncing Ball Explorer (, MATLAB Central File Exchange. Retrieved September 5, 2022. Included are two (.mlx) MATLAB Live Scripts which may be previewed under the example tab. The Live Scripts, pdfs of executed versions of these scripts, and several associated audio files may be downloaded as a zip file.

The scripts are self-documenting and editable by MATLAB user. These scripts contain a hyperlinked table of contents, extensive text interleaved with code and plots representing intermediate results, with references at the end. A list of MathWorks toolbox dependences is included at the end of each script for those with a limited license to MathWorks products or those who wish to adapt the scripts to GNU Octave. Those without MATLAB access may avail themselves of the pdfs.

Teaching Notes and Tips

As mentioned in the scripts, in making audio recordings of a bouncing ball, it is best to conduct the experiment out of doors to reduce reverberation noise. The Live Scripts also indicate how to extract audio from videos that students might make (or find on YouTube) of bouncing balls, and a link to video of a bouncing basketball is provide. Creating a video rather than, or in addition to, a audio recording is recommended in order to check if a ball was walking or underwent some unexpected motion during some trial.


The precise assessment will depend upon the goals, student preparation, and time available. At the simplest level focused solely on physics, students should be asked to study the scripts and their results for the provided files and be able to indicate 1) what values of mean COR are measured for various balls, 2) if there is evidence for a speed dependence to the COR, and 3) if so, what the sign of that dependence is. Requiring all provided files be run through the script enables comparisons to be made concerning the reproducibility of the results and the differences in COR for different surfaces and different balls. It is strongly encouraged that students additionally analyze acoustic data they themselves collect, singly or in collaboration. In application to a new data file,  they exercise their ability to import such data and to select a subsample corresponding to a bouncing ball condition. The embedded 'Try this' suggestions may be used to assess if students have understood the script well enough to change analysis operating parameters and draw conclusions from the results.

References and Resources

The Bouncing Ball Acoustic Analysis script contains a link to a phyphox YouTube video in which the phyphox app is used to record a bouncing ball and attempts to deduce the original drop height. The script also provides a reference to a famous textbook on the subject of impact mechanics as a resource for teachers and students. The air drag modeling script contains a reference to detailed information concerning the behavior of a bouncing table tennis ball Requiring students study these resources could be included in the assessable requirements for activity implementation.