Nothing Special   »   [go: up one dir, main page]

(Download PDF) Matlab Programming For Engineers 6Th Edition Stephen J Chapman Full Chapter PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 69

MATLAB Programming for Engineers

6th Edition Stephen J. Chapman


Visit to download the full and correct content document:
https://ebookmass.com/product/matlab-programming-for-engineers-6th-edition-stephe
n-j-chapman/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Fortran for Scientists and Engineers 4th Edition


Stephen J. Chapman

https://ebookmass.com/product/fortran-for-scientists-and-
engineers-4th-edition-stephen-j-chapman/

MATLAB for Engineers 6th Edition Holly Moore

https://ebookmass.com/product/matlab-for-engineers-6th-edition-
holly-moore/

Essential MATLAB for engineers and scientists 6th


edition Edition Hahn

https://ebookmass.com/product/essential-matlab-for-engineers-and-
scientists-6th-edition-edition-hahn/

Essential MATLAB for engineers and scientists Sixth


Edition. Edition Hahn

https://ebookmass.com/product/essential-matlab-for-engineers-and-
scientists-sixth-edition-edition-hahn/
Essential MATLAB for engineers and scientists 7th
Edition Edition Hahn

https://ebookmass.com/product/essential-matlab-for-engineers-and-
scientists-7th-edition-edition-hahn/

Essential MATLAB for engineers and scientists 7th


Edition Hahn B.D.

https://ebookmass.com/product/essential-matlab-for-engineers-and-
scientists-7th-edition-hahn-b-d/

Essential MATLAB for Engineers and Scientists Brian D.


Hahn & Daniel T. Valentine

https://ebookmass.com/product/essential-matlab-for-engineers-and-
scientists-brian-d-hahn-daniel-t-valentine/

(eBook PDF) Essentials of MATLAB Programming 3rd


Edition

https://ebookmass.com/product/ebook-pdf-essentials-of-matlab-
programming-3rd-edition/

Applied Numerical Methods with MATLAB for Engineers and


Scientists, 5th Edition Steven C. Chapra

https://ebookmass.com/product/applied-numerical-methods-with-
matlab-for-engineers-and-scientists-5th-edition-steven-c-chapra/
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.
Another random document with
no related content on Scribd:
than as something antecedent to the first progress towards
systematic knowledge.

The information thus collected by the unsystematic writers is of


various kinds; and relates to the economical and medicinal uses of
plants, their habits, mode of cultivation, and many other
circumstances: it frequently includes some description; but this is
always extremely imperfect, because the essential conditions of
description had not been discovered. Of works composed of
materials so heterogeneous, it can be of little use to produce
specimens; but I may quote a few words from Theophrastus, which
may serve to connect him with the future history of the science, as
bearing upon one of the many problems respecting the identification
of ancient and modern plants. It has been made a question whether
the following description does not refer to the potato. 12 He is
speaking of the differences of roots: “Some roots,” he says, “are still
different from those which have been described; as that of the
arachidna 13 plant: for this bears fruit underground as well as above:
the fleshy part sends one thick root deep into the ground, but the
others, which bear the fruit, are more slender 363 and higher up, and
ramified. It loves a sandy soil, and has no leaf whatever.”
12 Theoph. i. 11.

13 Most probably the Arachnis hypogæa, or ground-nut.


~Correction to text in the 3rd edition.~

The books of Aristotle and Theophrastus soon took the place of


the Book of Nature in the attention of the degenerate philosophers
who succeeded them. A story is told by Strabo 14 concerning the fate
of the works of these great naturalists. In the case of the wars and
changes which occurred among the successors of Alexander, the
heirs of Theophrastus tried to secure to themselves his books, and
those of his master, by burying them in the ground. There the
manuscripts suffered much from damp and worms; till Apollonicon, a
book-collector of those days, purchased them, and attempted, in his
own way, to supply what time had obliterated. When Sylla marched
the Roman troops into Athens, he took possession of the library of
Apollonicon; and the works which it contained were soon circulated
among the learned of Rome and Alexandria, who were thus enabled
to Aristotelize 15 on botany as on other subjects.
14 Strabo, lib. xiii. c. i. § 54.

