Code covered by the BSD License  

Highlights from
Simulation and Animation of a Quarter-Car Automotive Suspension Model

4.3 | 6 ratings Rate this file 114 Downloads (last 30 days) File Size: 94.9 KB File ID: #35478 Version: 1.0
image thumbnail

Simulation and Animation of a Quarter-Car Automotive Suspension Model


James Allison (view profile)


A standard linear quarter-car model is simulated and then animated.

| Watch this File

File Information

This model was developed for use in teaching modeling, simulation, and optimization in graduate engineering courses. The simulation is particularly useful for demonstrating different simulation designs that are optimized for different applications (e.g., maximum handling capability, maximum comfort, etc.). The model is based on the electric vehicle case study found in this dissertation:

This code was used in the creation of this corresponding video, used for teaching:

Note: this submission does not include code for the multi-objective optimization highlighted in the youtube video.

Required Products MATLAB
MATLAB release MATLAB 7.13 (R2011b)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (14)
15 Nov 2015 Changhong Wang  
13 Mar 2015 James Allison

James Allison (view profile)

Naveen: IRI_737b is a .mat file included with this submission. You need to make sure it is on your path to run this code.

Comment only
07 Mar 2015 NAVEEN KUMAR

Hello Mr, James Allison sir,
it seems some thing missing in this part of the program,
Error using load
Unable to read file IRI_737b: No such file or directory.

Error in Untitled5 (line 43)
load IRI_737b % road profile data

plz can u halp me sir..

Comment only
24 Sep 2013 ben

ben (view profile)

Hello Mr, James Allison

it seems some thing missing in this part of the program, [~, ....

[~,istart] = min(abs(xstart-road_x));
xend = curr_x + fw;
[~,iend] = min(abs(xend-road_x));
xpstart = xstart-curr_x;

can you help please? because i cant run it .. it gives me this error

??? Error: File: plotsusp.m Line: 42 Column: 3
Expression or statement is incorrect--possibly unbalanced (, {, or [.

06 Sep 2013 James Allison

James Allison (view profile)

Saman: Thank you for your interest in the optimization code. I decided not to distribute it because I use it in optimization classes that I teach. You might be interested in this submission:

It includes the optimization code, but is a more complex example.

To answer your other question, f1 is an interface function between qcar (the simulation) and fmincon.

Comment only
06 Sep 2013 James Allison

James Allison (view profile)

Saman: Thank you for your *interest* in the optimization code. ...

Comment only
23 Aug 2013 saman abdanan

Hi James
Could you please add (opt_qcar) or send it to me ( I saw your simulation on youtube for optimization. Could you please explain what was f1 in your m.file line 17?

21 Mar 2013 James Allison

James Allison (view profile)

Alexandru: Perhaps there is another function 'ss' on your path that is superseding the built-in ss function:

You can use the 'which' command to find out if this is the issue.

Another possibility is the ss is part of the control system toolbox. If you don't have that toolbox, then ss will not work.

Comment only
21 Mar 2013 Alexandru


I am interested in your app. But I have problems when running it. I get this error:
Undefined function 'ss' for input arguments of type 'double'.

Error in sim_qcar (line 48)
qcar = ss(Aqcar,Bqcar,Cqcar,Dqcar);

What am I missing?
Thank you!

Comment only
27 Nov 2012 James Allison

James Allison (view profile)

umf is a multiplication factor that allows quick exploration of road profiles with different levels of roughness. It should be set to 1 for the output to correspond to the road profile in the .mat file.

Nice catch Louis. Yes, dt should be changed to dt2 on line 62.

Comment only
18 Oct 2012 Louis

Louis (view profile)

Very helpful model, I have two comments though:
1. I think umf should be set to 1 (or removed)
2. on line 62 the division by dt should be changed to a division by dt2

These two details made the script output inaccurate results; the script otherwise gives consistent results.

05 Sep 2012 Chegireddy Venkateswara Reddy

nice demo

07 Aug 2012 Mayur

Mayur (view profile)


Thanks for this model. I am trying to understand what umf = 3 is, and why you have used it. Could you please explain.


Comment only
05 Apr 2012 Olexander Zhytenko

very nice !!!

Contact us