0% found this document useful (0 votes)
3 views

MATLAB Programming for Engineers 6th Edition Stephen J. Chapman instant download

The document provides information about the 6th edition of 'MATLAB Programming for Engineers' by Stephen J. Chapman, which focuses on teaching MATLAB as a technical programming language. It highlights the book's structure, including introductory and advanced topics, and emphasizes good programming practices, the use of functions, and MATLAB tools. Additionally, it outlines the pedagogical features designed to enhance student comprehension and includes resources for instructors.

Uploaded by

hejkalceo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

MATLAB Programming for Engineers 6th Edition Stephen J. Chapman instant download

The document provides information about the 6th edition of 'MATLAB Programming for Engineers' by Stephen J. Chapman, which focuses on teaching MATLAB as a technical programming language. It highlights the book's structure, including introductory and advanced topics, and emphasizes good programming practices, the use of functions, and MATLAB tools. Additionally, it outlines the pedagogical features designed to enhance student comprehension and includes resources for instructors.

Uploaded by

hejkalceo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 79

MATLAB Programming for Engineers 6th Edition

Stephen J. Chapman install download

https://ebookmeta.com/product/matlab-programming-for-
engineers-6th-edition-stephen-j-chapman/

Download more ebook from https://ebookmeta.com


We believe these products will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!

MATLAB for Engineers, Global Edition Holly. Moore

https://ebookmeta.com/product/matlab-for-engineers-global-
edition-holly-moore/

MATLAB for Engineers 5th Edition Holly Moore

https://ebookmeta.com/product/matlab-for-engineers-5th-edition-
holly-moore/

Jacaranda business studies in action hsc course 6th


Edition Stephen Chapman

https://ebookmeta.com/product/jacaranda-business-studies-in-
action-hsc-course-6th-edition-stephen-chapman/

Metrics of Modernity 1st Edition Sarah-Neel Smith

https://ebookmeta.com/product/metrics-of-modernity-1st-edition-
sarah-neel-smith/
Gray 1st Edition Milly Taiden

https://ebookmeta.com/product/gray-1st-edition-milly-taiden/