15 Ἀριστοτλίζειν.

The library collected by the Attalic kings of Pergamus, and the


Alexandrian Museum, founded and supported by the Ptolemies of
Egypt, rather fostered the commentatorial spirit than promoted the
increase of any real knowledge of nature. The Romans, in this as in
other subjects, were practical, not speculative. They had, in the
times of their national vigor, several writers on agriculture, who were
highly esteemed; but no author, till we come to Pliny, who dwells on
the mere knowledge of plants. And even in Pliny, it is easy to
perceive that we have before us a writer who extracted his
information principally from books. This remarkable man, 16 in the
middle of a public and active life, of campaigns and voyages,
contrived to accumulate, by reading and study, an extraordinary
store of knowledge of all kinds. So unwilling was he to have his
reading and note-making interrupted, that, even before day-break in
winter, and from his litter as he travelled, he was wont to dictate to
his amanuensis, who was obliged to preserve his hand from the
numbness which the cold occasioned, by the use of gloves. 17
16 Sprengel, i. 163.

17 Plin. Jun. Epist. 3, 5.

It has been ingeniously observed, that we may find traces in the


botanical part of his Natural History, of the errors which this hurried
and broken habit of study produced; and that he appears frequently
to have had books read to him and to have heard them amiss. 18
Thus, 364 among several other instances, Theophrastus having said
that the plane-tree is in Italy rare, 19 Pliny, misled by the similarity of
the Greek word (spanian, rare), says that the tree occurs in Italy and
Spain. 20 His work has, with great propriety, been called the
Encyclopædia of Antiquity; and, in truth, there are few portions of the
learning of the times to which it does not refer. Of the thirty-seven
Books of which it consists, no less than sixteen (from the twelfth to
the twenty-seventh) relate to plants. The information which is
collected in these books, is of the most miscellaneous kind; and the
author admits, with little distinction, truth and error, useful knowledge
and absurd fables. The declamatory style, and the comprehensive
and lofty tone of thought which we have already spoken of as
characteristic of the Roman writers, are peculiarly observable in him.
The manner of his death is well known: it was occasioned by the
eruption of Vesuvius, a.d. 79, to which, in his curiosity, he ventured
so near as to be suffocated.
18 Sprengel, i. 163.

19Theoph. iv. 7. Ἔν μὲν γὰρ τῷ Ἀδρίᾳ πλάτανον οὐ φασὶν εἶναι


πλῆν περὶ το Διομήδους ἱερόν, σ π α ν ί α ν δὲ καὶ ἐν Ἰταλίᾳ πάσῃ

20 Plin. Nat. Hist. xii. 3. Et alias (platanos) fuisse in Italia, ac


nominatim Hispania, apud auctores invenitur.
Pliny’s work acquired an almost unlimited authority, as one of the
standards of botanical knowledge, in the middle ages; but even more
than his, that of his contemporary, Pedanius Dioscorides, of
Anazarbus in Cilicia. This work, written in Greek, is held by the best
judges 21 to offer no evidence that the author observed for himself.
Yet he says expressly in his Preface, that his love of natural history,
and his military life, have led him into many countries, in which he
has had opportunity to become acquainted with the nature of herbs
and trees. 22 He speaks of six hundred plants, but often indicates
only their names and properties, giving no description by which they
can be identified. The main cause of his great reputation in
subsequent times was, that he says much of the medicinal virtues of
vegetables.
21 Mirbel, 510.

22 Sprengel, i. 136.

We come now to the ages of darkness and lethargy, when the


