View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
Bode plot with asymptotes

4.5 | 14 ratings Rate this file 105 Downloads (last 30 days) File Size: 3.4 KB File ID: #10183 Version: 1.2
image thumbnail

Bode plot with asymptotes



28 Feb 2006 (Updated )

Bode plot with asymptotes

| Watch this File

File Information

The function asymp() corresponds to bode(), but it also plots asymptotes for the magnitude and phase graphs. Phase asymptotes are only horizontal and vertical.
asymp() only accepts SISO transfer functions.
If the transfer function also has a time delay, the time delay is ignored
for the phase asymptotes.
asymp() may be called in two ways only, asymp(h), or asymp(h,wmin,wmax).

Required Products Control System Toolbox
MATLAB release MATLAB 8.6 (R2015b)
MATLAB Search Path
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (19)
01 Dec 2016 Britany Chamberlain

13 Sep 2016 Ostheer

good work, thanks

21 Mar 2016 Trond Andresen

I am the author of this function. It works also for the counter-examples given here by other commenters.

Comment only
09 Mar 2016 Aim Dulay

27 May 2015 Rafael Crepaldi

23 Jun 2012 Marcos Gonzalez

24 Apr 2012 Yngve

Yngve (view profile)

The asymptotes does not work for angles in this bandstop-filter:

>> H = tf([1 0 4000.*16000],[1 4000+16000 4000.*16000])

Transfer function:
s^2 + 6.4e007
s^2 + 20000 s + 6.4e007

>> asymp (H)

(Maybe because of the sudden 180 degree phase shift at the bandstop frequency)

Other than that, the program is wonderful <3

06 Jan 2011 Robert Stengel

It doesn't work with this simple test:
f11 = -1.2794;
f12 = -7.9856;
f22 = -1.2709;
F = [f11 f12;1 f22];
G = [-f12;0];
Hx = [1 0];
B22 = inv(-Hx*inv(F)*G)
sys = ss(F, G*B22, Hx,0);
step(sys), grid

Comment only
12 Mar 2010 Moussab Bennehar

12 Mar 2010 Moussab Bennehar

You're a Geeeeeeeeeeenius
really, great m file

Comment only
17 Oct 2009 Robert

Robert (view profile)

i need keeps saying error at asymp at 19

Comment only
12 May 2008 Nabil al-hadawy

******* Thank you **********
This is function (asymp.m) very nice

09 Apr 2008 John babs

great stuff. thanks!

04 Dec 2007 Joseph Birbiglia

Very good, but there are errors with the following transfer function:

G(s) = (s^2+1)/(s*(s^2+4))

??? Error using ==> colon
Maximum variable size allowed by the program is exceeded.

Error in ==> asymp at 147
set(get(gcf, 'CurrentAxes'),'YTick',magmin:ydelta:magmax);

12 Nov 2007 Trung Duong

It's work. Nice job

04 Apr 2007 Trond Andresen

I am the author of asymp( ).The problem reported by Anton Cervin has now been fixed. Please tell me if problems still remain.

Comment only
29 Sep 2006 Anton Cervin

It does not seem to work.

>> G = (s+1)/(s*(s+10))

Transfer function:
s + 1
s^2 + 10 s

>> asymp(G)
??? Error using ==> axes
Invalid object handle.

Error in ==> asymp at 120

18 Jun 2006 Zain Gurraya

02 Mar 2006 Jiro Doke

A similar submission:

I would appreciate a more comprehensive help text at the top. The code is documented pretty well. There are some coding styles that could be better (i.e. the while loops). Since you are plotting the asymptotes, maybe the function could return the break frequencies and the corresponding slopes of the asymptotes. It can have the same behavior as BODE, in which if there are no output arugments, then it would create a plot, and if there are outputs, then it wouldn't create a plot.

16 Mar 2007

Fix error: A reviewer pointed out that a certain transfer function didn't work with the current version.

18 Mar 2016 1.2

Compatible with Matlab 2015

18 Mar 2016 1.2

Fixed for compatibility with newer Matlab versions

16 Feb 2017 1.2

Just editing the description a little

Contact us