Beautiful Ruin (The Enemies Trilogy #3) 1st Edition


Piper Lawson

https://ebookmeta.com/product/beautiful-ruin-the-enemies-
trilogy-3-1st-edition-piper-lawson/

The connections world the future of Asian capitalism


Commander

https://ebookmeta.com/product/the-connections-world-the-future-
of-asian-capitalism-commander/

Understanding Popular Music Culture 5th Edition Roy


Shuker

https://ebookmeta.com/product/understanding-popular-music-
culture-5th-edition-roy-shuker/

Just Send Me Word A True Story of Love and Survival in


the Gulag 1st Edition Orlando Figes

https://ebookmeta.com/product/just-send-me-word-a-true-story-of-
love-and-survival-in-the-gulag-1st-edition-orlando-figes/
The Hunt Succubus Ascended Serial Part 3 1st Edition
Frost L L

https://ebookmeta.com/product/the-hunt-succubus-ascended-serial-
part-3-1st-edition-frost-l-l/
MATLAB®
Programming
for Engineers
MATLAB®
Programming
for Engineers
Sixth Edition

Stephen J. Chapman
BAE Systems Australia

Australia • Brazil • Mexico • Singapore • Spain • United Kingdom • United States


MATLAB Programming for Engineers, © 2020, 2016, 2008 Cengage Learning, Inc.
Sixth Edition
Stephen J. Chapman Unless otherwise noted, all content is © Cengage

Product Director, Global Engineering: ALL RIGHTS RESERVED. No part of this work covered by the
Timothy L. Anderson copyright herein may be reproduced or distributed in any form

Senior Product Assistant: Alexander or by any means, except as permitted by U.S. copyright law,

Sham without the prior written permission of the copyright owner.

Content Developer: MariCarmen


Constable
For product information and technology assistance, contact us at
Associate Marketing Manager: Tori Cengage Customer & Sales Support, 1-800-354-9706
Sitcawich or support.cengage.com.

Content Manager: Marianne Groth


For permission to use material from this text or product,
IP Analyst: Nancy Dillon
submit all
IP Project Manager: Jillian Shafer requests online at www.cengage.com/permissions.

Production Service: RPK Editorial


Services, Inc. Library of Congress Control Number: 2018965078

Compositor: MPS Limited

Senior Designer: Diana Graham Student Edition:


ISBN: 978-0-357-03039-4
Cover Image: iStockPhoto.com/
Henrik5000 Loose-leaf Edition:
Manufacturing Planner: Doug Wilke ISBN: 978-0-357-03051-6

Cengage
20 Channel Center Street
Boston, MA 02210
USA

Cengage is a leading provider of customized learning solutions


with employees residing in nearly 40 different countries and
sales in more than 125 countries around the world. Find your
local representative at www.cengage.com.

Cengage products are represented in Canada by Nelson


Education, Ltd.

To learn more about Cengage platforms and services, register


or access your online learning solution, or purchase materials
for your course, visit www.cengage.com.

MATLAB is a registered trademark of The MathWorks, Inc.,


1 Apple Hill Drive, Natick, MA 01760-2098

Printed in the United States of America


Print Number: 01   Print Year: 2018
This book is dedicated with love to my youngest daughter Devorah,
who just finished high school. The last one!
Preface

MATLAB (short for MATrix LABoratory) is a special-purpose computer program


optimized to perform engineering and scientific calculations. It started life as a pro-
gram designed to perform matrix mathematics, but over the years it has grown into
a flexible computing system capable of solving essentially any technical problem.
The MATLAB program implements the MATLAB language and provides an
extensive library of predefined functions to make technical programming tasks
easier and more efficient. This extremely wide variety of functions makes it much
easier to solve technical problems in MATLAB than in other languages such as
Fortran or C. This book introduces the MATLAB language as it is implemented in
version R2018a and shows how to use it to solve typical technical problems.
This book teaches MATLAB as a technical programming language, showing
students how to write clean, efficient, and documented programs. It makes no pre-
tense at being a complete description of all of MATLAB’s hundreds of functions.
Instead, it teaches the student how to use MATLAB as a computer language and
how to locate any desired function with MATLAB’s extensive on-line help facilities.
The first eight chapters of the text are designed to serve as the text for an
“Introduction to Programming/Problem Solving” course for freshman engineer-
ing students. This material should fit comfortably into a 9-week, 3-hour-per-week
course. The remaining chapters cover advanced topics such as I/O, object-oriented
programming, and graphical user interfaces (GUIs). These chapters may be covered
in a longer course or used as a reference by engineering students or practicing engi-
neers who use MATLAB as a part of their coursework or employment.

Changes in the Sixth Edition


The sixth edition of this book is specifically devoted to MATLAB R2018a. In
the four years since the last release, there have been many changes in MATLAB.
vii
viii | Preface

The most significant of these changes include the introduction of the App
Designer, which includes a whole new paradigm for creating MATLAB apps; a
new family of plotting functions; and strings. There have also been many smaller
improvements throughout the program. The book has been revised to reflect
these changes.
The major changes in this edition of the book include:
■■ An increase in the number of MATLAB applications featured in the chapters,
with more end-of-chapter exercises using them.
■■ More extensive coverage of plots in Chapter 3 and Chapter 8. The discussion

now includes most of the currently recommended plot types in MATLAB.


Older deprecated plot types have been dropped from coverage as the new ones
have been added.
■■ Coverage of the new string data type, along with changes in the support for

character arrays.
■■ Coverage of the time data types: dateTime, duration, and
calendarDuration.
■■ Coverage of table arrays.

■■ A completely rewritten Chapter 14 featuring the new App Designer and class-

based GUIs.
■■ An extra on-line Chapter 15 featuring the older GUIDE-based GUIs; this

chapter can be downloaded from the book’s website.

The Advantages of MATLAB for Technical Programming


MATLAB has many advantages compared to conventional computer languages for
technical problem solving. Among them are:
1. Ease of Use
MATLAB is an interpreted language, like many versions of Basic. Like
Basic, it is very easy to use. The program can be used as a scratch pad to
evaluate expressions typed at the command line, or it can be used to execute
large pre-written programs. Programs may be easily written and modified
with the built-in integrated development environment and debugged with the
MATLAB debugger. Because the language is so easy to use, it is ideal for
educational use and for the rapid prototyping of new programs.
Many program development tools are provided to make the program
easy to use. They include an integrated editor/debugger, on-line documenta-
tion and manuals, a workspace browser, and extensive demos.
2. Platform Independence
MATLAB is supported on many different computer systems, providing a
large measure of platform independence. At the time of this writing, the
language is supported on Windows 7/8/10, Linux, and the Mac. Programs
written on any platform will run on all of the other platforms, and data files
written on any platform may be read transparently on any other platform.
Preface | ix

As a result, programs written in MATLAB can migrate to new platforms


when the needs of the user change.
3. Predefined Functions
MATLAB comes complete with an extensive library of predefined functions
that provide tested and prepackaged solutions to many basic technical tasks.
For example, suppose that you are writing a program that must calculate the
statistics associated with an input data set. In most languages, you would
need to write your own subroutines or functions to implement calculations
such as the arithmetic mean, standard deviation, median, and so forth. These
and hundreds of other functions are built right into the MATLAB language,
making your job much easier.
In addition to the large library of functions built into the basic
MATLAB language, there are many special-purpose toolboxes available to
help solve complex problems in specific areas. For example, a user can buy
standard toolboxes to solve problems in Signal Processing, Control Sys-
tems, Communications, Image Processing, and Neural Networks, among
many others.
4. Device-Independent Plotting
Unlike other computer languages, MATLAB has many integral plotting and
imaging commands. The plots and images can be displayed on any graphi-
cal output device supported by the computer on which MATLAB is running.
This capability makes MATLAB an outstanding tool for visualizing techni-
cal data.
5. Graphical User Interface
MATLAB includes tools that allow a programmer to interactively construct a
GUI for his or her program. With this capability, the programmer can design
sophisticated data analysis programs that can be operated by relatively inex-
perienced users.

Features of This Book


Many features of this book are designed to emphasize the proper way to write reli-
able MATLAB programs. These features should serve a student well as he or she
is first learning MATLAB and should also be useful to the practitioner on the job.
These features include:
1. Emphasis on Top-Down Design Methodology
The book introduces a top-down design methodology in Chapter 4 and
then uses it consistently throughout the rest of the book. This methodology
encourages a student to think about the proper design of a program before
beginning to code. It emphasizes the importance of clearly defining the
problem to be solved and the required inputs and outputs before any other
work is begun. Once the problem is properly defined, the methodology
teaches the student to employ stepwise refinement to break the task down
x | Preface

into successively smaller sub-tasks, and to implement the sub-tasks as sepa-


rate subroutines or functions. Finally, it teaches the importance of testing
at all stages of the process, both unit testing of the component routines and
exhaustive testing of the final product.
The formal design process taught by the book may be summarized as
follows:
1. Clearly state the problem that you are trying to solve.
2. Define the inputs required by the program and the outputs to be pro-
duced by the program.
3. Describe the algorithm that you intend to implement in the program.
This step involves top-down design and stepwise decomposition,
using pseudocode or flow charts.
4. Turn the algorithm into MATLAB statements.
5. Test the MATLAB program. This step includes unit testing of specific
functions as well as exhaustive testing of the final program with many
different data sets.
2. Emphasis on Functions
The book emphasizes the use of functions to logically decompose tasks
into smaller subtasks. It teaches the advantages of functions for data hid-
ing. It also emphasizes the importance of unit testing functions before
they are combined into the final program. In addition, the book teaches
about the common mistakes made with functions and how to avoid them.
3. Emphasis on MATLAB Tools
The book teaches the proper use of MATLAB’s built-in tools to make
programming and debugging easier. The tools covered include the Editor/
Debugger, Workspace Browser, Help Browser, and GUI design tools.
4. Good Programming Practice Boxes
These boxes highlight good programming practices when they are intro-
duced for the convenience of the student. In addition, the good programming
practices introduced in a chapter are summarized at the end of the chapter.
An example Good Programming Practice Box is as follows:

Good Programming Practice


Always indent the body of an if construct by two or more spaces to improve the
readability of the code.

5. Programming Pitfalls Boxes


These boxes highlight common errors so that they can be avoided. An
example Programming Pitfalls Box is as follows:
Preface | xi

Programming Pitfalls
Make sure that your variable names are unique in the first 31 characters. Otherwise,
MATLAB will not be able to tell the difference between them.

6. Emphasis on Data Structures


Chapter 10 contains a detailed discussion of MATLAB data structures,
including sparse arrays, cell arrays, and structure arrays. The proper use
of these data structures is illustrated in the chapters on handle graphics
(Chapter 13) and graphical user interfaces (Chapter 14).
7. Emphasis on Object-Oriented MATLAB
Chapter 12 includes an introduction to object-oriented programming (OOP)
and describes the MATLAB implementation of OOP in detail. This informa-
tion is then applied in the discussion of App Designer GUIs.

Pedagogical Features
The first eight chapters of this book are specifically designed to be used in a fresh-
man “Introduction to Program/Problem Solving” course. It should be possible to
cover this material comfortably in a 9-week, 3-hour-per-week course. If there is
insufficient time to cover all of the material in a particular Engineering program,
Chapter 8 may be omitted, and the remaining material will still teach the fundamen-
tals of programming and using MATLAB to solve problems. This feature should
appeal to harassed engineering educators trying to cram ever more material into a
finite curriculum.
The remaining chapters cover advanced material that will be useful to the
engineer and engineering students as they progress in their careers. This material
includes advanced I/O, object-oriented programming, and the design of GUIs for
programs.
The book includes several features designed to aid student comprehension. A
total of 20 quizzes appear scattered throughout the chapters, with answers to all
questions included in Appendix B. These quizzes can serve as a useful self-test of
comprehension. In addition, there are approximately 230 end-of-chapter exercises.
Answers to all exercises are included in the Instructor’s Solutions Manual. Good
programming practices are highlighted in all chapters with special Good Program-
ming Practice boxes, and common errors are highlighted in Programming Pitfalls
boxes. End-of-chapter materials include Summaries of Good Programming Practice
and Summaries of MATLAB Commands and Functions.
The book is accompanied by an Instructor’s Solutions Manual, which contains
the solutions to all end-of-chapter exercises. The source code for all examples in
xii | Preface

the book is available from the book’s website at https://login.cengage.com, and the
source code for all solutions in the Instructor’s Manual is available separately to
instructors.

A Final Note to the User


No matter how hard I try to proofread a document like this book, it is inevitable that
some typographical errors will slip through and appear in print. If you should spot
any such errors, please drop me a note via the publisher, and I will do my best to
get these errors eliminated from subsequent printings and editions. Thank you very
much for your help in this matter.
I will maintain a complete list of errata and corrections at the book’s website,
which is available through https://login.cengage.com. Please check that site for any
updates and/or corrections.

Acknowledgments
I would like to thank all my friends at Cengage Learning for the support they have
given me in getting this book to market.
In addition, I would like to thank my wife Rosa, and our children Avi, David,
Rachel, Aaron, Sarah, Naomi, Shira, and Devorah for their help and encouragement.

Stephen J. Chapman
Melbourne, Australia
Digital Resources

New Digital Solution for Your Engineering Classroom


WebAssign is a powerful digital solution designed by educators to enrich the engi-
neering teaching and learning experience. With a robust computational engine at
its core, WebAssign provides extensive content, instant assessment, and superior
support.
WebAssign’s powerful question editor allows engineering instructors to cre-
ate their own questions or modify existing questions. Each question can use any
combination of text, mathematical equations and formulas, sound, pictures, video,
and interactive HTML elements. Numbers, words, phrases, graphics, and sound or
video files can be randomized so that each student receives a different version of
the same question.
In addition to common question types such as multiple choice, fill-in-
the-blank, essay, and numerical, you can also incorporate robust answer entry
palettes (­mathPad, chemPad, calcPad, physPad, pencilPad, Graphing Tool) to
input and grade symbolic expressions, equations, matrices, and chemical struc-
tures using powerful computer algebra systems. You can even use ­Camtasia to
embed “clicker” questions that are automatically scored and recorded in the
­GradeBook.

xiii
xiv | Digital Resources

WebAssign Offers Engineering Instructors the Following


■■ The ability to create and edit algorithmic and numerical exercises.
■■ The opportunity to generate randomized iterations of algorithmic and numeri-
cal exercises. When instructors assign numerical WebAssign homework exer-
cises (­engineering math exercises), the WebAssign program offers them the
ability to generate and assign their students differing versions of the same
engineering math exercise. The computational engine extends beyond and
provides the luxury of solving for correct solutions/answers.
■■ The ability to create and customize numerical questions, allowing students to

enter units, use a specific number of significant digits, use a specific number of
decimal places, respond with a computed answer, or answer within a different
tolerance value than the default.
Visit https://www.webassign.com/instructors/features/ to learn more. To create an account,
instructors can go directly to the signup page at http://www.webassign.net/signup.html.

MindTap Reader
Available via WebAssign and our digital subscription service, Cengage Unlimited,
MindTap Reader is Cengage’s next-generation eBook for engineering students.
The MindTap Reader provides more than just text learning for the student. It
offers a variety of tools to help our future engineers learn chapter concepts in a way
that ­resonates with their workflow and learning styles.
■■ Personalize their ­experience
Within the MindTap Reader, students can h­ ighlight key concepts, add notes, and
bookmark pages. These are collected in My Notes, ensuring they will have their own
study guide when it comes time to study for exams.
Digital Resources | xv

■■ Flexibility at their fingertips


With access to Merriam-Webster’s Dictionary and the book’s internal glossary,
students can personalize their study experience by creating and collating their own
custom flashcards. The ReadSpeaker feature reads text aloud to students, so they can
learn on the go—wherever they are.

■■ Review concepts at point of use


Within WebAssign, a “Read It” button at the bottom of each question links students
to corresponding sections of the textbook, enabling access to the MindTap Reader
at the precise moment of learning. A “Watch It” button causes a short video to play.
These videos allow students to better understand and review the problem they need
to complete, enabling support at the precise moment of learning.
xvi | Digital Resources

The MindTap Mobile App


Available on iOS and Android smartphones, the MindTap Mobile App provides
convenience. Students can access their entire textbook anyplace and anytime. They
can take notes, highlight important passages, and have their text read aloud whether
they are on-line or off.
To download the mobile app, visit https://www.cengage.com/mindtap
/mobileapp.

All-You-Can-Learn Access with Cengage Unlimited


Cengage Unlimited is the first-of-its-kind digital subscription that gives students
total and on-demand access to all the digital learning platforms, eBooks, on-line
homework, and study tools Cengage has to offer—in one place, for one price. With
Cengage ­Unlimited, students get access to their WebAssign courseware, as well as
content in other Cengage platforms and course areas from day one. That’s 70 disci-
plines and 675 courses worth of material, including engineering.
With Cengage Unlimited, students get unlimited access to a library of more than
22,000 products. To learn more, visit https://www.cengage.com/unlimited.
Contents

Chapter 1 Introduction to MATLAB 1


1.1 The Advantages of MATLAB 2
1.2 Disadvantages of MATLAB 3
1.3 The MATLAB Environment 4
1.3.1 The MATLAB Desktop 4
1.3.2 The Command Window 6
1.3.3 The Toolstrip 7
1.3.4 The Command History Window 8
1.3.5 The Document Window 8
1.3.6 Figure Windows 11
1.3.7 Docking and Undocking Windows 12
1.3.8 The MATLAB Workspace 12
1.3.9 The Workspace Browser 14
1.3.10 The Current Folder Browser 14
1.3.11 Getting Help 15
1.3.12 A Few Important Commands 18
1.3.13 The MATLAB Search Path 19
1.4 Using MATLAB as a Calculator 21
1.5 MATLAB Script Files 23
1.5.1 Setting Up a Problem to Solve 24
1.5.2 Creating a Simple MATLAB Script File 24
1.6 Summary 28
1.6.1 MATLAB Summary 28
1.7 ­­Exercises 29

Chapter 2 MATLAB Basics 33


2.1 Variables and Arrays 33
xvii
xviii | Contents

2.2 Creating and Initializing Variables in MATLAB 37


2.2.1 Initializing Variables in Assignment Statements 37
2.2.2 Initializing with Shortcut Expressions 40
2.2.3 Initializing with Built-In Functions 41
2.2.4 Initializing Variables with Keyboard Input 41
2.3 Multidimensional Arrays 43
2.3.1 Storing Multidimensional Arrays in Memory 45
2.3.2 Accessing Multidimensional Arrays with One
Dimension 46
2.4 Subarrays 46
2.4.1 The end Function 47
2.4.2 Using Subarrays on the Left-Hand Side of an Assignment
Statement 47
2.4.3 Assigning a Scalar to a Subarray 49
2.5 Special Values 49
2.6 Displaying Output Data 51
2.6.1 Changing the Default Format 52
2.6.2 The disp Function 53
2.6.3 Formatted Output with the fprintf Function 54
2.7 Data Files 55
2.8 Scalar and Array Operations 58
2.8.1 Scalar Operations 58
2.8.2 Array and Matrix Operations 58
2.9 Hierarchy of Operations 62
2.10 Built-in MATLAB Functions 65
2.10.1 Optional Results 65
2.10.2 Using MATLAB Functions with Array Inputs 65
2.10.3 Common MATLAB Functions 66
2.11 Introduction to Plotting 67
2.11.1 Using Simple xy Plots 68
2.11.2 Printing a Plot 69
2.11.3 Multiple Plots 70
2.11.4 Line Color, Line Style, Marker Style, and Legends 71
2.12 Examples 75
2.13 MATLAB Applications:Vector Mathematics 82
2.13.1 Vector Addition and Subtraction 84
2.13.2 Vector Multiplication 85
2.14 MATLAB Applications: Matrix Operations
and Simultaneous Equations 90
2.14.1 The Matrix Inverse 91
2.15 Debugging MATLAB Programs 92
2.16 Summary 94
2.16.1 Summary of Good Programming Practice 95
2.16.2 MATLAB Summary 96
2.17 Exercises 99
Contents | xix

Chapter 3 Two-Dimensional Plots 111


3.1 Additional Plotting Features for Two-Dimensional Plots 111
3.1.1 Logarithmic Scales 111
3.1.2 Controlling x- and y-axis Plotting Limits 116
3.1.3 Plotting Multiple Plots on the Same Axes 117
3.1.4 Creating Multiple Figures 117
3.1.5 Subplots 121
3.1.6 Controlling the Spacing between Points on a Plot 122
3.1.7 Enhanced Control of Plotted Lines 126
3.1.8 Enhanced Control of Text Strings 127
3.2 Polar Plots 130
3.3 Annotating and Saving Plots 132
3.4 Additional Types of Two-Dimensional Plots 135
3.5 Using the plot Function with Two-Dimensional Arrays 140
3.6 Plots with Two y Axes 142
3.7 Summary 149
3.7.1 Summary of Good Programming Practice 150
3.7.2 MATLAB Summary 151
3.8 Exercises 151

Chapter 4 Branching Statements and Program Design 157


4.1 Introduction to Top-Down Design Techniques 157
4.2 Use of Pseudocode 161
4.3 The logical Data Type 162
4.3.1 Relational and Logic Operators 162
4.3.2 Relational Operators 163
4.3.3 A Caution About the == and ~= Operators 164
4.3.4 Logic Operators 165
4.3.5 Logical Functions 169
4.4 Branches 171
4.4.1 The if Construct 171
4.4.2 Examples Using if Constructs 173
4.4.3 Notes Concerning the Use of if Constructs 179
4.4.4 The switch Construct 182
4.4.5 The try/catch Construct 183
4.5 More on Debugging MATLAB Programs 189
4.6 Code Sections 196
4.7 MATLAB Applications: Roots of Polynomials 198
4.8 Summary 201
4.8.1 Summary of Good Programming Practice 201
4.8.2 MATLAB Summary 202
4.9 Exercises 203
xx | Contents

Chapter 5 Loops and Vectorization 207


5.1 The while Loop 207
5.2 The for Loop 213
5.2.1 Details of Operation 220
5.2.2 Vectorization: A Faster Alternative to Loops 222
5.2.3 The MATLAB Just-In-Time (JIT) Compiler 223
5.2.4 The break and continue Statements 227
5.2.5 Nesting Loops 228
5.3 Logical Arrays and Vectorization 229
5.3.1 Creating the Equivalent of if/else Constructs
with Logical Arrays 230
5.4 The MATLAB Profiler 232
5.5 Additional Examples 235
5.6 The textread Function 250
5.7 MATLAB Applications: Statistical Functions 252
5.8 MATLAB Applications: Curve Fitting and Interpolation 255
5.8.1 General Least-Squares Fits 255
5.8.2 Cubic Spline Interpolation 262
5.8.3 Interactive Curve-Fitting Tools 267
5.9 Summary 271
5.9.1 Summary of Good Programming Practice 271
5.9.2 MATLAB Summary 272
5.10 Exercises 272

Chapter 6 Basic User-Defined Functions 283


6.1 Introduction to MATLAB Functions 284
6.2 Variable Passing in MATLAB:The Pass-by-Value Scheme 290
6.3 Optional Arguments 300
6.4 Sharing Data Using Global Memory 305
6.5 Preserving Data between Calls to a Function 313
6.6 Built-In MATLAB Functions: Sorting Functions 318
6.7 Built-In MATLAB Functions: Random Number Functions 320
6.8 Summary 320
6.8.1 Summary of Good Programming Practice 321
6.8.2 MATLAB Summary 321
6.9 Exercises 322

Chapter 7 Advanced Features of User-Defined Functions 331


7.1 Function Functions 331
7.2 Function Handles 336
Contents | xxi

7.3 Functions eval and feval 341


7.4 Local Functions, Private Functions, and Nested Functions 342
7.4.1 Local Functions 342
7.4.2 Private Functions 344
7.4.3 Nested Functions 345
7.4.4 Order of Function Evaluation 348
7.4.5 Function Handles and Nested Functions 348
7.4.6 The Significance of Function Handles 350
7.5 An Example Application: Solving Ordinary
Differential Equations 351
7.6 Anonymous Functions 358
7.7 Recursive Functions 359
7.8 Plotting Functions 360
7.9 Histograms 362
7.10 An Example Application: Numerical Integration 368
7.11 Summary 374
7.11.1 Summary of Good Programming Practice 374
7.11.2 MATLAB Summary 375
7.12 Exercises 375

Chapter 8 Complex Numbers and Additional Plots 385


8.1 Complex Data 385
8.1.1 Complex Variables 387
8.1.2 Using Complex Numbers with Relational Operators 387
8.1.3 Complex Functions 388
8.1.4 Plotting Complex Data 394
8.2 Multidimensional Arrays 397
8.3 Gallery of MATLAB Plots 399
8.4 Line Plots 410
8.4.1 The plot3 Function 410
8.4.2 Changing the Viewpoint of Three-dimensional Plots 414
8.4.3 The fplot3 Function 414
8.4.4 The fimplicit Function 415
8.5 Discrete Data Plots 417
8.5.1 The stem3 Function 419
8.5.2 The scatter Function 420
8.5.3 The scatter3 Function 424
8.6 Polar Plots 426
8.6.1 The compass Function 429
8.6.2 The ezpolar Function 429
8.7 Contour Plots 431
8.7.1 Function contour 431
8.7.2 Function contourf 433
xxii | Contents

8.7.3 Function contour3 435


8.7.4 Function fcontour 435
8.8 Surface and Mesh Plots 436
8.8.1 Creating Surface and Mesh Plots 437
8.8.2 Creating Three-Dimensional Objects using Surface
and Mesh Plots 442
8.8.3 Ribbon Plots 444
8.8.4 Function pcolor 445
8.8.5 Functions fsurf and fmesh 447
8.8.6 Function fimplicit3 448
8.9 Pie Charts, Bar Plots, and Histograms 450
8.9.1 The area Function 451
8.9.2 Bar Plots 452
8.9.3 Two-Dimensional Histograms 456
8.10 Color Order, Color Maps, and Color Bars 457
8.10.1 Plot Color Order 457
8.10.2 Color Maps 459
8.10.3 Color Bars 459
8.11 Summary 463
8.11.1 Summary of Good Programming Practice 463
8.11.2 MATLAB Summary 463
8.12 Exercises 464

Chapter 9 Additional Data Types 471


9.1 Character Arrays versus Strings 472
9.1.1 Character Arrays 472
9.1.2 Strings 473
9.2 Character Arrays and Character Functions 473
9.2.1 Character Array Conversion Functions 474
9.2.2 Creating Two-Dimensional Character Arrays 475
9.2.3 Concatenating Character Arrays 476
9.2.4 Comparing Character Arrays 476
9.2.5 Searching/Replacing Characters within a Character Array 480
9.2.6 Uppercase and Lowercase Conversion 481
9.2.7 Trimming Whitespace from Strings 482
9.2.8 Numerical-to-Character Array Conversions 482
9.2.9 String-to-Numerical Conversions 484
9.3 The string Data Type 490
9.3.1 Creating Strings 491
9.3.2 Converting Data into Strings 491
9.3.3 Converting Strings to Other Data Types 493
9.3.4 Concatenating Strings 494
9.3.5 Comparing Strings 494
9.3.6 Searching for Substrings within a String 495
Contents | xxiii

9.3.7 Extracting Substrings from a String 496


9.3.8­ Inserting Strings into a String 497
9.3.9 Replacing Characters within a String 497
9.3.10 Erasing Characters in a String 498
9.3.11 Uppercase and Lowercase Conversion 499
9.3.12 Trimming Whitespace from Strings 499
9.4 Summary of Character Array and String Functions 499
9.5 The single Data Type 503
9.6 Integer Data Types 504
9.7 Limitations of the single and Integer Data Types 505
9.8 The datetime and duration Data Types 507
9.8.1 The datetime Data Type 507
9.8.2 The duration Data Type 508
9.8.3 calendarDuration Arrays 508
9.8.4 Time Calculations 509
9.8.5 Using Time Data in MATLAB 511
9.9 Summary 513
9.9.1 Summary of Good Programming Practice 513
9.9.2 MATLAB Summary 513
9.10 Exercises 514

Chapter 10 Sparse Arrays, Cell Arrays, Structures,


and Tables 517
10.1 Sparse Arrays 517
10.1.1 The sparse Attribute 519
10.2 Cell Arrays 525
10.2.1 Creating Cell Arrays 527
10.2.2 Using Braces {} as Cell Constructors 528
10.2.3 Viewing the Contents of Cell Arrays 528
10.2.4 Extending Cell Arrays 529
10.2.5 Deleting Cells in Arrays 531
10.2.6 Using Data in Cell Arrays 532
10.2.7 Cell Arrays of Strings 532
10.2.8 The Significance of Cell Arrays 534
10.2.9 Summary of cell Functions 538
10.3 Structure Arrays 539
10.3.1 Creating Structure Arrays 539
10.3.2 Adding Fields to Structures 542
10.3.3 Removing Fields from Structures 542
10.3.4 Using Data in Structure Arrays 543
10.3.5 The getfield and setfield Functions 544
10.3.6 Dynamic Field Names 545
10.3.7 Using the size Function with Structure Arrays 546
xxiv | Contents

10.3.8 Nesting Structure Arrays 547


10.3.9 Summary of structure Functions 548
10.4 Table Arrays 548
10.4.1 Creating Table Arrays 548
10.4.2 Accessing Data in a Table 551
10.4.3 Table Metadata (Properties) 552
10.4.4 Examining the Contents and Properties of a Table 553
10.4.5 Table Summary 554
10.5 Summary 560
10.5.1 Summary of Good Programming Practice 560
10.5.2 MATLAB Summary 561
10.6 Exercises 561

Chapter 11 Input-Output Functions 565


11.1 The textread Function 565
11.2 More about the load and save Commands 567
11.3 An Introduction to MATLAB File Processing 570
11.4 File Opening and Closing 571
11.4.1 The fopen Function 571
11.4.2 The fclose Function 574
11.5 Binary I/O Functions 575
11.5.1 The fwrite Function 575
11.5.2 The fread Function 575
11.6 Formatted I/O Functions 580
11.6.1 The fprintf Function 580
11.6.2 Understanding Format Conversion Specifiers 581
11.6.3 How Format Strings Are Used 583
11.6.4 The sprintf Function 585
11.6.5 The fscanf Function 587
11.6.6 The fgetl Function 588
11.6.7 The fgets Function 589
11.7 Comparing Formatted and Binary I/O Functions 589
11.8 File Positioning and Status Functions 594
11.8.1 The exist Function 595
11.8.2 The ferror Function 597
11.8.3 The feof Function 598
11.8.4 The ftell Function 598
11.8.5 The frewind Function 598
11.8.6 The fseek Function 598
11.9 The textscan Function 604
11.10 Function uiimport 606
11.11 Summary 609
11.11.1 Summary of Good Programming Practice 610
11.11.2 MATLAB Summary 610
11.12 Exercises 611
Contents | xxv

Chapter 12 User-Defined Classes and


Object-Oriented Programming 615
12.1 An Introduction to Object-Oriented Programming 615
12.1.1 Objects 616
12.1.2 Messages 617
12.1.3 Classes 617
12.1.4 Static Methods 618
12.1.5 Class Hierarchy and Inheritance 620
12.1.6 Object-Oriented Programming 620
12.2 The Structure of a MATLAB Class 621
12.2.1 Creating a Class 622
12.2.2 Adding Methods to a Class 624
12.2.3 Listing Class Types, Properties, and Methods 628
12.2.4 Attributes 629
12.3 Value Classes versus Handle Classes 633
12.3.1 Value Classes 634
12.3.2 Handle Classes 635
12.4 Destructors: The delete Method 638
12.5 Access Methods and Access Controls 640
12.5.1 Access Methods 640
12.5.2 Access Controls 642
12.5.3 Example: Creating a Timer Class 642
12.5.4 Notes on the MyTimer Class 647
12.6 Static Methods 648
12.7 Defining Class Methods in Separate Files 649
12.8 Overriding Operators 650
12.9 Events and Listeners 655
12.9.1 Property Events and Listeners 658
12.10 Exceptions 659
12.10.1 Creating Exceptions in Your Own Programs 660
12.10.2 Catching and Fixing Exceptions 661
12.11 Superclasses and Subclasses 662
12.11.1 Defining Superclasses and Subclasses 663
12.11.2 Example Using Superclasses and Subclasses 668
12.12 Summary 678
12.12.1 Summary of Good Programming Practice 679
12.12.2 MATLAB Summary 679
12.13 Exercises 680

Chapter 13 Handle Graphics and Animation 685


13.1 Handle Graphics 685
13.2 The MATLAB Graphics System 686
13.3 Object Handles 688
xxvi | Contents

13.4 Examining and Changing Object Properties 689


13.4.1 Changing Object Properties at Creation Time 689
13.4.2 Changing Object Properties after Creation Time 689
13.4.3 Examining and Changing Properties
Using Object Notation 690
13.4.4 Examining and Changing Properties Using
get/set Functions 692
13.4.5 Examining and Changing Properties Using
the Property Editor 694
13.5 Using set to List Possible Property Values 698
13.6 User-Defined Data 700
13.7 Finding Objects 701
13.8 Selecting Objects with the Mouse 703
13.9 Position and Units 706
13.9.1 Positions of figure Objects 706
13.9.2 Positions of axes and polaraxes Objects 707
13.9.3 Positions of text Objects 707
13.10 Printer Positions 710
13.11 Default and Factory Properties 711
13.12 Restoring Default Properties 713
13.13 Graphics Object Properties 713
13.14 Animations and Movies 714
13.14.1 Erasing and Redrawing 714
13.14.2 Creating a Movie 719
13.15 Summary 721
13.15.1 Summary of Good Programming Practice 721
13.15.2 MATLAB Summary 721
13.16 Exercises 722

Chapter 14 MATLAB Apps and Graphical User Interfaces 725


14.1 How a Graphical User Interface Works 726
14.2 Creating and Displaying a Graphical User Interface 732
14.2.1 The Structure of a Callback Function (Method) 738
14.2.2 Adding Application Data to a Figure 739
14.3 Object Properties 739
14.3.1 Key Properties of Numerical Components 741
14.3.2 Key Properties of Text Components 743
14.4 Additional Containers: Panels,Tab Groups,
and Button Groups 749
14.4.1 Panels 749
14.4.2 Tab Groups 752
14.4.3 Button Groups 752
14.5 Dialog Boxes 754
14.5.1 Alert Dialog Boxes 755
Contents | xxvii

14.5.2 Confirmation Dialog Boxes 755


14.5.3 Input Dialog Boxes 757
14.5.4 The uigetfile, uisetfile, and uigetdir Dialog
Boxes 757
14.5.5 The uisetcolor and uisetfont Dialog Boxes 759
14.6 Menus 760
14.6.1 Creating Your Own Menus 763
14.6.2 Accelerator Keys and Keyboard Mnemonics 763
14.7 Summary 774
14.7.1 Summary of Good Programming Practice 775
14.7.2 MATLAB Summary 775
14.8 Exercises 777

A UTF-8 Character Set 779

B Answers to Quizzes 781

Index 807

Chapter 15 Guide-Based Graphical User Interfaces (On-line Only)


15.1 How a Graphical User Interface Works
15.2 Creating and Displaying a Graphical User Interface
15.2.1 A Look Under the Hood
15.2.2 The Structure of a Callback Subfunction
15.2.3 Adding Application Data to a Figure
15.2.4 A Few Useful Functions
15.3 Object Properties
15.4 Graphical User Interface Components
15.4.1 Static Text Fields
15.4.2 Edit Boxes
15.4.3 Pushbuttons
15.4.4 Toggle Buttons
15.4.5 Checkboxes and Radio Buttons
15.4.6 Popup Menus
15.4.7 List Boxes
15.4.8 Sliders
15.4.9 Tables
15.5 Additional Containers: Panels and Button Groups
15.5.1 Panels
15.5.2 Button Groups
15.6 Dialog Boxes
15.6.1 Error and Warning Dialog Boxes
15.6.2 Input Dialog Boxes
xxviii | Contents

15.6.3 The uigetfile, uisetfile, and uigetdir Dialog Boxes


15.6.4 The uisetcolor and uisetfont Dialog Boxes
15.7 Menus
15.7.1 Suppressing the Default Menu
15.7.2 Creating Your Own Menus
15.7.3 Accelerator Keys and Keyboard Mnemonics
15.7.4 Creating Context Menus
15.8 Tips for Creating Efficient GUIs
15.8.1 Tool Tips
15.8.2 Toolbars
15.8.3 Additional Enhancements
15.9 Summary
15.9.1 Summary of Good Programming Practice
15.9.2 MATLAB Summary
15.10 Exercises
Chapter 1
Introduction to MATLAB

MATLAB (short for MATrix LABoratory) is a special-purpose computer program


optimized to perform engineering and scientific calculations. It started life as a pro-
gram designed to perform matrix mathematics, but over the years it has grown into
a flexible computing system capable of solving essentially any technical problem.
The MATLAB program implements the MATLAB programming language and
provides a very extensive library of predefined functions to make technical pro-
gramming tasks easier and more efficient. This book introduces the MATLAB lan-
guage as it is implemented in MATLAB Version 2018A and shows how to use it to
solve typical technical problems.
MATLAB is a huge program with an incredibly rich variety of functions. Even the
basic version of MATLAB without any toolkits is much richer than other technical
programming languages. There are more than 1000 functions in the basic MATLAB
product alone, and the toolkits extend this capability with many more functions in
various specialties. Furthermore, these functions often solve very complex problems
(solving differential equations, inverting matrices, and so forth) in a single step, saving
large amounts of time. Doing the same thing in another computer language usually
involves writing complex programs yourself or buying a third-party software pack-
age (such as IMSL, the Intel® Math Kernel Library, or the NAG software libraries)
that contains the functions.
The built-in MATLAB functions are almost always better than anything that
an individual engineer could write on his or her own because many people have
worked on them, and they have been tested against many different data sets. These
functions are also robust, producing sensible results for wide ranges of input data
and gracefully handling error conditions.
This book makes no attempt to introduce users to all of MATLAB’s functions.
Instead, it teaches users the basics of how to write, debug, and optimize good MATLAB
programs, and it introduces a subset of the most important functions used to
solve common scientific and engineering problems. Just as importantly, it teaches

1
2 | Chapter 1 Introduction to MATLAB

the scientist or engineer how to use MATLAB’s own tools to locate the right
function for a specific purpose from the enormous variety of choices available.
In addition, it teaches how to use MATLAB to solve many practical engineering
problems, such as vector and matrix algebra, curve fitting, differential equations,
and data plotting.
The MATLAB program is a combination of a procedural programming language, an
integrated development environment (IDE) that includes an editor and debugger, and
an extremely rich set of functions that perform many types of technical calculations.
The MATLAB language is a procedural programming language, meaning that the
engineer writes procedures, which are effectively mathematical recipes for solving a
problem. This makes MATLAB very similar to other procedural languages such as
C or Fortran. However, the extremely rich list of predefined functions and plot-
ting tools makes it superior to these other languages for many engineering analysis
applications.
In addition, the MATLAB language includes object-oriented extensions that
allow engineers to write object-oriented programs. These extensions are similar to
other object-oriented languages such as C++ or Java.

1.1 The Advantages of MATLAB


MATLAB has many advantages compared to conventional computer languages for
technical problem solving. Among them are the following:
1. Ease of Use
MATLAB is an interpreted language, like many versions of Basic. Like
Basic, it is very easy to use. The program can be used as a scratch pad to
evaluate expressions typed at the command line, or it can be used to exe-
cute large prewritten programs. Programs may be easily written and modified
with the built-in integrated development environment and debugged with the
MATLAB debugger. Because the language is so easy to use, it is ideal for the
rapid prototyping of new programs.
Many program development tools are provided to make the program
easy to use. They include an integrated editor/debugger, on-line documenta-
tion and manuals, a workspace browser, and extensive demos.
2. Platform Independence
MATLAB is supported on many different computer systems and thus enables
a large measure of platform independence. At the time of this writing, the
language is supported on Windows 7/8.1/10, Linux, and the Apple Mac oper-
ating system. Programs written on any platform will run on all of the other
platforms, and data files written on any platform may be read transparently
on any other platform. As a result, programs written in MATLAB can migrate
to new platforms when the needs of the user change.
3. Predefined Functions
MATLAB comes complete with an extensive library of predefined functions
that provide tested and prepackaged solutions to many basic technical tasks.
For example, suppose that you are writing a program that must calculate the
1.2 Disadvantages of MATLAB | 3

statistics associated with an input data set. In most languages, you would
need to write your own subroutines or functions to implement calculations
such as the arithmetic mean, standard deviation, median, and so forth. These
and hundreds of other functions are built right into the MATLAB language,
making your job much easier.
In addition to the large library of functions built into the basic MATLAB
language, there are many special-purpose toolboxes available to help solve
complex problems in specific areas. For example, you can buy standard tool-
boxes to solve problems in signal processing, control systems, communica-
tions, image processing, and neural networks, among many others. There is
also an extensive collection of free user-contributed MATLAB programs that
are shared through the MATLAB website.
4. Device-Independent Plotting
Unlike most other computer languages, MATLAB has many integral plot-
ting and imaging commands. The plots and images can be displayed on any
graphical output device supported by the computer on which MATLAB is
running. This capability makes MATLAB an outstanding tool for visualizing
technical data.
5. Graphical User Interface
MATLAB includes tools that allow an engineer to interactively construct a
graphical user interface (GUI) for his or her program, and also to produce
Web apps. With this capability, an engineer can design sophisticated data
analysis programs that can be operated by relatively inexperienced users.
6. MATLAB Compilers
MATLAB’s flexibility and platform independence is achieved by compiling
MATLAB programs into a device-independent p-code, and then interpreting
the p-code instructions at run-time. This approach is similar to that used by
Microsoft’s Visual Basic language or by Java. Unfortunately, the resulting
programs sometimes executed slowly because the MATLAB code is inter-
preted rather than compiled. Newer versions of MATLAB have partially
overcome this problem by introducing just-in-time (JIT) compiler technol-
ogy. The JIT compiler compiles portions of the MATLAB code as it is exe-
cuted to increase overall speed.
A separate MATLAB Coder is also available. The MATLAB Coder gen-
erates portable and readable C and C++ code from MATLAB code. This
converted code can then be compiled and included in programs written in
other languages. In addition, legacy code written in other languages can be
compiled and used within MATLAB.

1.2 Disadvantages of MATLAB


MATLAB has two principal disadvantages. The first is that it is an interpreted lan-
guage and therefore can execute more slowly than compiled languages. This problem
can be mitigated by properly structuring the MATLAB program to maximize the
performance of vectorized code and by using the JIT compiler.
4 | Chapter 1 Introduction to MATLAB

The second disadvantage is cost: a full copy of MATLAB is 5 to 10 times more


expensive than a conventional C or Fortran compiler. This relatively high cost is
more than offset by the reduced time required for an engineer or scientist to create
a working program, so MATLAB is cost-effective for businesses. However, it is too
expensive for most individuals to consider purchasing. Fortunately, there is also an
inexpensive student edition of MATLAB, which is a great tool for students wishing
to learn the language. The student edition of MATLAB is essentially identical to the
full edition.

1.3 The MATLAB Environment


The fundamental unit of data in any MATLAB program is the array. An array
is a collection of data values organized into rows and columns and known
by a single name. Individual data values within an array can be accessed
by including the name of the array followed by subscripts in parentheses
that identify the row and column of the particular value. Even scalars are
treated as arrays by MATLAB—they are simply arrays with only one row and
one column. We will learn how to create and manipulate MATLAB arrays in
Section 1.4.
When MATLAB executes, it can display several types of windows that accept
commands or display information. The three most important types of windows are
Command Windows, where commands may be entered; Figure Windows, which dis-
play plots and graphs; and Edit Windows, which permit a user to create and modify
MATLAB programs. We will see examples of all three types of windows in this
section.
In addition, MATLAB can display other windows that provide help and that
allow the user to examine the values of variables defined in memory. We will exam-
ine some of these additional windows here, and examine the others when we discuss
how to debug MATLAB programs.

1.3.1 The MATLAB Desktop


When you start MATLAB Version 2018A, a special window called the MATLAB
desktop appears. The desktop is a window that contains other windows showing
MATLAB data, plus toolbars and a “Toolstrip” or “Ribbon Bar” similar to that used
by Windows 10 or Microsoft Office. By default, most MATLAB tools are “docked”
to the desktop, so that they appear inside the desktop window. However, the user can
choose to “undock” any or all tools, making them appear in windows separate from
the desktop.
The default configuration of the MATLAB desktop is shown in Figure 1.1.
It integrates many tools for managing files, variables, and applications within the
MATLAB environment.
1.3 The MATLAB Environment | 5

Current Folder
This control allow
Browser
a user to view Launch the MATLAB
shows a list
or change the Help Browser Editor
of the files in the
current directory
current directory

Details Window
displays the Workspace Browser
MATLAB Command
properties of a file shows variables defined
Window
selected in the in workspace
Current Folder Browser

Figure 1.1 The default MATLAB desktop. The exact appearance of the
desktop may differ slightly on different types of computers.

The major tools within or accessible from the MATLAB desktop are:
■■ The Command Window
■■ The Toolstrip
■■ The Documents Window, including the Editor/Debugger and Array Editor

■■ Figure Windows

■■ The Workspace Browser

■■ The Current Folder Browser, with the Details Window

■■ The Help Browser

■■ The Path Browser

■■ A Popup Command History Window


6 | Chapter 1 Introduction to MATLAB

Table 1.1: Tools and Windows Included in the MATLAB


Desktop
Tool Description
Command Window A window where the user can type commands and see immediate
results, or where the user can execute scripts or functions
Toolstrip A strip across the top of the desktop containing icons to select func-
tions and tools, arranged in tabs and sections of related functions
Command History A window that displays recently used commands, accessed by click-
Window ing the up arrow when typing in the Command Window
Document Window A window that displays MATLAB files and allows the user to edit or
debug them
Figure Window A window that displays a MATLAB plot
Workspace Browser A window that displays the names and values of variables stored in
the MATLAB workspace
Current Folder A window that displays the names of files in the current directory. If
Browser a file is selected in the Current Folder Browser, details about the file
will appear in the Details Window
Help Browser A tool to get help for MATLAB functions, accessed by clicking the
“Help” button on the Toolstrip
Path Browser A tool to display the MATLAB search path, accessed by clicking the
“Set Path” button on the Home tab of the Toolstrip

The functions of these tools are summarized in Table 1.1. We will discuss them in
later sections of this chapter.

1.3.2 The Command Window


The bottom center of the default MATLAB desktop contains the Command
Window. A user can enter interactive commands at the command prompt (») in the
Command Window, and they will be executed on the spot.
As an example of a simple interactive calculation, suppose that you wanted to cal-
culate the area of a circle with a radius of 2.5 m. The equation for this area of a circle is
A 5 r 2 (1.1)
where r is the radius of the circle and A is the area of the circle. This equation can be
evaluated in the MATLAB Command Window by typing:
» area = pi * 2.5^2
area =
19.6350
where * is the multiplication symbol and ^ is the exponential symbol. MATLAB
calculates the answer as soon as the Enter key is pressed, and stores the answer
in a variable (really a 1 3 1 array) called area. The contents of the variable are
1.3 The MATLAB Environment | 7

Result is added
to the workspace

User input

Result of
calculation

Figure 1.2 The Command Window appears in the center of the desktop.
You enter commands and see responses here.

displayed in the Command Window as shown in Figure 1.2, and the variable can be
used in further calculations. (Note that p is predefined in MATLAB, so we can just
use pi without first declaring it to be 3.141592 … ).
If a statement is too long to type on a single line, it may be continued on succes-
sive lines by typing an ellipsis (...) at the end of the first line and then continuing
on the next line. For example, the following two statements are identical.
x1 = 1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6
and
x1 = 1 + 1/2 + 1/3 + 1/4 ...
+ 1/5 + 1/6
Instead of typing commands directly in the Command Window, a series of com-
mands can be placed into a file, and the entire file can be executed by typing its
name in the Command Window. Such files are called script files. Script files (and
functions, which we will see later) are also known as M-files because they have a file
extension of “.m”.

1.3.3 The Toolstrip


The Toolstrip (see Figure 1.3) is a bar of tools that appears across the top of the
desktop. The controls on the Toolstrip are organized into related categories of func-
tions, first by tabs, and then by groups. For example, the tabs visible in Figure 1.3 are
8 | Chapter 1 Introduction to MATLAB

Figure 1.3 The Toolstrip, which allows you to select from a wide variety
of MATLAB tools and commands.

“Home”, “Plots”, “Apps”, “Editor”, and so forth. When one of the tabs is selected,
a series of controls grouped into sections is displayed. In the Home tab, the sections
are “File”, “Variable”, “Code”, and so forth. With practice, the logical grouping of
commands helps the user to quickly locate any desired function.
In addition, the upper-right corner of the Toolstrip contains the Quick Access
Toolbar, which is where you can customize the interface and display the most com-
monly used commands and functions at all times. To customize the functions dis-
played there, right-click on the toolbar and select the Customize option from the
popup menu.

1.3.4 The Command History Window


The Command History Window displays a list of the commands that a user has
previously entered in the Command Window. The list of commands can extend
back to previous executions of the program. Commands remain in the list until
they are deleted. To display the Command History Window, press the up arrow
key while typing in the Command Window. To reexecute any command, simply
double-click it with the left mouse button. To delete one or more commands from
the Command History Window, select the commands and right-click them with the
mouse. A popup menu will be displayed that allows the user to delete the items (see
Figure 1.4).

1.3.5 The Document Window


A Document Window (also called an Edit/Debug Window) is used to create new
M-files or to modify existing ones. An Edit/Debug Window is created automati-
cally when you create a new M-file or open an existing one. You can create a new
1.3 The MATLAB Environment | 9

Figure 1.4 The Command History Window, showing three commands


being deleted.

M-file with the “New Script” command from the “File” group on the Toolstrip
(Figure 1.5a), or by clicking the New icon and selecting Script from the popup
menu (Figure 1.5b). You can open an existing M-file file with the Open command
from the “File” section on the Toolstrip.
An Edit/Debug Window displaying a simple M-file called calc_area.m
is shown in Figure 1.5. This file calculates the area of a circle given its radius
and displays the result. By default, the Edit Window is docked to the desktop, as
shown in Figure 1.5c. The Edit Window can also be undocked from the MATLAB
desktop. In that case, it appears within a container called the Documents Window,
as shown in Figure 1.5d. We will learn how to dock and undock a window later in
this chapter.
The Edit Window is essentially a programming text editor, with the MATLAB
language’s features highlighted in different colors. Comments in an M-file file appear
in green, variables and numbers appear in black, complete character strings appear in
magenta, incomplete character strings appear in red, and language keywords appear
in blue.
After an M-file is saved, it may be executed by typing its name in the Command
Window. For the M-file in Figure 1.5, the results are:
» calc_area
The area of the circle is 19.635
The Edit Window also doubles as a debugger, as we shall see in Chapter 2.
10 | Chapter 1 Introduction to MATLAB

(a) (b)

(c)
1.3 The MATLAB Environment | 11

(d)
Figure 1.5 (a) Creating a new M-file with the “New Script” command. (b) Creating
a new M-file with the “New >> Script” selection from the Toolbar. (c) The MATLAB
Editor, docked to the MATLAB desktop. (See color insert.) (d) The MATLAB Editor,
displayed as an independent window.

1.3.6 Figure Windows


A Figure Window is used to display MATLAB graphics. A figure can be a two- or
three-dimensional plot of data, an image, or a GUI. A simple script file that calculates
and plots the function sin x is as follows:
% sin_x.m: This M-file calculates and plots the
% function sin(x) for 0 <= x <= 6.
x = 0:0.1:6
y = sin(x)
plot(x,y)
If this file is saved under the name sin_x.m, then a user can execute the file by typ-
ing “sin_x” in the Command Window. When this script file is executed, MATLAB
opens a figure window and plots the function sin x in it. The resulting plot is shown
in Figure 1.6.
12 | Chapter 1 Introduction to MATLAB

Figure 1.6 MATLAB plot of sin x versus x.

1.3.7 Docking and Undocking Windows


MATLAB windows such as the Command Window, the Edit/Debugging Window, and
Figure Windows can either be docked to the desktop, or they can be undocked. When
a window is docked, it appears as a pane within the MATLAB desktop. When it is
undocked, it appears as an independent window on the computer screen separate from
the desktop. When a window is docked to the desktop, it can be undocked by selecting
the small down arrow in the upper-right corner and selecting the “Undock” option
from the popup menu (see Figure 1.7a). When a window is an independent window,
it can be docked to the desktop by selecting the small down arrow in the upper-right
corner and selecting the “Dock” option from the popup menu (see Figure 1.7b).

1.3.8 The MATLAB Workspace


A statement like
z = 10
creates a variable named z, stores the value 10 in it, and saves it in a part of computer
memory known as the workspace. A workspace is the collection of all the variables
and arrays that can be used by MATLAB when a particular command, M-file, or
function is executing. All commands executed in the Command Window (and all
1.3 The MATLAB Environment | 13

(a)

(b)

Figure 1.7 (a) Selecting the “Undock” option from the menu displayed after clicking the
small down arrow in the upper-right corner of a pane. (b) Selecting the “Dock” option
after clicking the small down arrow in the upper-right corner of an undocked window.

script files executed from the Command Window) share a common workspace, so
they can all share variables. As we will see later, MATLAB functions differ from
script files in that each function has its own separate workspace.
A list of the variables and arrays in the current workspace can be generated with
the whos command. For example, after M-files calc_area and sin_x are exe-
cuted, the workspace contains the following variables.
»     whos
Name Size Bytes Class Attributes

area 1x1 8 double


radius 1x1 8 double
string 1x32 64 char
x 1x61 488 double
y 1x61 488 double
14 | Chapter 1 Introduction to MATLAB

Script file calc_area created variables area, radius, and string, while
script file sin_x created variables x and y. Note that all of the variables are in the
same workspace, so if two script files are executed in succession, the second script
file can use variables created by the first script file.
The contents of any variable or array may be determined by typing the appro-
priate name in the Command Window. For example, the contents of string can be
found as follows:

» string
string =
The area of the circle is 19.635

A variable can be deleted from the workspace with the clear command. The
clear command takes the form

clear var1 var2 ...

where var1 and var2 are the names of the variables to be deleted. The com-
mand clear variables or simply clear deletes all variables from the current
workspace.

1.3.9 The Workspace Browser


The contents of the current workspace can also be examined with a GUI-based
Workspace Browser. The Workspace Browser appears by default in the right side
of the desktop. It provides a graphic display of the same information as the whos
command, and it also shows the actual contents of each array if the information is
short enough to fit within the display area. The Workspace Browser is dynamically
updated whenever the contents of the workspace change.
A typical Workspace Browser window is shown in Figure 1.8. As you can see, it
displays the same information as the whos command. Double-clicking on any vari-
able in the window will bring up the Array Editor, which allows the user to modify
the information stored in the variable.
One or more variables may be deleted from the workspace by selecting them in
the Workspace Browser with the mouse and pressing the delete key, or by right-click-
ing with the mouse and selecting the delete option.

1.3.10 The Current Folder Browser


The Current Folder Browser is displayed on the upper-left side of the desktop. It
shows all the files in the currently selected folder, and allows the user to edit or exe-
cute any desired file. You can double-click on any M-file to open it in the MATLAB
editor, or you can right-click it and select “Run” to execute it. The Current Folder
Browser is shown in Figure 1.9. A toolbar above the browser is used to select the
current folder to display.
1.3 The MATLAB Environment | 15

Array Editor allows the Workspace Browser


user to edit any variable shows a list of the
or array selected in the variables defined
Workspace Browser in the workspace

Figure 1.8 The Workspace Browser and Array Editor. The Array Editor
is invoked by double-clicking a variable in the Workspace Browser. It allows
you to change the values contained in a variable or array.

1.3.11 Getting Help


There are three ways to get help in MATLAB. The preferred method is to use the
Help Browser. The Help Browser can be started by selecting the icon from the
Toolstrip or by typing doc or helpwin in the Command Window. A user can get
help by browsing the MATLAB documentation, or he or she can search for the details
of a particular command. The Help Browser is shown in Figure 1.10.
There are also two command-line-oriented ways to get help. The first way is to
type help or help followed by a function name in the Command Window. If you
just type help, MATLAB will display a list of possible help topics in the Command
Window. If a specific function or a toolbox name is included, help will be provided
for that particular function or toolbox.
The second way to get help is the lookfor command. The lookfor com-
mand differs from the help command in that the help command searches for
an exact function name match, while the lookfor command searches the quick
summary information in each function for a match. This makes lookfor slower
than help, but it improves the chances of getting back useful information. For
example, suppose that you were looking for a function to take the inverse of a
matrix. Since MATLAB does not have a function named inverse, the command
16 | Chapter 1 Introduction to MATLAB

Selecting the
current folder

Current Folder
Browser

Figure 1.9 The Current Folder Browser.

“help inverse” will produce nothing. On the other hand, the command “look-
for inverse” will produce the following results:
» lookfor inverse
ifft - Inverse discrete Fourier transform.
ifft2      - Two-dimensional inverse discrete Fourier transform.
ifftn - N-dimensional inverse discrete Fourier transform.
ifftshift - Inverse FFT shift.
acos - Inverse cosine, result in radians.
acosd - Inverse cosine, result in degrees.
acosh - Inverse hyperbolic cosine.
acot - Inverse cotangent, result in radian.
acotd - Inverse cotangent, result in degrees.
acoth - Inverse hyperbolic cotangent.
Random documents with unrelated
content Scribd suggests to you:
INDEX
Quick Links to Index Letters
[A] [B] [C] [D] [E] [F] [G] [H] [I]
[J] [K] [L] [M] [N] [O] [P] [Q] [R]
[S] [T] [U] [V] [W] [Y] [Z]
A

Abromys lordi, 299

Accounts of species, 121

acutorostrata, Balaenoptera, 413

addenda, 416

aequalidens, Thomomys talpoides,


310

affinis,
Eutamias amoenus, 257
Tamias amoenus, 257

akeleyi, Peromyscus, 330

alascanus, Callorhinus, 246

alascensis, Myotis lucifugus, 148

Alaska fur seal, 246

albiventer,
Neosorex bendirii, 144
Sorex bendirii, 144

albiventris, Tamias amoenus, 416

Alce,
americana, 403
shirasi, 403
Alces,
americanus, 403
shirasi, 403

alexandrinus,
Mus, 364
Rattus rattus, 364

alpinus, Sciuropterus, 295

alticola, Neotoma cinerea, 336

altifrontalis,
Euarctos, 176
Mustela frenata, 198
Ursus, 176

americana,
Alce, 403
Antilocapra, 415, 416
Martes, 186
Mephitis, 217
Rupicapra, 409

americanus,
Euarctos, 176
Lepus, 382
Oreamnos, 406
Sitomys, 331
Ursus, 171

amoenus,
Eutamias, 255
Tamias, 253
angustirostris, Mirounga, 415, 416

angustus, Microtus, 353

Anisonyx rufa, 369

antelope, 415, 416

Antilocapra americana, 415, 416

Antrozous,
cantwelli, 169
pallidus, 169

Aplodontia,
columbiana, 369
grisea, 369
olympica, 369
raineri, 369
rainieri, 369
rufa, 366

Arctic-alpine Life-zone, 33

arcticus,
Rangifer, 404
Sorex, 132

Arctomys,
avarus, 263
columbianus, 275
douglasii, 276
flaviventer, 263
olympus, 267

Arean arean, 137


arizonensis, Mustela, 197

artemisia, Lepus, 387

artemisiae,
Peromyscus maniculatus, 332
Sitomys americanus, 332
Synaptomys borealis, 415

Artiodactyla, 118

Arvicola,
macropus, 356
nanus, 348
occidentalis, 351
oregoni, 357
pauperrimus, 359
townsendii, 351

arvicoloides,
Aulacomys, 356
Microtus, 356

asiaticus, Tamias, 262

Atophyrax bendirii, 144

Aulacomys arvicoloides, 356

austerus,
Hesperomys, 331
Peromyscus, 331
Sitomys americanus, 331

avara, Marmota flaviventris, 263


avarus, Arctomys flaviventer, 263

badger, 220

badius, Thomomys talpoides, 311

Baird beaked whale, 410

bairdi,
Lepus, 384
Sorex obscurus, 140

bairdii,
Berardius, 410
Delphinus, 410

Balaenoptera,
acutorostrata, 413
borealis, 413
physalus, 413

Balanus, 207

bangsi,
Glaucomys sabrinus, 295
Sciuropterus alpinus, 295

bat,
big-brown, 165
hoary, 168
long-eared, 161
pallid, 170
silvery-haired, 159

bats, mouse-eared, 146

beaked whale,
Baird, 410
Stejneger, 410

bear,
black, 170
grizzly, 176, 415

beaver, 315
mountain, 366

Beechey ground squirrel, 276

Bendirei, Atophyrax, 144

bendirii,
Atophyrax, 144
Sorex, 144
Neosorex, 144

Berardius bairdii, 410

bernardinus, Eptesicus fuscus,


165

bibliography, 417

big,
brown bat, 417
jumping mouse, 370
myotis, 147
Bison,
bison, 404
oregonus, 404

bison, Bison, 404

black bear, 171

blackfish, 411

black tailed,
deer, 399
jack rabbit, 385

blue whale, 413

bobcat, 241

borealis,
Balaenoptera, 413
Lissodelphis, 410
Lynx, 239
Synaptomys, 337

Brachylagus idahoensis, 390

breviceps, Kogia, 412

brown bat, big, 165

brunnescens, Ochotona princeps,


380

bushy-tailed wood rat, 333


C

California,
myotis, 156
red-backed mouse, 344
sea lion, 244

californiana, Ovis, 406

californianus,
Otaria, 244
Ovis, 406
Zalophus, 244

californicus,
Clethrionomys, 344
Lepus, 385
Myotis, 156
Vespertilio, 158

Callorhinus,
alascanus, 246
cynocephalus, 246
ursinus, 246

Callospermophilus,
chrysodeirus, 280
connectens, 280
lateralis, 279
saturatus, 281
tescorum, 279

Callotaria ursina cynocephala, 246

campestris, Lepus, 380


canadensis,
Castor, 315
Cervus, 391
Lutra, 205
Lynx, 239
Mustela, 187
Ovis, 405

Canadian,
Life-zone, 37
lynx, 239

Cancer productus, 180, 207

canescens, Microtus montanus,


349

canicaudus,
Eutamias amoenus, 257
Tamias amoenus, 257

Canis,
columbianus, 415
familiaris, 234
fuscus, 232
gigas, 232
incolatus, 231
irremotus, 415
latrans, 226
lestes, 226
lupus, 232
lycaon, 232
occidentalis, 232

cantwelli,
Antrozous pallidus, 169
Microtus oregoni, 357

Cariacus,
hemionus, 403
macrotis, 403

caribou, 404

carissima, Myotis lucifugus, 148

Carnivora, 113

carolinensis, Sciurus, 286

cascadensis,
Clethrionomys gapperi, 343
Lepus americanus, 384
Sciurus, 290
Vulpes, 224

Castor,
canadensis, 315
idoneus, 322
pacificus, 322
leucodonta, 322

cat, civet, 212

catodon, Physeter, 412

caurina,
Martes, 183
Mustela, 186

caurinus,
Eutamias, 255
Myotis californicus, 157
Tamias amoenus, 255

Cervus,
canadensis, 391
columbianus, 403
hemionus, 403
leucurus, 398
macrotis, 403
nelsoni, 394
occidentalis, 394
roosevelti, 394

Cetacea, 410

Check List, 112

cheiragonus, Telmessus, 207

chelan, Ursus, 176

Chincha,
hudsonica, 217
major, 218
occidentalis, 219
spissigrada, 219

chipmunk,
least, 251
red-tailed, 258
Townsend, 259
Yellow-pine, 253, 416

Chipmunks, 250

Chiroptera, 112
cicognanii, Mustela, 193

cinerea,
Atalapha, 168
Neotoma, 333

cinereus,
Lasiurus, 168
Sorex, 132
Vespertilio, 168

cinnamomum,
Euarctos, 176
Ursus, 176

Citellus,
beecheyi, 276
columbianus, 272
connectens, 280
douglasii, 276
lateralis, 278
loringi, 271
mollis, 268
ruficaudus, 275
saturatus, 281
tescorum, 279
townsendii, 268
washingtoni, 271
yakimensis, 268

civet cat, 212

Clethrionomys,
californicus, 344
cascadensis, 343
gapperi, 341
idahoensis, 342
nivarius, 343
occidentalis, 344
saturatus, 342

Climate and vegetation, 20

clusius, Thomomys, 310

Columbian ground squirrel, 272

columbianus,
Arctomys, 275
Canis lupus, 415
Cariacus, 403
Cervus, 403
Citellus, 272
Eucervus, 403
Odocoileus, 403
Perognathus, 299
Spermophilus, 275
Thomomys, 310

columbiensis,
Glaucomys sabrinus, 296
Lepus americanus, 385

concolor, Felis, 234

connectens,
Callospermophilus chrysodeirus,
280
Citellus lateralis, 280

cony, 377
cooperi,
Eutamias, 262
Tamias, 262

coots, 209

Corynorhinus,
macrotis, 163
megalotis, 163
intermedius, 164
rafinesquii, 161
townsendii, 163

cottontail,
Florida, 389
Nuttall, 387

couchi, Thomomys talpoides, 314

cougar, 234

coyote, 226

coypu, 376

crayfish, 209, 216

creeping mouse, 357

curtatus,
Lagurus, 359
Lemmiscus, 359

cuppes, Ochotona, 379


cynocephala, Callotaria, 246

cynocephalus,
Callorhinus, 246
Siren, 246

Dall porpoise, 412

dalli, Phocenoides, 412

deer,
black-tailed, 399
mouse, 327
mule, 399
white-tailed, 395

Delphinus bairdii, 410

dermestes, 162

deserticola, Lepus californicus,


385

destructioni, Sorex trowbridgii,


136

devexus, Thomomys talpoides,


309

Didelphis virginiana, 121

Dipodomys,
columbianus, 300
ordii, 300

Distributional,
areas, 20
history, 68

dog, 234

dolphin, 410

dorsata, Mazama, 409

dorsatum, Erethizon, 374

Douglas squirrel, 290

douglasii,
Arctomys, 276
Citellus, 276
Geomys, 312
Otospermophilus grammurus,
276
Sciurus, 290
Spermophilus, 276
Tamiasciurus, 290
Thomomys, 312

drummondii, Microtus, 346

Dytiscidae, 216

Ecology, Life-zones and, 32


edulis, Mytilus, 180, 207

effera, Mustela frenata, 198

elk, 391

Emmigrational history, 54

energumenos,
Mustela vison, 199
Putorius vison, 199

Enhydra lutris nereis, 211

epixanthum, Erethizon, 376

Eptesicus,
bernardinus, 165
fuscus, 165
pallidus, 165

Erethizon,
dorsatum, 374
epixanthum, 376
epixanthus, 376
nigrescens, 376

ericacus, Thomomys talpoides,


309

eriomerus, Petrolisthes, 180, 207

ermine, 191

erminea, Mustela, 190


Euarctos,
altifrontalis, 176
americanus, 176
cinnamomum, 176

Eubalaena sieboldii, 414

Eumetopias,
jubata, 244
stelleri, 244

Eutamias,
affinis, 257
albiventris, 416
amoenus, 255
canicaudus, 257
caurinus, 255
cooperi, 262
felix, 262
grisescens, 253
ludibundus, 257
luteiventris, 258
minimus, 252
pictus, 252
quadrivittatus, 256
ruficaudus, 258
scrutator, 252
simulans, 258
townsendii, 258

evotis,
Myotis, 151
Vespertilio, 153

Evotomys,
gapperi, 342
idahoensis, 342
nivarius, 343
occidentalis, 344
pygmaeus, 344
saturatus, 342

excelsus, Procyon lotor, 182

fallenda, Mustela erminea, 191

familiaris, Canis, 234

fasciatus, Lynx, 243

Faunas,
Great Basin, 32
Pacific Coastal, 52
Rocky Mountain, 53

Felis,
concolor, 234
hippolestes, 237
olympus, 237
oregonensis, 237
missoulensis, 237

felix,
Eutamias amoenus, 256
Tamias amoenus, 256

fenisex, Ochotona, 379

Fiber,
occipitalis, 363
osoyoosensis, 363
zibethicus, 363

finback whale, 413

fisher, 187

flaviventris, Marmota, 263

Florida cottontail, 389

floridanus,
Lepus sylvaticus, 389
Sylvilagus, 389

flying squirrel, northern, 292

foetulenta, Mephitis, 219

fox,
red, 224
squirrel, 286

frenata, Mustela, 194

fringe-tailed myotis, 153

fuliginosus,
Geomys, 312
Glaucomys sabrinus, 296

fulva, Vulpes, 224

funebris, Microtus pennsylvanicus,


346
fur seal, 246

fuscogriseus, Onychomys
leucogaster, 323

fuscus,
Canis lupus, 232
Eptesicus, 165
Thomomys, 310

gambelii,
Hesperomys, 331
Peromyscus maniculatus, 331
Sitomys americanus, 331

gapperi,
Clethrionomys, 341
Evotomys, 342

Gapper red-backed mouse, 341

Geologic history, 46

Geomys,
douglasii, 312
fuliginosus, 312

gibbsii,
Neurotrichus, 124, 122
Urotrichus, 124

gigas,
Canis, 232
Lupus, 232

glacialis, Thomomys talpoides,


312

Glaciation, 47

Glaucomys,
bangsi, 295
columbiensis, 296
fuliginosus, 296
latipes, 296
olympicus, 295
oregonensis, 295
sabrinus, 292

glaucus, Rhachianectes, 412

Globicephalus scammonii, 411

goat, mountain, 406

Golden-mantled ground squirrel,


278, 281

gopher, northern pocket, 302

gracilis, Spilogale, 212

grammurus,
Otospermophilus, 276
Spermophilus, 276

Grampidelphis griseus, 411


Grampus rectipinna, 411

grampus, 411

grasshopper mouse, northern,


323

gray squirrel,
eastern, 286
western, 284

gray whale, 412

Great Basin pocket mouse, 297

grisea, Aplodontia rufa, 369

grisescens,
Eutamias minimus, 253
Tamias minimus, 253

griseus,
Grampidelphis, 411
Sciurus, 284

ground squirrel,
Beechey, 276
Columbian, 272
golden-mantled, 278, 281
Townsend, 268
Washington, 271

gryphus, Vespertilio, 148

gulosa, Mustela erminea, 193


H

hair seal, 247

hairy-winged myotis, 154

halli, Microtus longicaudus, 353

Haplodon rufus, 369

Haplodontia,
raineri, 369
rufa, 369

harbor,
porpoise, 412
seal, 247

harvest mouse, western, 324

heather vole, 338

Helisoma occidentalis, 137

Hemigrapsus,
oregonensis, 180
nudus, 180, 207, 216

hemionus,
Cervus, 403
Odocoileus, 403

Hesperomys,
austerus, 331
gambelii, 331
hesperus,
Pipistrellus, 165
Scotophilus, 165
Vespertilio, 165

hippolestes, Felis, 237

hoary marmot, 265

hollisteri, Peromyscus
maniculatus, 330

house mouse, 365

hoyi, Microsorex, 145

Hudsonian Life-zone, 39

hudsonica,
Chincha, 217
Lutra, 210
Mephitis, 217

hudsonicus,
Sciurus, 288
Tamiasciurus, 286

humpback whale, 413

Hyla, 180
regilla, 137

hypophaeus, Sciurus carolinensis,


286
hypothetical list, 415

idahoensis,
Brachylagus, 390
Clethrionomys gapperi, 342
Evotomys, 342
Lepus, 390
Sylvilagus, 390
Zapus princeps, 373

idoneus, Castor canadensis, 322

immunis, Thomomys talpoides,


311

imperator, Zapus, 372

incolatus, Canis latrans, 231

Insectivora, 112

interior, Myotis volans, 155

intermedius,
Corynorhinus rafinesquii, 164
Phenacomys, 338

invicta, Mustela erminea, 191

irremotus, Canis lupus, 415

J
jack rabbit,
black-tailed, 385
white-tailed, 380

jubata,
Eumetopias, 244
Phoca, 244

jumping mouse, big, 370

kangaroo rat, Ord, 300

Keen myotis, 151

keenii,
Myotis, 151
Vespertilio, 151

killer whale, 411

kincaidi, Microtus pennsylvanicus,


347

Kogia breviceps, 412

kootenayensis, Zapus princeps,


373

Lagenorhynchus obliquidens, 411


Lagomorpha, 118

Lagomys minimus, 379

Lagurus,
curtatus, 359
pauperrimus, 359

laingi, Perognathus parvus, 415

Lasionycteris noctivagans, 159

Latax lutris nereis, 211

lateralis,
Callospermophilus, 279
Citellus, 278
Spermophilus, 281
Tamias, 281

latifrons, Spilogale, 215

latipes, Glaucomys sabrinus, 296

latrans, Canis, 226

lemming mouse, northern, 337

Lemmiscus,
curtatus, 359
pauperrimus, 359

lepta, Mustela cicognanii, 193

Lepus,

You might also like