habit of original thought seems to die away, as the talent of original
observation had done before. Commentators and mystics succeed to
the philosophical naturalists of better times. And though a new race,
altogether distinct in blood and character from the Greek,
appropriates to itself the stores of Grecian learning, this movement
does not, as might be expected, break the chains of literary slavery.
The Arabs 365 bring, to the cultivation of the science of the Greeks,
their own oriental habit of submission, their oriental love of wonder;
and thus, while they swell the herd of commentators and mystics,
they produce no philosopher.

Yet the Arabs discharged an important function in the history of


human knowledge, 23 by preserving, and transmitting to more
enlightened times, the intellectual treasures of antiquity. The
unhappy dissensions which took place in the Christian church had
scattered these treasures over the East, at a period much
antecedent to the rise of the Saracen power. In the fifth century, the
adherents of Nestorius, bishop of Constantinople, were declared
heretical by the Council of Ephesus (a.d. 431), and driven into exile.
In this manner, many of the most learned and ingenious men of the
Christian world were removed to the Euphrates, where they formed
the Chaldean church, erected the celebrated Nestorian school of
Edessa, and gave rise to many offsets from this in various regions.
Already, in the fifth century, Hibas, Cumas, and Probus, translated
the writings of Aristotle into Syriac. But the learned Nestorians paid
an especial attention to the art of medicine, and were the most
zealous students of the works of the Greek physicians. At
Djondisabor, in Khusistan, they became an ostensible medical
school, who distributed academical honors as the result of public
disputations. The califs of Bagdad heard of the fame and the wisdom
of the doctors of Djondisabor, summoned some of them to Bagdad,
and took measures for the foundation of a school of learning in that
city. The value of the skill, the learning, and the virtues of the
Nestorians, was so strongly felt, that they were allowed by the
Mohammedans the free exercise of the Christian religion, and
intrusted with the conduct of the studies of those of the Moslemin,
whose education was most cared for. The affinity of the Syriac and
Arabic languages made the task of instruction more easy. The
Nestorians translated the works of the ancients out of the former into
the latter language: hence there are still found Arabic manuscripts of
Dioscorides, with Syriac words in the margin. Pliny and Aristotle
likewise assumed an Arabic dress; and were, as well as Dioscorides,
the foundation of instruction in all the Arabian academies; of which a
great number were established throughout the Saracen empire, from
Bokhara in the remotest east, to Marocco and Cordova in the west.
After some time, the Mohammedans themselves began to translate
and 366 extract from their Syriac sources; and at length to write
works of their own. And thus arose vast libraries, such as that of
Cordova, which contained 250,000 volumes.
23 Sprengel, i. 203.

The Nestorians are stated 24 to have first established among the


Arabs those collections of medicinal substances (Apothecæ), from
which our term Apothecary is taken; and to have written books
(Dispensatoria) containing systematic instructions for the
employment of these medicaments; a word which long continued to
be implied in the same sense, and which we also retain, though in a
modified application (Dispensary).
24 Sprengel, i. 205.

The directors of these collections were supposed to be intimately


acquainted with plants; and yet, in truth, the knowledge of plants
owed but little to them; for the Arabic Dioscorides was the source
and standard of their knowledge. The flourishing commerce of the
Arabians, their numerous and distant journeys, made them, no
doubt, practically acquainted with the productions of lands unknown
to the Greeks and Romans. Their Nestorian teachers had
established Christianity even as far as China and Malabar; and their
travellers mention 25 the camphor of Sumatra, the aloe-wood of
Socotra near Java, the tea of China. But they never learned the art
of converting their practical into speculative knowledge. They treat of
plants only in so far as their use in medicine is concerned, 26 and
followed Dioscorides in the description, and even in the order of the
plants, except when they arrange them according to the Arabic
alphabet. With little clearness of view, they often mistake what they
read: 27 thus when Dioscorides says that ligusticon grows on the
Apennine, a mountain not far from the Alps; Avicenna, misled by a
resemblance of the Arabic letters, quotes him as saying that the
plant grows on Akabis, a mountain near Egypt.
25 Sprengel, i. 206.

26 Ib. i. 207.

27 Ib. i. 211.

It is of little use to enumerate such writers. One of the most noted


of them was Mesuë, physician of the Calif of Kahirah. His work,
which was translated into Latin at a later period, was entitled, On
Simple Medicines; a title which was common to many medical
treatises, from the time of Galen in the second century. Indeed, of
this opposition of simple and compound medicines, we still have
traces in our language: 367

He would ope his leathern scrip,


And show me simples of a thousand names,
Telling their strange and vigorous faculties.
Milton, Comus.

Where the subject of our history is so entirely at a stand, it is


unprofitable to dwell on a list of names. The Arabians, small as their
science was, were able to instruct the Christians. Their writings were
translated by learned Europeans, for instance Michael Scot, and
Constantine of Africa, a Carthaginian who had lived forty years
among the Saracens 28 and who died a.d. 1087. Among his works, is
a Treatise, De Gradibus, which contains the Arabian medicinal lore.
In the thirteenth century occur Encyclopædias, as that of Albertus
Magnus, and of Vincent of Beauvais; but these contain no natural
history except traditions and fables. Even the ancient writers were
altogether perverted and disfigured. The Dioscorides of the middle
ages varied materially from ours. 29 Monks, merchants, and
adventurers travelled far, but knowledge was little increased. Simon
of Genoa, 30 a writer on plants in the fourteenth century, boasts that
he perambulated the East in order to collect plants. “Yet in his Clavis
Sanationis,” says a modern botanical writer, 31 “we discover no trace
of an acquaintance with nature. He merely compares the Greek,
Arabic, and Latin names of plants, and gives their medicinal effect
after his predecessors:”—so little true is it, that the use of the senses
alone necessarily leads to real knowledge.
28 Sprengel, i. 230.

29 Ib. i. 239.

30 Ib. i. 241.

31 Ib. ib.

Though the growing activity of thought in Europe, and the revived


acquaintance with the authors of Greece in their genuine form, were
gradually dispelling the intellectual clouds of the middle ages, yet
during the fifteenth century, botany makes no approach to a scientific
form. The greater part of the literature of this subject consisted of
Herbals, all of which were formed on the same plan, and appeared
under titles such as Hortus, or Ortus Sanitatis. There are, for
example, three 32 such German Herbals, with woodcuts, which date
about 1490. But an important peculiarity in these works is that they
contain some indigenous species placed side by side with the old
ones. In 1516, The Grete Herbal was published in England, also with
woodcuts. It contains an account of more than four hundred
vegetables, and their 368 products; of which one hundred and fifty
are English, and are no way distinguished from the exotics by the
mode in which they are inserted in the work.
32 Augsburg, 1488. Mainz, 1491. Lubec, 1492.

We shall see, in the next chapter, that when the intellect of Europe
began really to apply itself to the observation of nature, the progress
towards genuine science soon began to be visible, in this as in other
subjects; but before this tendency could operate freely, the history of
botany was destined to show, in another instance, how much more
grateful to man, even when roused to intelligence and activity, is the
study of tradition than the study of nature. When the scholars of
Europe had become acquainted with the genuine works of the
ancients in the original languages, the pleasure and admiration
which they felt, led them to the most zealous endeavors to illustrate
and apply what they read. They fell into the error of supposing that
the plants described by Theophrastus, Dioscorides, Pliny, must be
those which grew in their own fields. And thus Ruellius, 33 a French
physician, who only travelled in the environs of Paris and Picardy,
imagined that he found there the plants of Italy and Greece. The
originators of genuine botany in Germany, Brunfels and Tragus
(Bock), committed the same mistake; and hence arose the
misapplication of classical names to many genera. The labors of
many other learned men took the same direction, of treating the
ancient writers as if they alone were the sources of knowledge and
truth.
33 De Natura Stirpium, 1536.
But the philosophical spirit of Europe was already too vigorous to
allow this superstitious erudition to exercise a lasting sway.
Leonicenus, who taught at Ferrara till he was almost a hundred
years old, and died in 1524, 34 disputed, with great freedom, the
authority of the Arabian writers, and even of Pliny. He saw, and
showed by many examples, how little Pliny himself knew of nature,
and how many errors he had made or transmitted. The same
independence of thought with regard to other ancient writers, was
manifested by other scholars. Yet the power of ancient authority
melted away but gradually. Thus Antonius Brassavola, who
established on the banks of the Po the first botanical garden of
modern times, published in 1536, his Examen omnium Simplicium
Medicamentorum; and, as Cuvier says, 35 though he studied plants in
nature, his book (written in the 369 Platonic form of dialogue), has
still the character of a commentary on the ancients.
34 Sprengel, i. 252.

35 Hist. des Sc. Nat. partie ii. 169.

The Germans appear to have been the first to liberate themselves


from this thraldom, and to publish works founded mainly on actual
observation. The first of the botanists who had this great merit is
Otho Brunfels of Mentz, whose work, Herbarum Vivæ Icones,
appeared in 1530. It consists of two volumes in folio, with wood-cuts;
and in 1532, a German edition was published. The plants which it
contains are given without any arrangement, and thus he belongs to
the period of unsystematic knowledge. Yet the progress towards the
formation of a system manifested itself so immediately in the series
of German botanists to which he belongs, that we might with almost
equal propriety transfer him to the history of that progress; to which
we now proceed.
CHAPTER III.

Formation of a System of Arrangement of Plants.

Sect. 1.—Prelude to the Epoch of Cæsalpinus.

T HE arrangement of plants in the earliest works was either


arbitrary, or according to their use, or some other extraneous
circumstance, as in Pliny. This and the division of vegetables by
Dioscorides into aromatic, alimentary, medicinal, vinous, is, as will
be easily seen, a merely casual distribution. The Arabian writers, and
those of the middle ages, showed still more clearly their insensibility
to the nature of system, by adopting an alphabetical arrangement;
which was employed also in the Herbals of the sixteenth century.
Brunfels, as we have said, adopted no principle of order; nor did his
successor, Fuchs. Yet the latter writer urged his countrymen to put
aside their Arabian and barbarous Latin doctors, and to observe the
vegetable kingdom for themselves; and he himself set the example
of doing this, examined plants with zeal and accuracy, and made
above fifteen hundred drawings of them. 36
36 His Historia Stirpium was published at Basil in 1542.

370 The difficulty of representing plants in any useful way by


means of drawings, is greater, perhaps, than it at first appears. So
long as no distinction was made of the importance of different organs
of the plant, a picture representing merely the obvious general
appearance and larger parts, was of comparatively small value.
Hence we are not to wonder at the slighting manner in which Pliny
speaks of such records. “Those who gave such pictures of plants,”
he says, “Crateuas, Dionysius, Metrodorus, have shown nothing
clearly, except the difficulty of their undertaking. A picture may be
mistaken, and is changed and disfigured by copyists; and, without
these imperfections, it is not enough to represent the plant in one
state, since it has four different aspects in the four seasons of the
year.”

The diffusion of the habit of exact drawing, especially among the


countrymen of Albert Durer and Lucas Cranach, and the invention of
wood-cuts and copper-plates, remedied some of these defects.
Moreover, the conviction gradually arose in men’s minds that the
structure of the flower and the fruit are the most important
circumstances in fixing the identity of the plant. Theophrastus speaks
with precision of the organs which he describes, but these are
principally the leaves, roots, and stems. Fuchs uses the term apices
for the anthers, and gluma for the blossom of grasses, thus showing
that he had noticed these parts as generally present.

In the next writer whom we have to mention, we find some traces


of a perception of the real resemblances of plants beginning to
appear. It is impossible to explain the progress of such views without
assuming in the reader some acquaintance with plants; but a very
few words may suffice to convey the requisite notions. Even in plants
which most commonly come in our way, we may perceive instances
of the resemblances of which we speak. Thus, Mint, Marjoram, Basil,
Sage, Lavender, Thyme, Dead-nettle, and many other plants, have a
tubular flower, of which the mouth is divided into two lips; hence they
are formed into a family, and termed Labiatæ. Again, the Stock, the
Wall-flower, the Mustard, the Cress, the Lady-smock, the Shepherd’s
purse, have, among other similarities, their blossoms with four petals
arranged crosswise; these are all of the order Cruciferæ. Other
flowers, apparently more complex, still resemble each other, as
Daisy. Marigold, Aster, and Chamomile; these belong to the order
Compositæ. And though the members of each such family may differ
widely in their larger parts, their stems and leaves, the close study of
nature leads the botanist irresistibly to consider their resemblances
as 371 occupying a far more important place than their differences. It
is the general establishment of this conviction and its consequences
which we have now to follow.

The first writer in whom we find the traces of an arrangement


depending upon these natural resemblances, is Hieronymus Tragus,
(Jerom Bock,) a laborious German botanist, who, in 1551, published
a herbal. In this work, several of the species included in those
natural families to which we have alluded, 37 as for instance the
Labiatæ, the Cruciferæ, the Compositæ, are for the most part
brought together; and thus, although with many mistakes as to such
connexions, a new principle of order is introduced into the subject.
37 Sprengel, i. 270.

In pursuing the development of such principles of natural order, it


is necessary to recollect that the principles lead to an assemblage of
divisions and groups, successively subordinate, the lower to the
higher, like the brigades, regiments, and companies of an army, or
the provinces, towns, and parishes of a kingdom. Species are
included in Genera, Genera in Families or Orders, and orders in
Classes. The perception that there is some connexion among the
species of plants, was the first essential step; the detection of
different marks and characters which should give, on the one hand,
limited groups, on the other, comprehensive divisions, were other
highly important parts of this advance. To point out every successive
movement in this progress would be a task of extreme difficulty, but
we may note, as the most prominent portions of it, the establishment
of the groups which immediately include Species, that is, the
formation of Genera; and the invention of a method which should
distribute into consistent and distinct divisions the whole vegetable
kingdom, that is, the construction of a System.

To the second of these two steps we have no difficulty in assigning


its proper author. It belongs to Cæsalpinus, and marks the first great
epoch of this science. It is less easy to state to what botanist is due
the establishment of Genera; yet we may justly assign the greater
part of the merit of this invention, as is usually done, to Conrad
Gessner of Zurich. This eminent naturalist, after publishing his great
work on animals, died 38 of the plague in 1565, at the age of forty-
nine, while he was preparing to publish a History of Plants, a sequel
to his History of Animals. The fate of the work thus left 372 unfinished
was remarkable. It fell into the hands of his pupil, Gaspard Wolf, who
was to have published it, but wanting leisure for the office, sold it to
Joachim Camerarius, a physician and botanist of Nuremberg, who
made use of the engravings prepared by Gessner, in an Epitome
which he published in 1586. The text of Gessner’s work, after
passing through various hands, was published in 1754 under the title
of Gessneri Opera Botanica per duo Sæcula desiderata, &c., but is
very incomplete.
38 Cuvier, Leçons sur l’Hist. des Sciences Naturelles, partie ii. p.
193.

The imperfect state in which Gessner left his botanical labors,


makes it necessary to seek the evidence of his peculiar views in
scattered passages of his correspondence and other works. One of
his great merits was, that he saw the peculiar importance of the
flower and fruit as affording the characters by which the affinities of
plants were to be detected; and that he urged this view upon his
contemporaries. His plates present to us, by the side of each plant,
its flower and its fruit, carefully engraved. And in his communications
with his botanical correspondents, he repeatedly insists on these
parts. Thus 39 in 1565 he writes to Zuinger concerning some foreign
plants which the latter possessed: “Tell me if your plants have fruit
and flower, as well as stalk and leaves, for those are of much the
greater consequence. By these three marks,—flower, fruit, and seed,
—I find that Saxifraga and Consolida Regalis are related to Aconite.”
These characters, derived from the fructification (as the assemblage
of flower and fruit is called), are the means by which genera are
established, and hence, by the best botanists, Gessner is declared
to be the inventor of genera. 40
39 Epistolæ, fol. 113 a; see also fol. 65 b.

40 Haller, Biblio Botanica, i. 284. Methodi Botanicæ rationem


primus pervidit;—dari nempe et genera quæ plures species
comprehenderent et classes quæ multa genera. Varias etiam
classes naturales expressit. Characterem in flore inque semine
posuit, &c.—Rauwolfio Socio Epist. Wolf, p. 39.
Linnæus, Genera Plantarum, Pref. xiii. “A fructificatione plantas
distinguere in genera, infinitæ sapientiæ placuisse, detexit
posterior ætas, et quidem primus, sæculi sui ornamentum,
Conradus Gessnerus, uti patet ex Epistolis ejus postremis, et
Tabulis per Carmerarium editis.”
Cuvier says (Hist. des Sc. Nat. 2e pe, p. 193), after speaking to
the same effect, “Il fit voir encore que toutes les plantes qui ont
des fleurs et des fruits semblables se ressemblent par leurs
propriétés, et que quand on rapproche ces plantes on obtient
ainsi une classification naturelle.” I do not know if he here refers to
any particular passages of Gessner’s work.
373 The labors of Gessner in botany, both on account of the
unfinished state in which he left the application of his principles, and
on account of the absence of any principles manifestly applicable to
the whole extent of the vegetable kingdom, can only be considered
as a prelude to the epoch in which those defects were supplied. To
that epoch we now proceed.

Sect. 2.—Epoch of Cæsalpinus.—Formation of a System of


Arrangement.

If any one were disposed to question whether Natural History truly


belongs to the domain of Inductive Science;—whether it is to be
prosecuted by the same methods, and requires the same
endowments of mind as those which lead to the successful
cultivation of the Physical Sciences,—the circumstances under
which Botany has made its advance appear fitted to remove such
doubts. The first decided step in this study was merely the
construction of a classification of its subjects. We shall, I trust, be
able to show that such a classification includes, in reality, the
establishment of one general principle, and leads to more. But
without here dwelling on this point, it is worth notice that the person
to whom we owe this classification, Andreas Cæsalpinus of Arezzo,
was one of the most philosophical men of his time, profoundly skilled
in the Aristotelian lore which was then esteemed, yet gifted with
courage and sagacity which enabled him to weigh the value of the
Peripatetic doctrines, to reject what seemed error, and to look
onwards to a better philosophy. “How are we to understand,” he
inquires, “that we must proceed from universals to particulars (as
Aristotle directs), when particulars are better known?” 41 Yet he treats
the Master with deference, and, as has been observed, 42 we see in
his great botanical work deep traces of the best features of the
Aristotelian school, logic and method; and, indeed, in this work he
frequently refers to his Quæstiones Peripateticæ. His book, entitled
De Plantis libri xvi. appeared at Florence in 1583. The aspect under
which his task presented itself to his mind appears to me to possess
so much interest, that I will transcribe a few of his reflections. After
speaking of the splendid multiplicity of the productions of nature, and
the confusion which has hitherto prevailed among writers on plants,
374 the growing treasures of the botanical world; he adds, 43 “In this
immense multitude of plants, I see that want which is most felt in any
other unordered crowd: if such an assemblage be not arranged into
brigades like an army, all must be tumult and fluctuation. And this
accordingly happens in the treatment of plants: for the mind is
overwhelmed by the confused accumulation of things, and thus arise
endless mistake and angry altercation.” He then states his general
view, which, as we shall see, was adopted by his successors. “Since
all science consists in the collection of similar, and the distinction of
dissimilar things, and since the consequence of this is a distribution
into genera and species, which are to be natural classes governed
by real differences, I have attempted to execute this task in the
whole range of plants;—ut si quid pro ingenii mei tenuitate in
hujusmodi studio profecerim, ad communem utilitatem proferam.”
We see here how clearly he claims for himself the credit of being the
first to execute this task of arrangement.
41 Quæstiones Peripateticæ, (1569,) lib. i. quæst. i.

42 Cuvier, p. 198.

43 Dedicatio, a 2.
After certain preparatory speculations, he says, 44 “Let us now
endeavor to mark the kinds of plants by essential circumstances in
the fructification.” He then observes, “In the constitution of organs
three things are mainly important—the number, the position, the
figure.” And he then proceeds to exemplify this: “Some have under
one flower, one seed, as Amygdala, or one seed-receptacle, as
Rosa; or two seeds, as Ferularia, or two seed-receptacles, as
Nasturtium; or three, as the Tithymalum kind have three seeds, the
Bulbaceæ three receptacles; or four, as Marrubium, four seeds,
Siler four receptacles; or more, as Cicoraceæ, and Acanaceæ have
more seeds, Pinus, more receptacles.”
44 Lib. i. c. 13, 14.

It will be observed that we have here ten classes made out by


means of number alone, added to the consideration of whether the
seed is alone in its covering, as in a cherry, or contained in a
receptacle with several others, as in a berry, pod, or capsule.
Several of these divisions are, however, further subdivided according
to other circumstances, and especially according as the vital part of
the seed, which he called the heart (cor 45 ), is situated in the upper or
lower part of the seed. As our object here is only to indicate the
principle of the method of Cæsalpinus, I need not further dwell on
the details, and still less on the defects by which it is disfigured, as,
for instance, the retention of the old distinction of Trees, Shrubs, and
Herbs.
45 Corculum, of Linnæus.

375 To some persons it may appear that this arbitrary distribution


of the vegetable kingdom, according to the number of parts of a
particular kind, cannot deserve to be spoken of as a great discovery.
And if, indeed, the distribution had been arbitrary, this would have
been true; the real merit of this and of every other system is, that
while it is artificial in its form, it is natural in its results. The plants
which are associated by the arrangement of Cæsalpinus, are those
which have the closest resemblances in the most essential points.
Thus, as Linnæus says, though the first in attempting to form natural
orders, he observed as many as the most successful of later writers.
Thus his Legumina 46 correspond to the natural order Leguminosæ;
his genus Ferulaceum 47 to the Umbellatæ; his Bulbaceæ 48 to
Liliaceæ; his Anthemides 49 to the Compositæ; in like manner, the
Boragineæ are brought together, 50 and the Labiatæ. That such
assemblages are produced by the application of his principles, is a
sufficient evidence that they have their foundation in the general
laws of the vegetable world. If this had not been the case, the mere
application of number or figure alone as a standard of arrangement,
would have produced only intolerable anomalies. If, for instance,
Cæsalpinus had arranged plants by the number of flowers on the
same stalk, he would have separated individuals of the same
species; if he had distributed them according to the number of
leaflets which compose the leaves, he would have had to place far
asunder different species of the same genus. Or, as he himself
says, 51 “If we make one genus of those which have a round root, as
Rapum, Aristolochia, Cyclaminus, Aton, we shall separate from this
genus those which most agree with it, as Napum and Raphanum,
which resemble Rapum, and the long Aristolochia, which resembles
the round; while we shall join the most remote kinds, for the nature of
Cyclaminus and Rapum is altogether diverse in all other respects. Or
if we attend to the differences of stalk, so as to make one genus of
those which have a naked stalk, as the Junci, Cæpe, Aphacæ, along
with Cicoraceæ, Violæ, we shall still connect the most unlike things,

You might also like