100% found this document useful (8 votes)
49 views

(Ebook) MATLAB Programming for Engineers by Stephen J. Chapman ISBN 9780357030394, 0357030397 2024 scribd download

The document provides information about various MATLAB programming ebooks authored by Stephen J. Chapman and others, including their ISBNs and download links. It highlights the features and advantages of MATLAB as a programming language for engineers, emphasizing its ease of use, predefined functions, and graphical capabilities. Additionally, it outlines the pedagogical approach of the book, which is designed for teaching MATLAB programming effectively to engineering students.

Uploaded by

lulloblunkzq
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (8 votes)
49 views

(Ebook) MATLAB Programming for Engineers by Stephen J. Chapman ISBN 9780357030394, 0357030397 2024 scribd download

The document provides information about various MATLAB programming ebooks authored by Stephen J. Chapman and others, including their ISBNs and download links. It highlights the features and advantages of MATLAB as a programming language for engineers, emphasizing its ease of use, predefined functions, and graphical capabilities. Additionally, it outlines the pedagogical approach of the book, which is designed for teaching MATLAB programming effectively to engineering students.

Uploaded by

lulloblunkzq
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 81

Download the Full Ebook and Access More Features - ebooknice.

com

(Ebook) MATLAB Programming for Engineers by


Stephen J. Chapman ISBN 9780357030394, 0357030397

https://ebooknice.com/product/matlab-programming-for-
engineers-34563734

OR CLICK HERE

DOWLOAD EBOOK

Download more ebook instantly today at https://ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) MATLAB Programming for Engineers by Stephen J.


Chapman ISBN 9780534424176, 0534424171

https://ebooknice.com/product/matlab-programming-for-engineers-1901944

ebooknice.com

(Ebook) MATLAB Programming with Applications for Engineers


by Stephen J. Chapman ISBN 9780495668077, 0495668079

https://ebooknice.com/product/matlab-programming-with-applications-
for-engineers-4705226

ebooknice.com

(Ebook) Fortran for Scientists and Engineers by Stephen J.


Chapman ISBN 9780073385891, 0073385891

https://ebooknice.com/product/fortran-for-scientists-and-
engineers-5759150

ebooknice.com

(Ebook) MATLAB Programming for Biomedical Engineers and


Scientists by Andrew P. King and Paul Aljabar (Auth.) ISBN
9780128135105
https://ebooknice.com/product/matlab-programming-for-biomedical-
engineers-and-scientists-6614656

ebooknice.com
(Ebook) MATLAB ■■ : ■■■ / MATLAB bian cheng by S. J.
Chapman ISBN 9787030111395, 7030111397

https://ebooknice.com/product/matlab-matlab-bian-cheng-6818770

ebooknice.com

(Ebook) Linear programming with MATLAB by Michael C.


Ferris, Olvi L. Mangasarian, Stephen J. Wright ISBN
9780898716436, 0898716438
https://ebooknice.com/product/linear-programming-with-matlab-1312160

ebooknice.com

(Ebook) MATLAB for Engineers by Holly Moore ISBN


9780137627868, 0137627866

https://ebooknice.com/product/matlab-for-engineers-55471902

ebooknice.com

(Ebook) MATLAB for Engineers by Holly Moore ISBN


9780134589640, 0134589645

https://ebooknice.com/product/matlab-for-engineers-33941214

ebooknice.com

(Ebook) Introduction to MATLAB for Engineers by WILLIAM J.


*PALM;PALM III,William John Palm (III) ISBN 9780077418144,
007741814X
https://ebooknice.com/product/introduction-to-matlab-for-
engineers-11493152

ebooknice.com
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.
Discovering Diverse Content Through
Random Scribd Documents
Shelmore istui tuijottaen vuorotellen kuvaan ja vieraaseensa. Hän
kääntyi äkkiä Palsfordin puoleen ja kysyi tiukasti:

"Oliko teidän rouva Arradeanella muuan veli, joka asui hänen


luonaan ja jota nimitettiin —"

"Herra Alfrediksi?" nauroi Palsford. "Juuri niin! Onko…"

"Rouvalla on!" sanoi Shelmore. "Hyvä Jumala, tämä on pahempaa


kuin mikään muu!"

"Mikä on pahempaa kuin muu?" kysyi vieras.

Shelmore nousi tuoliltaan, työnsi kädet taskuihinsa ja alkoi kävellä


edestakaisin huoneessa, nähtävästi syviin mietteihin vaipuneena.
Palsford kiinnitti toisen savukkeen imukkeeseen ja jatkoi tyyntä
tupakoimistaan. Vihdoin Shelmore palasi istumaan.

"Kuulkaahan nyt!" sanoi hän. "Oletteko lehdistä lukenut niin


sanotusta
Southernstowen eli hiekkakuopan salaisuudesta — eräästä
murhasta?"

"En — en muistaakseni", vastasi Palsford. "Minä en lue selostuksia


murhista, koska en harrasta niitä, en edes ammatin kannalta. Ne
eivät kuulu minun alaani, Shelmore."

"Ei minunkaan", sanoi Shelmore. "Mutta niihin sekaantuu joskus


pakostakin. No niin, asianlaita on näin: Muuan outo, hyvin varakas
mies, joka nimitti itseään James Deaneksi —"

"Kuinka?" huudahti Palsford tiukasti. "James Deaneksiko?"


"James Deane", toisti Shelmore, "tuli asumaan kaupunkiimme
Chancellor-hotelliin muutamiksi päiviksi joku aika sitten, ja hänet
murhattiin — ammuttiin — hänen tuloiltanaan keskiyöllä. Hänen
ruumiinsa löydettiin hylätystä hiekkakuopasta rouva
Champernownen huvilan takaa. Tähän saakka ei hänen kuolemansa
salaisuutta ole saatu paljastetuksi, mutta minähän voin kertoa teille,
että vakavista syistä luulemme rouva Champernownen olleen, ellei
juuri tosiasiallisesti osallisena murhaan, niin ainakin rikostoverina.
Mainitsemani Deane…"

"Kuka hän oli — mistä hän saapui tänne?" keskeytti Palsford.

"Cambornesta, Cornwallista", vastasi Shelmore. "Hän oli erään


tinakaivoksen toinen osakas, ja hänen liiketoverinsa, sievänlainen
tyttö, oleskelee nykyään täällä, asuen Chancellor-hotellissa — saatte
varmasti nähdä hänet, jos viivytte täällä. Hän sanoo tuon miehen —
James Deanen, joka oli ollut hänen isänsä liiketoveri ja sitten oli
hänen holhoojansa — olleen ammatiltaan kaivosinsinöörin."

Palsfordin kasvot, joiden ilme tavallisesti oli hyväntahtoisen iloinen,


olivat nyt käyneet hyvin vakaviksi. Hän hieroi leukaansa
miettiväisesti.

"Kummallista, hyvin kummallista!" mumisi hän. "Tämä meidän


maailmamme on sittenkin hyvin pieni. Hiton kummallista! Ja —
murha!"

"Ette suinkaan luule James Deanea samaksi James Arradeaneksi,


josta äsken kerroitte?" kysyi Shelmore.

"En!" vastasi Palsford jyrkästi. "Kerron teille suoraan, herra


Shelmore. James Arradeane, puheena olevan naisen mies, on nyt
Australiassa ja on oleskellut siellä jo parikymmentä vuotta. Mutta
minä olen kirjevaihdossa hänen kanssaan neljästi vuodessa —
hänellä on täällä Englannissa hieman omaisuutta, josta pidän huolta.
Ei — se mies ei voinut olla James Arradeane. Mutta kuitenkin luulen
varmasti tietäväni, kuka hän oli."

"Kuka sitten?" kysyi Shelmore.

"Ystävälläni oli samanniminen serkku", vastasi Palsford. "Toinen


James Arradeane, joka asui Lontoossa. Hän oli kaivosinsinööri, kuten
toinenkin. Olen tavannut tuon lontoolaisen vain kerran
parikymmentä vuotta sitten. Mutta sen jälkeen en ole kuullut
puhuttavan hänestä kertaakaan. Arvatenkin murhattiin juuri tuo
mies, Shelmore. Hän oli siis vaihtanut nimensä Deaneksi, poistunut
Lontoosta ja muuttanut Cornwalliin."

"Miksi hänet olisi murhattu?" kysyi Shelmore. Palsford heitti


savukkeensa pois, pisti imukkeen taskuunsa ja katsahti nuorempaan
mieheen terävästi ja merkitsevästi.

"Ehkä sen vuoksi", sanoi hän hiljaisella äänellä, "ehkä sen vuoksi,
että hän tiesi toisen James Arradeanen vielä elävän ja uhkasi estää
sen, mistä olisi tullut kaksinnaiminen. Se siitä, Shelmore. Mutta
kuulkaahan nyt — tämä juttu alkaa näyttää paljon vakavammalta
kuin osasin aavistaakaan. Päättäen siitä, mitä olen teille kertonut ja
te minulle, pitää tätä asiaa tutkia perinpohjin. Mutta ensin minun
pitää saada ehdoton ja nimenomainen varmuus siitä, etten ole
erehtynyt tuosta naisesta. Olen kyllä siinä varmassa uskossa, että
teidän rouva Champernownenne on juuri sama rouva Arradeane,
joka poistui Normansholtista noin parikymmentä vuotta sitten, mutta
jos saisin nähdä hänet…"
"Se käy päinsä viidessä minuutissa", keskeytti Shelmore katsoen
kelloaan. "Kaupungin valtuustolla on juuri istuntonsa tässä
läheisyydessä. Tulkaa mukaani, niin poikkeamme sinne."

Hän opasti vieraansa katua pitkin kaupungin talolle ja sitten


istuntosalin yleisölle varatun lehterin hämärään nurkkaukseen. Rouva
Champernowne oli juuri johtamassa salissa puhetta. Ja viiden
minuutin kuluttua Palsford nykäisi opastaan kyynärpäästä.

"Kyllä!" kuiskasi hän. "Se on epäilemättä sama nainen.


Lähtekäämme pois täältä."

Shelmore oli hyvinkin iloinen saadessaan poistua. Näinä viime


tunteina tehdyt paljastukset alkoivat hämmentää häntä, ja hän
halusi päästä niitä selvittelemään. Ja kun he poistuivat istuntosalista,
poikkesi hän sivulle, vieden Palsfordin Mellapontin konttoriin
poliisiasemalle.

"Hän on hyvin vähän muuttunut", huomautti Palsford heidän


kävellessään. "Ihmeellisen hyvin säilynyt nainen, aina yhtä hieno ja
etevä. No niin, en voinut aavistaa, että joudun tällaiseen verkkoon.
Onko se poliisimestarinne saanut käsiinsä jonkin johtolangan, jota
myöten pääsemme siitä ulos?"

"Pyydän teitä kertomaan hänelle kaikki, mitä olette kertonut


minullekin", vastasi Shelmore. "Täällä on tietysti tapahtunut paljon
sellaista, mitä en vielä ole ehtinyt kertoa teille. Parasta on, että te,
minä ja Mellapont pidämme keskenämme oikean neuvottelun."

Mellapont kuunteli syventyneenä ajatuksiinsa, mitä Palsfordilla oli


sanottavaa. Sitten hän alkoi kysellä.
"Te sanotte sen miehen, James Arradeanen, joka Normansholtissa
asuessaan oli täkäläisen rouva Champernownen puoliso, vielä
elävän", sanoi hän. "Oletteko ihan varma siitä?"

"Hän oli elossa ainakin neljä kuukautta sitten", vastasi Palsford.


"Silloin hän kirjoitti minulle viime kerran. Voisin todistaa hänen
olevan elossa, jos saan pari vuorokautta aikaa, jotta sähkötän
hänelle.
Hän asuu Melbournessa."

"Millaisissa suhteissa te olette häneen?" kysyi Mellapont.

"Kun hän poistui Normansholtista", vastasi Palsford, "jätti hän


hieman omaisuutta haltuuni. Minä lähetän siitä saamani rahat —
vuokrat — hänelle neljänneksittäin."

"Millaisissa oloissa hän lähti Normansholtista?" kysyi Mellapont.


"Kertomuksestanne päättäen hän poistui äkkiä, jättäen vaimonsa
sinne, ja katosi. Ette suinkaan tahdo väittää, että hän oli tehnyt
salaisen sopimuksen vaimonsa kanssa?"

"En", vastasi Palsford. "Kerron teille kaikki — ja luulen todella,


vieläpä tiedänkin varmasti, että minä olen ainoa henkilö, joka on siitä
asiasta perillä. Normansholtin asukkaat juttelevat vielä nykyäänkin
James Arradeanen kummallisesta katoamisesta, mutta ei kukaan
muu kuin minä tiedä siitä mitään. Tosiseikat ovat tällaiset:
Arradeane, joka halusi päästä rahallisesti osalliseksi naapuristomme
hiilikaivoksiin, muutti Normansholtiin vaimonsa ja hänen veljensä
kanssa. Pian tuli yleisesti tunnetuksi, että sekä hän että hänen
vaimonsa olivat melko varakkaita. Mutta sitten kävi myös ilmi,
etteivät he sopineet hyvin yhteen. Siihen vaikuttivat monenlaiset
syyt. Miehen maku oli erilainen kuin vaimon. Heillä ei ollut lapsia,
joten puuttui sekin erikoinen side. Hän ei kärsinyt lankoaan, josta
hänen vaimonsa ei tahtonut erota. Veli oli heikko, mihinkään
kelpaamaton, tyhjäntoimittaja, syntynyt loiseksi ja elämään toisen
kustannuksella, jos joku viitsi pitää häntä luonaan. Asiat eivät siis
olleet lainkaan hyvällä tai miellyttävällä kannalla. Ja vieläkin muistan
hyvin, että Arradeane vihdoin tuli luokseni ja kertoi salaisuutena
saaneensa kaikesta jo niin tarpeekseen, että aikoi karata tiehensä.
Hän ilmoitti minulle asioittensa olevan kunnossa: kaikki laskut oli
maksettu, melkoinen rahasumma oli sijoitettu hänen vaimonsa
yksityistilille pankkiin, ja vaimolla oli paljon omiakin varoja, kuten jo
ennestään tiesin. Hän sanoi myös, ettei hän tahtonut herättää
hälinää tai häiriötä eikä aikonut ilmoittaa suunnitelmaansa, vaan
halusi vain yksinkertaisesti mennä tiehensä. Niin hän tekikin,
yllättäen minutkin, ja kun sitten kuulin hänestä, oli hän jo
Melbournessa, ja siellä hän on asunut siitä asti."

"Onko hän kirjevaihdossa teidän kanssanne milloinkaan maininnut


vaimoaan?" kysyi Mellapont.

"Ei milloinkaan, ei kertaakaan", vastasi Palsford. "Hänen


aikomuksensa olikin tehdä jyrkkä ero. Ja kuten jo olen teille
kertonut, se tapahtuikin varmasti hänen puoleltaan. Hän katosi kerta
kaikkiaan."

"Koettiko rouva häntä löytää?" kysyi Shelmore. "Toimitettiinko


etsiskelyjä?"

"Ei ainakaan hänen asuessaan Normansholtissa", sanoi Palsford.


"Mutta sitä kestikin vain vähän aikaa. Jokseenkin pian miehen
katoamisen jälkeen hän oli selvittänyt kaikki sikäläiset asiansa,
myynyt tavaransa ja poistunut veljineen. Ja mitä minuun tulee, en
kuullut hänestä milloinkaan sanaakaan, ennenkuin näin hänen
kuvansa naisten lehdessä ja tunsin hänet. En epäillyt lainkaan
havaintoani, ja kun nyt olen nähnyt rouva Champernownen
ilmielävänä, tiedän hänet samaksi naiseksi, joka Normansholtissa
esiintyi rouva Arradeanena."

"Parikymmentä vuotta on pitkä aika", huomautti Mellapont


miettiväisesti. "Hyvin pitkä aika."

"Niin onkin!" sanoi Palsford. "Jos epäilette minun olevan väärässä,


keksikää jokin veruke, jonka nojalla rouva Champernowne saa nähdä
minut äkkiä. Ellei hän heti tunne minua, syön vaikka hattuni! Mutta
hän tuntee, koska minäkään en ole paljon muuttunut
parissakymmenessä vuodessa.

"En tarkoita sitä, ettette olisi oikeassa", vastasi Mellapont. "Minun


luullakseni te olette — sitä en lainkaan epäile. Tarkoitin vain sitä, että
parissakymmenessä vuodessa saattaa tapahtua paljon asioita. Hän
on asunut täällä melkein koko sen ajan, perustanut suuren liikkeen,
ansainnut paljon rahaa, päässyt kaupungin pormestariksi ja aikoo
nyt mennä naimisiin erään paroonin kanssa."

"Hän ei voi mennä uusiin naimisiin!" sanoi Palsford. "Hänen


miehensä elää vielä. Ehkä hänen serkkunsa, toinen James
Arradeane, jota luulen murhatuksi Deane-nimiseksi mieheksi, kertoi
tai ainakin aikoi kertoa sen rouva Champernownelle, koska hän
luonnollisesti tiesi serkkunsa elävän."

Mellapont katsahti Shelmoreen, pudistaen päätään.

"Yhä pahempaa!" mumisi hän. "Pelkään meidän saavan tähän


sellaisen ratkaisun, joka tulee hieman hämmästyttämään. Herra
Palsford, te kai asutte Chancellorissa? Hyvä! Älkää mainitko tästä
mitään sille nuorelle naiselle, johon siellä epäilemättä tutustutte,
nimittäin neiti Prettylle. Herra Shelmore, otaksun teidän
konttoristinne matkustaneen pois? Hyvä on — neuvotelkaamme vielä
tänä iltana toistamiseen. Ainakin toivon siihen mennessä saavani
enemmän tietoja."

"Mistä aiotte niitä hankkia?" kysyi Shelmore.

"Matkustan Bartlettin luo ja pakotan hänet puhumaan", vastasi


Mellapont julman näköisenä. "Varmaa on, että Bartlett tietää melko
paljon. Kun saan hänet uskomaan, että minun puolelleni
asettuminen on hänen etujensa mukaista, avaa hän suunsa. Ottakaa
herra Palsford mukaanne, herra Shelmore, ja kertokaa hänelle jutun
yksityiskohdat niin tarkasti kuin tiedämme ne. Tavatkaamme
toisemme sitten illalla, vai mitä? Kun pannaan viisaat päämme
yhteen…"
YHDESKOLMATTA LUKU

Bartlettin takkamatto

Sillä aikaa kun Mellapont, Shelmore ja pohjoisenglantilainen


asianajaja keskustelivat poliisimestarin yksityiskonttorissa
Southernstowen poliisiasemalla, söi Bartlett tyytyväisenä päivällistä
Portsmouthissa, tietämättä lainkaan, että hänkin oli muuan heidän
keskustelunsa aiheista. Hän oli palannut sinne saamansa tuhat
puntaa taskussaan ja se suuresti tyydyttävä tieto mielessään, että
tästä alkaen John Hackdale lähettäisi hänelle viisi puntaa joka viikon
perjantai-iltana. Hän talletti tuhat puntaansa pankkiin ja jutteli
samalla hieman pankinjohtajan kanssa siitä, kuinka sijoittaisi
pääomansa, joka nyt oli kahdentuhannen punnan suuruinen. Mutta
tämä keskustelu oli vain valmistavaa laatua, koska Bartlettin sanojen
mukaan siihen ei ollut mitään kiirettä. "Mietin ensin asioita ja tutkin
osakkeiden markkinahintoja ja osinkojen suuruutta", sanoi hän. Hän
palasi sitten asuntoonsa tilaten päivällisen, tavattoman ylellisen, ja
kun sitä tarjoiltiin hänelle, söi hän niin halukkaasti kuin ainakin mies,
joka tuntee täydellisesti ansainneensa elämän hyvät puolet.
Lopetettuaan aterioimisensa hän sekoitti itselleen keskipäivän
annoksen rommia ja vettä, sytytti piippunsa, otti lehden käteensä ja
istuutui nojatuoliin takan ääreen. Elämä, tuumi Bartlett itsekseen,
kävisi tästä alkaen hyvin huvittavaksi ja siunatun mukavaksi. Hänellä
oli nyt mainio asunto — emäntä oli taitava ja hyvin palvelevainen —
ja hänen elämänsä oli tyyntä ja kunnioitusta herättävää. Hän oli
näkevinään olemassaolonsa muuttuvan säännölliseksi ja rauhalliseksi
— sellainen kuin tämä päivä oli ollut, sellainen olisi huominenkin.
Hän söisi aamiaista hätäilemättä, maistelisi käristettyjä kananmunia
ja liikkiötä ja lukisi aamulehteä. Myöhemmin hän menisi tavalliselle
kävelylleen, joka päättyisi mieliravintolaan. Siellä hän nauttisi
lasillisen tai parikin ja keskustelisi politiikasta muiden hänenlaistensa
tyhjäntoimittajien kanssa tarjoiluhuoneessa. Sitten hän palaisi
kotiinsa kello yhden aikaan syömään päivällistä tukevasti. Sen
jälkeen hän nukahtaisi hetkisen takan edessä ja heräisi, kun tee
tuotiin sisään. Illalla hän olisi jälleen mieliravintolassaan, koska siellä
oli hyvää seuraa iltaisin ja niin hauskaa keskustelua, ettei parempaa
sopinut toivoakaan. Puoli kymmenen aikaan hän palaisi jälleen
kotiinsa kuuman illallisen ääreen — niin, sellainen sen pitäisi olla joka
ilta — ja sitten, otettuaan yönaukun tavallista juomaansa — parasta
vanhaa Jamaika-rommia — menisi vuoteeseen. Se oli ihanteellinen
olotila Bartlettille.

Hän torkahti näin haaveillessaan, sanomalehti sylissään, ja pian


sitten nukkui sikeästi mukavassa tuolissaan. Mutta hän heräsi äkkiä
kuullessaan erään äänen — emäntänsä äänen — joka kuulosti ensin
olevan hyvin kaukana ja sitten vastenmielisen lähellä.

"Herra Barton, herra Barton, täällä on eräs herra, joka haluaa


tavata teitä!"
Bartlett kääntyi hämmentyneenä, voimatta muistaa, että hän
emännälleen ja vastalöytämälleen maailmalle oli sanonut olevansa
Barton eikä Bartlett. Mutta ennenkuin hän ehti tajuta sen, huomasi
hän jotakin muuta, kouraantuntuvampaa — hänen vieraansa, joka oli
jo astunut sisään, oli Mellapont. Ja jostakin syystä näytti
siviilipukuinen Mellapont, joka oli hyvin arvokkaan herrasmiehen,
ikään kuin eläkettä nauttivan upseerin tai jonkin sellaisen näköinen,
paljon hirvittävämmältä kuin tummansiniseen, mustanauhaiseen
virkapukuun pukeutunut Mellapont. Mutta Bartlett ei silti menettänyt
malttiaan.

"Ah, hyvää päivää, sir!" huudahti hän nousten äkkiä seisomaan.


"Perin odottamaton huvi, todellakin. Pieni virkistävä ryyppy
matkanne jälkeen, herra Mellapont! Minulla on sivupöydällä
pullollinen melko hyvää viskyä, sir. Kuulkaapa, rouva Capper, puhdas
lasi tai parikin, olkaa niin hyvä."

"No niin, minulla ei ole mitään sitä vastaan, kiitoksia vain", vastasi
Mellapont. Hän tuli lähemmäksi emännän poistuttua huoneesta ja
katsahti Bartlettiin merkitsevästi. "Hyvä on, poikaseni!" mutisi hän.
"Haluan hieman jutella kanssanne, siinä kaikki. Teillä on mukavat
olot täällä ja niin kodikkaat huoneetkin, vai mitä?" jatkoi hän
emännän palattua pari lasia ja karahvi soodavettä mukanaan. "Te
olette täällä epäilemättä kuin kotonanne?"

"Ah, me viihdymme mainiosti täällä, sir — emmekö viihdykin,


rouva Capper?" vastasi Bartlett hilpeästi. "Niinpä niin, sallikaa minun
tarjota teille, sir", jatkoi hän häärätessään pöydän luona. "Tämä on
mainiota viskyä, kuten minulle on sanottu, herra Mellapont, mutta
itse en koske siihen. Minä juon vain pienen lasillisen rommia
kanssanne." Hän ojensi vieraalleen lasin ja kaatoi sitten itselleen
suuremman annoksen mielijuomaansa kuin tavallisesti.
"Terveydeksenne, herra Mellapont." Sitten emännän poistuttua ja
suljettua oven hän kääntyi tiukasti vieraansa puoleen. "Toivoakseni
ei mikään ole vinossa, sir?"

Mellapont tarttui lasiinsa, nyökkäsi sen laidan takaa, huomauttaen


sisällön olevan hyvää, vanhaa ja voimakasta ja istuutui tuolille,
viittauksella pyytäen isäntäänsäkin palaamaan samaan nojatuoliin,
josta hän juuri oli noussut.

"Paljonkin on vinossa, Bartlett", sanoi hän. "Ja nyt olen tullut


tapaamaan teitä, koska varmasti uskon teidän tietävän yhtä ja toista.
Te voitte auttaa meitä tutkimuksissamme. Niinpä puhun teille
suoraan. Minä tiedän hyvin paljon — teistä. Te olette ollut mukana
eräissä kohtauksissa, jotka liittyvät Southernstowessa
tapahtuneeseen murhaan. Sitä ei teidän kannata kieltää, Bartlett."

Bartlettin hermot, joita Mellapontin äkillinen ilmestyminen hänen


turvapaikkaansa olivat järkyttäneet, alkoivat nyt rommin
vaikutuksesta jälleen tyyntyä. Hän kävi varovaiseksi.

"Minä olen ehkä nähnyt ja tiennyt jotakin, herra Mellapont", sanoi


hän.
"Se kello, esimerkiksi…"

"Saatte sivuuttaa nuo seikat kokonaan", keskeytti Mellapont. "Ne


on jo selvitetty. Me saimme epäilemättä tietää totuuden
kuullessamme Shelmoren selostuksen oikeudessa. Kight ja sisäkkö
olivat ottaneet haltuunsa Deanen kalleudet siten kuin he
tunnustivatkin, ja aikanaan heidät tutkitaan, todistetaan syyllisiksi ja
tuomitaan. Mutta he ovat syyttömiä itse murhaan. Kuulkaahan nyt,
Bartlett, minä kysyn teiltä suoraan, onko teillä minkäänlaista luuloa
tai epäluuloa, kuka on syyllinen?"

"Minä en epäile sitä enkä tätä, herra Mellapont", vastasi Bartlett.


"Siihen voidaan epäillä syyllisiksi vaikka kuinka monta ihmistä —
syyttä. Minä en tiedä sen miehen murhaajaa, eikä minulla ole
minkäänlaisia luulojakaan."

"Hyvä on!" sanoi Mellapont. "Siinä tapauksessa aion kysyä teiltä


jotakin — kerrottuani teille muutamia asioita. Ja viimeinen ensin.
Toissailtana menitte te, Bartlett, ja John Hackdale yhdessä rouva
Champernownen taloon, Ashenhurstiin. Teidät otettiin vastaan. Te
odotitte pienessä huoneessa hallin vieressä sen aikaa, jonka
Hackdale viipyi rouva Champernownen luona salongissa. Hän haki
sitten teidätkin hetkisen kuluttua sinne. Rouva Champernowne puheli
teille molemmille ja sitten kirjoitti maksumääräyksen, antaen sen
John Hackdalelle. Te poistuitte hänen kanssaan, mutta…"

Mellapont keskeytti tahallaan. Hän katseli tutkittavaansa terävin


silmin ja huomasi, että hänen ensimmäiset sanansa olivat
hämmästyttäneet Bartlettia. Mutta hän näki myös, että sitten kun
ensi järkytys oli mennyt ohi, sitä seurasi mielihyvää ja luottavaista
varmuutta osoittava ilme. Näytti siltä kuin Bartlett olisi sanonut
itselleen: "No niin, hän ehkä tietää niin paljon, mutta siinä onkin
kaikki eikä se ole vielä mitään!" Ja hän jatkoi katsellen
kuuntelijaansa vielä tarkemmin.

"Mutta minä tiedän enemmänkin", sanoi hän. "Seuraavana


aamuna Hackdale vaihtoi maksumääräyksen rahaksi rouva
Champernownen käyttämässä pankissa Southernstowessa. Se oli
kirjoitettu tuhannelle punnalle, ja hän otti rahat seteleissä. Ja te,
Bartlett, olette juuri sijoittanut tuhat puntaa pankkiin tilillenne, jonka
olette avannut täällä Portsmouthissa Bartonin nimellä. Silloin
maksoitte summan juuri samoilla seteleillä, jotka Hackdale nosti
Southernstowen pankista — minä olen kirjoittanut niiden numerot
muistiin lompakkooni. Nyt teen kysymykseni, Bartlett, ja pyydän teitä
miettimään tarkasti vastaustanne. Miksi rouva Champernowne
maksoi teille tuhat puntaa?"

Bartlett oli hyvin hämmästynyt, vieläpä pelästynyt tällä kertaa.


Hänen kätensä vapisi laskiessaan lasin pöydälle.

"Meillä — meillä kaikilla on asioita, omia yksityisiä asioita, herra


Mellapont", änkytti hän. "Minä en ymmärrä…"

"Älkää kierrelkö, Bartlett!" keskeytti Mellapont. "Teillä ei ole


minkäänlaisia asioita rouva Champernownen kanssa. Jos teillä olisi
ollut liikeasioita hänen kanssaan, ei niitä olisi selvitetty niin salaisesti.
Kuulkaahan nyt, minä olen lähestynyt teitä ystävälliseen tapaan —
olkaa sen vuoksi järkevä ja kertokaa minulle totuus, koska se ajan
oloon hyödyttää teitä. Teidän on paljon parempi olla lain ja meidän,
poliisin, puolella kuin poiketa rikollisille poluille, Bartlett. Sanokaa
rehellisesti, että saitte nuo tuhat puntaa vaikenemisestanne?"

"Soisin, että määrittelisitte tarkemmin tuon puhetapanne, herra


Mellapont", sanoi Bartlett. "Koettakaa!"

"Rahat maksettiin paljastamisen estämiseksi", vastasi Mellapont


jyrkästi. "Te tiedätte jotakin!"

"Minä en tiedä, voisinko paljastaa ketään", vastasi Bartlett. "Enkä


voisikaan!"
"Silloin teidän pitää kertoa minulle, miksi nuo rahat maksettiin",
sanoi Mellapont. "Jos saitte ne rehellisestä liikeyrityksestä, jota
teidän ei tarvitse hävetä, kertokaa minulle hyvässä luottamuksessa,
eikä asia mene sen edemmäksi."

"Minulla ei ole siihen lupaa, herra Mellapont", vastasi Bartlett.


"Sopimuksessa on aina pari osakasta. Jos otaksutaan, että olen
toinen niistä, on vielä toinenkin olemassa. Vaikka olisinkin halukas
kertomaan teille, niin voihan sattua, ettei toinen olekaan."

Mellapont kumartui eteenpäin takkamaton yli.

"Kuulkaahan nyt, Bartlett!" sanoi hän vakavasti. "Sallikaa minun


lausua teille jotakin. Te olette joutunut perin vaaralliseen asemaan.
En pelkää olla avomielinen teitä kohtaan — siksi selitänkin teille
asioiden oikean laidan. Tehän tiedätte, että Deane löydettiin
murhattuna, revolverilla ammuttuna, hiekkakuopasta juuri rouva
Champernownen huvilan takaa, ja nyt kerron teille erinäisiä
tosiseikkoja, jotka olemme saaneet selville. Deane tapasi rouva
Champernownen silloin yöllä huvilan likellä — hänen oli nähty
puhelevan rouvan kanssa. Revolveri, jolla hänet luultavasti
ammuttiin, on löydetty rouva Champernownen hedelmätarhasta.
Rouva Champernownella on poliisin antama lupakirja revolverin
hallussapitoon, joten näin löydetty revolveri voi olla hänen. Muuten
on olemassa päteviä syitä vakavaan epäluuloon rouva
Champernownea vastaan, sillä niistä todistuksista päättäen, jotka
sain käsiini tänä aamuna, hänellä on ollut hyvä syy toivoonsa päästä
vapaaksi tuosta murhatusta miehestä tai vaientaa hänet. Kuunnelkaa
siis, Bartlett, paljon tarkkaavaisemmin kuin milloinkaan ennen. Jos
rouva Champernowne vangitaan tämän syytöksen perusteella ja jos
hänet voidaan todistaa syylliseksi ja jos saadaan selville hänen
antaneen teille rahaa, jotta pitäisitte suunne kiinni jostakin, mitä
olette saanut tietää, teette itsenne osalliseksi — tiedättekö mihin,
Bartlett?"

Bartlett kuunteli tarkkaavaisemmin kuin koskaan ja huomasi


Mellapontin vähitellen pääsevän voitolle tässä suullisessa
yhteenotossa. Mutta hän koetti vieläkin olla kohteliaan
välinpitämätön.

"Minä en voi väittää tietäväni sitä, sir", vastasi hän. "Minähän en


ole lakimies, herra Mellapont."

"Ette olekaan", myönsi Mellapont. "Mutta se väite ei auttaisi teitä


missään paikassa. Jokaisen englantilaisen otaksutaan tuntevan lain,
eikä hän voi teeskennellä tietämättömyyttä puolustuksekseen.
Bartlett, tiedättekö te, mikä on rikostoveri?"

"En laillisessa merkityksessä, sir", sanoi Bartlett. "Silloin selitän sen


teille", jatkoi Mellapont. "Rikostoveri on sellainen henkilö, joka,
vaikka ei olekaan päärikollinen ja vaikka hän ei olisikaan ollut läsnä
rikoksen tapahtuessa, kuitenkin on ollut jollakin tavoin osallinen
siihen joko ennen tai jälkeen. Jälkeen — muistakaa se Bartlett —
jälkeen yhtä hyvin kuin ennenkin. Mitä siis on olla rikostoveri teon
tapahduttua? Teon tapahduttua tulee rikostoveriksi jokainen, joka
auttaa tai koettaa suojella rikollista tai yrittää vapauttaa hänet,
vaikka tietääkin rikoksen tapahtuneen. Painakaa se tarkasti
mieleenne!"

"Minä en tiedä mitään rikosta tapahtuneen", sanoi Bartlett. "Enkä


ole auttanut, vapauttanut tai suojellut ketään."
"Ettekö vaikenemisellannekaan?" kysyi Mellapont tiukasti.
"Sanokaa nyt, miksi rouva Champernowne antoi teille tuhat puntaa.
Bartlett, parasta olisi, että olisitte varovainen. Ajatelkaa jälleen."

Ja Bartlett ajatteli ainakin viisi minuuttia.

"Tarkoitatteko todella", sanoi hän vihdoin, "tarkoitatteko siis — ei


mitään peloittelua, herra Mellapont, vaan että jos rouva
Champernowne huomataan syylliseksi ja jos saadaan selville minun
tietävän jotakin — jonkin mitättömän seikan — minua voidaan
mahdollisesti syyttää siitä, mistä äsken puhuitte?"

"Kyllä", vastasi Mellapont. "Ihan varmasti! Jos tiedätte jotakin —


vaikka perin vähäpätöistä — häntä vastaan ja salaatte sen meiltä,
autatte ja suojelette häntä. Niin se juuri on."

"Te luulette siis häntä vastaan ilmenevän jotakin?" kysyi Bartlett


levottomana.

"Kyllä, niistä erityisistä seikoista päättäen, jotka minulle kerrottiin


tänä aamuna!" vastasi Mellapont.

Bartlett vaipui vielä kerran ajatuksiinsa. Jos rouva Champernowne


todistettaisiin syylliseksi, mikä nyt näytti mahdolliselta, loppuisi
hänen viikoittain maksettava eläkkeensä, ja toiselta puolen, jos hän
kertoisi Mellapontille tietonsa, oikeuttaisi hänen ilmoituksensa
vaatimaan neiti Prettyn lupaamaa palkintoa — ja yksi lintu pivossa
on parempi…

"Herra Mellapont", sanoi hän äkkiä, "jos kerron teille kaikki tietoni,
saanko luottaa vaikenemiseenne?"
"Saatte niin paljon kuin oikeus myöntää", vastasi Mellapont.
"Varmasti!"

"En usko, että teidän tarvitsee mainita minun nimeäni ollenkaan",


huomautti Bartlett. "Mutta eräs toinen seikka — jos nyt kerron teille
kaikki, tahdotteko tukea vaatimustani, että saisin neiti Prettyn
lupaaman toisenkin palkinnon? Hän tarjoaa tuhat puntaa jokaiselle,
joka on nähnyt Deanen tai puhutellut häntä murhailtana."

"Sen kyllä voisin tehdä", sanoi Mellapont. "Minä suon neiti Prettyn
rahat teille yhtä mielelläni kuin jollekin toiselle. Hän on jossakin
määrin hölmö, minun mielestäni. No, Bartlett, näittekö hänet ja
puhuttelitteko häntä?"

"Kyllä!" vastasi Bartlett vihdoin empimättä. "Kyllä, sir, ja siinä onkin


kirjaimellisesti kaikki, mitä tiedän. Hän kohtasi minut North Barin
läheisyydessä ja pyysi minua neuvomaan, missä oli Ashenhurstin
kartano, rouva Champernownen huvila. Minä ilmoitin sen hänelle, ja
hän lähti kävelemään sinne päin. Pari iltaa myöhemmin kuulin
puhuttavan murhasta ja tiesin vainajan samaksi, joka oli pysäyttänyt
minut, koska tuntomerkit sopivat niin hyvin häneen. Mutta heti sen
jälkeen tapasin John Hackdalen, joka silloin toimi ylimääräisenä
poliisina ja oli kierroksellaan. Minä kerroin hänelle samoin kuin nyt
teille. Hän pyysi minua pitämään suuni kiinni ja antoi minulle
luullakseni kaikki taskussaan olevat rahat. Seuraavana päivänä —
illalla — hän tuli luokseni sataviisikymmentä puntaa mukanaan ja
sanoi minulle, että jos tahdon matkustaa Amerikkaan ja jäädä sinne,
hän sähköttää minulle yhtä suuren summan heti, kun kuulee minun
nousseen maihin New Yorkissa. Minä lupasin, ja hän ehti juuri
poistua luotani, kun kuulin neiti Prettyn tarjoamasta palkinnosta. Se
kiihoitti minua, ja sen sijaan, että olisin matkustanut
Southamptoniin, tulinkin tänne odottamaan ja tutkimaan lehtiä.
Minun pitää kiittää vain sattumaa siitä tilaisuudesta, jolloin pääsin
kellon ja molempien Chancellorin palvelijoiden, Kightin ja Sandersin,
jäljille. Sitten sain neiti Prettyn lupaaman palkinnon — vainajan
tavaroista luvatut tuhat puntaa. Kun matkustin Southernstoween sen
asian vuoksi, näki John Hackdale minut ja hämmästyi, koska en
ollutkaan matkustanut Amerikkaan. Hän vei minut rouva
Champernownen kotiin, ja minä sain puhutella rouvaa hänen läsnä
ollessaan, kuten jo kerroitte. Mutta rouva ei maininnut minulle
sanaakaan, herra Mellapont — miksi tuli pitää suuni kiinni, vaan
antoi minulle John Hackdalen välityksellä tuhannen puntaa ja
lupauksen viikoittain maksettavasta eläkkeestä. Siinä on kaikki, mitä
tiedän."

Mellapont ajatteli kiihkeästi. Hänen ajatuksensa olivat


kohdistuneet pääasiallisesti John Hackdaleen. Hän muisti
hiekkakuopan ympäristöineen kuuluneen John Hackdalen
vartiopiiriin, muisti John Hackdalen löytäneen vainajan ja salanneen
sen seikan, että hän tiesi erään miehen, Bartlettin, tavanneen
Deanen ja puhuneen hänen kanssaan, mistä ehdottomasti selvisi,
että John Hackdale oli pelannut kieroa peliä. Ja sitten hän äkkiä
muisti myös, että John Hackdalellakin oli poliisin antama lupakirja
revolverin hallussapitoon.

"Hm!" sanoi hän heräten mietteistään. "John Hackdale siis olikin


päähenkilö tässä kaikessa viime keskusteluun saakka. Ja tähänkö
todellakin sisältyy kaikki, mitä tiedätte, kaikki?"

"Kaikki, herra Mellapont", vakuutti Bartlett. "Tuntuu melko vähältä,


vai mitä?"
"Kenties", mutisi Mellapont. "Sen saamme sitten nähdä." Hän veti
kellonsa esille. "Minun pitää mennä asemalle ja palata
Southernstoween", jatkoi hän. "Tulkaa tekin kävelemään, koska
haluan tehdä teille vielä muutamia kysymyksiä."

Ja Bartlett meni hänen kanssaan, jolloin Simmons Hackdale,


maleksiessaan kaduilla, sattui heidät huomaamaan. Hän näki heidän
eroavan aseman sisäänkäytävän edustalla. Ja heti kun poliisimestari
Mellapont oli astunut Southernstoween menevään junaan, valitsi
Simmonskin itselleen paikan saman vaunun toisesta osastosta.
Hänestä tuntui kuin hänen laisensa viekkaan kenraalin pitäisi olla
läsnä taistelutantereella kuumimman ottelun aikana.
KAHDESKOLMATTA LUKU

Pahassa pinteessä

Aavistamatta lainkaan, että Simmons Hackdale oli mukana


samassa junassa, vain muutamien metrien päässä saman käytävän
varrella, Mellapont palasi Southernstoween ajatuksiinsa vaipuneena.
Hän tunsi vaistomaisesti Bartlettin puhuneen totta ja ilmaisseen
kaikki tietonsa. Millaisia johtopäätöksiä siitä voitiin tehdä?
Mellapontin mielestä vain tällaisia: Jos oli olemassa joitakin
henkilöitä, jotka tiesivät enemmän hiekkakuoppamurhasta kuin
muut, olivat ne juuri rouva Champernowne ja John Hackdale. John
Hackdale toimi nähtävästi työnantajansa kanssa saadakseen
Bartlettin vaikenemaan.

Bartlett näytti olevan sitä mieltä, että John Hackdale toimi vain
välittäjänä tai apurina hänen ja rouva Champernownen kesken.
Mutta Mellapont ei ollut siitä lainkaan varma. Hänestä näytti siltä
kuin hän pätevistä syistä voisi epäillä rouva Champernownen ja John
Hackdalen jakavan keskenään synkemmän salaisuuden. Hän tiesi
erään seikan, joka tunkeutui esille yhä uudestaan. Ashenhurst-
huvila, sen läheiset kujat ja hylätty, pensaitten valtaama
hiekkakuoppa kuuluivat kaikki siihen piiriin, jota Hackdale oli
ylimääräisenä poliisina vartioinut. Voiko mikään olla uskottavampaa
kuin että hän tullessaan sinne murhailtana sattui salaa näkemään
rikoksen toimeenpanon ja tunsi rouva Champernownen, jolla
varmasti oli revolveri ja joka Mellapontin mielestä oli juuri sellainen
nainen, että hän voi sitä käyttää tehokkaasti? Niinpä saattoi ja
kieltämättä olikin John Hackdalen etujen mukaista suojella sitä
naista, josta hänen toimeentulonsa riippui ja joka voi edistää hänen
etujaan.

Kuta enemmän Mellapont tätä ajatteli, sitä varmempi hän oli siitä,
että hän nyt oli oikeilla jäljillä — että rouva Champernowne murhasi
Deanen, itsekkäistä syistä, ja että John Hackdale sen tiesi. Ja hän oli
näkevinään kuinka se oli tapahtunut. Rouva oli ehkä tarkastellut
aluettaan ja ulkohuoneitaan revolveri taskussaan (hän oli näet
saanut selville eräältä apulaiseltaan, että rouva Champernowne
pyytäessään revolverin kantolupaa oli ilmoittanut sen johtuvan siitä,
että hänen talonsa oli niin yksinäisellä paikalla ja kaikenlaisten
kulkurien oli tapana tunkeutua hänen vajoihinsa ja säilytyssuojiinsa)
ja tällöin tavannut Deanen. Hän oli hyvinkin helposti viekoitellut
Deanen hiekkakuoppaan ja ampunut hänet siellä, luottaen siihen,
että epäluulot kohdistuisivat kulkureita vastaan, joita aina jäi jäljelle
kaupunkiin markkinapäivinä. Ja John Hackdale oli ehkä ollut
läheisyydessä ja kuultuaan laukauksen mennyt paikalle, mistä ääni
oli kuulunut, ja tavannut siellä rouva Champernownen. Tämä kaikki
oli mahdollista, ja Mellapontin mielestä John Hackdale oli juuri
sellainen mies, joka hyvinkin voi liittyä salaliittoon vaietakseen
asiasta.

Oli kuinka tahansa, saatuaan nämä uudet tiedot hänen piti mennä
tapaamaan ja puhuttelemaan John Hackdalea ja rouva
Champernownea. Hackdalea kuitenkin ensin, ehdottomasti kahden
kesken, koska oli kysymyksiä — hyvin tärkeitä kysymyksiä — joihin
hänen oli heti saatava vastaukset. Sitten vasta nainen. Rouva
Champernownen täytyi alistua kuulusteltavaksi, vaikka olikin
pormestari, hieno ja rikas.

Mellapontin saapuessa Southernstoween oli jo pimeä. Katsomatta


oikealla tai vasemmalle hän käveli nopeasti poliisiasemalle, hakien
sieltä käsiinsä Nicholsonin, erään siviilipukuisen poliisinsa.
Vaihdettuaan hänen kanssaan muutamia sanoja hän otti Nicholsonin
mukaansa ja meni suoraan siihen taloon, jossa Hackdale asui.
Jättäen Nicholsonin ulkopuolelle pikku torin kulmaan, josta voi
katsella tulematta itse huomatuksi, Mellapont koputti ovelle, kysyi
John Hackdalea ja kuultuaan hänen olevan kotosalla meni suoraa
päätä veljesten yksityiseen arkihuoneeseen. John istui siellä yksinään
teepöydässä. Hänellä oli kupillinen teetä toisessa ja sanomalehti
toisessa kädessään, mutta hän laski molemmat pöydälle
poliisimestarin tullessa sisälle. Mellapont oli tarpeeksi tarkkaavainen
huomatakseen, että hänen kätensä vapisivat ja kasvot kalpenivat.

Mellapont sulki oven ja kääntyi, istuutuen tuolille Hackdalen


viereen, sanomatta sanaakaan. Hän katsoi tiukasti mieheen, jota oli
tullut tapaamaan.

"Hackdale", sanoi hän vihdoin hiljaisella äänellä, "minä olen tullut


tapaamaan teitä erään vakavan ja tärkeän asian vuoksi enkä tahdo
kiertää sitä kuin kissa kuumaa puuroa, vaan lyön korttini rehellisesti
pöytään. Tulen juuri Portsmouthista James Bartlettin asunnosta,
puhuteltuani häntä siellä. Ja nyt voin kertoa teille heti, että James
Bartlett tunnusti minulle kaikki — peittelemättä. Kuulkaahan nyt,
Hackdale, miksi te ja rouva Champernowne olette maksaneet
Bartlettille vaikenemisrahoja saadaksenne hänet olemaan puhumatta
siitä, että Deane pysäytti hänet murhailtana kysyäkseen häneltä tietä
Ashenhurst-huvilaan? Miksi?"

Hackdale oli tavattoman kalpea, eikä hänen värinsä näyttänyt


merkkiäkään palaamisesta. Hän oli kuin kasaan lyöty, ja Mellapont
huomasi sen.

"Älkää hätäilkö, Hackdale", sanoi hän suopeasti. "Tämä sattui


teihin, mutta ettehän voi olla hämmästynyt, koska Bartlettin laisiin
miehiin ei milloinkaan ole luottamista. Muuten uskon hänen
puhuneen minulle totta, ja teidän on nyt parasta tehdä samoin. Miksi
te jo alussa lahjoitte hänet? Ajatelkaa, ensiksikin annoitte hänelle
kaikki mukananne olevat rahat, sitten sataviisikymmentä puntaa ja
lupauksen samanlaisesta määrästä, jos hän matkustaa Amerikkaan,
maksettavaksi sitten kun kuulette hänen nousseen maihin ja
myöhemmin tuhannen puntaa, vaikka hän ei ollutkaan matkustanut.
Se näyttää ilkeältä, Hackdale, perin pahalta! Mitä teillä on sanomista
siihen?"

Nyt Hackdale tiesi Bartlettin juorunneen. Hän oli hämmästynyt,


hämmentynyt ja mykistynyt eikä voinut olla änkyttämättä.

"Minä — minä —" aloitti hän. "Kuulkaahan — niin, Mellapont —


rouva
Champernowne…"

"Entä sitten?" kysyi Mellapont tiukasti. "Rouva Champernowne…"

"Hän tahtoi — luonnollisesti — pitää nimensä syrjässä siitä",


änkytti
Hackdale.
"Miksi?" kysyi Mellapont. "Tiedättekö syytä?"

"Kunniani kautta, en!" väitti Hackdale. "Minä en tiedä sen


enempää kuin Bartlettkaan. En enempää kuin että — että Deane oli
tavannut Bartlettin ja kysynyt tietä, ja että — että…" Hän keskeytti
muistaen lukkoneulan. Mutta ei kukaan, ei Mellapontkaan, päätteli
hän, voisi saada sitä selville. "Minä en tiedä mitään muuta!" lopetti
hän laimeasti.

"Te ette siis tiedä, kuka ampui Deanen?" kysyi Mellapont.

"Jumalan nimessä, en!" huudahti Hackdale. "Minä en tiedä sitä!"

"Ja aiotte väittää minulle, että rouva Champernowne oli halukas


maksamaan kaikki nuo rahat — tuhat puntaa käteistä rahaa ja
elinkautisen eläkkeen — Bartlettille saadakseen hänet olemaan vaiti
vain siitä, että hän oli kohdannut erään miehen North Barin
läheisyydessä?" kysyi Mellapont. "Miksi hän niin teki?"

"Minä en tiedä sitä", toisti Hackdale. "Hänellä on kai siihen pätevät


syynsä. Hänen asiansahan se on."

Mellapont istui ääneti ja katseli Hackdalea minuutin tai pari.

"Kaupungissa tiedetään vallan hyvin, Hackdale, että teidät


ylennettiin murhan ilmitulon jälkeisenä päivänä Champernownen
liikkeen johtajaksi", sanoi hän vihdoin. "Kuulkaahan, johtuiko se
millään tavalla tästä? Lahjottiinko teidätkin Bartlettin tapaan?"

Hackdale alkoi jo hieman tyyntyä. Hän pudisti päätään.

"Minä olin ansainnut jokaisen ylennyksen, jonka työnantajani voi


minulle antaa, poliisimestari", vastasi hän melko arvokkaasti. "Olin jo
odottanut sitä. Ylennykseni johtui pitkästä ja uskollisesta
palveluksestani."

Mellapont nousi tuoliltaan.

"Teillä on poliisin antama lupakirja revolverin hallussapitoon,


Hackdale", sanoi hän viralliseen tapaan. "Näyttäkää minulle sitä
revolveria!"

Hackdale säpsähti, punastui ja näytti loukkaantuvan, mutta nousi


heti kääntyen ovelle.

"Kyllä", vastasi hän. "Se on eräässä laatikossa makuuhuoneessani


tuolla, ja minä tuon sen heti teille."

"Ei, minä tulen sinne kanssanne", sanoi Mellapont.

Hackdale tuijotti häneen, mutta avasi kuitenkin oven. Hän väänsi


sähkön palamaan, meni Mellapontin seuratessa hänen kintereillään
huoneen poikki lipastolleen ja veti erään laatikon auki. Hän työnsi
kätensä sievästi taitettujen liinavaatteiden alle, mutta kiskaisi sen
kohta takaisin, päästäen huudahduksen.

"Se ei olekaan siellä!" sanoi hän. "Mutta minä olen ihan varma
siitä, että pistin sen sinne, minä kun säilytän sitä aina täällä. Kuka…"

Hän alkoi etsiä ja penkoa, vetäen auki laatikon toisensa jälkeen ja


siroitellen niiden sisällön sinne tänne kiireissään ja kiihkossaan,
Mellapontin seisoessa hänen vieressään ja katsellessa kylmästi ja
ääneti. Mutta revolveria ei tullut näkyviin, ja sen omistaja käänsi
kalpeat ja hämmästyneet kasvonsa katselijaan päin.
"Se on hävinnyt olemattomiin", sanoi hän. "Se oli kyllä täällä joku
aika sitten — lieneekö siitä vielä kuukauttakaan. Simmons on
kaiketi…" Mellapont kääntyi ovelle.

"Teidän olisi parasta ajatella asiaa sen valossa, mitä teille kerroin",
sanoi hän vakavasti. "Ehkä huomaatte olevan muutakin minulle
ilmaistavaa, ja jos niin käy, tiedätte kyllä, mistä minut löydätte."

Sen sanottuaan hän poistui huoneesta ja talosta ja meni siihen


varjoisaan piilopaikkaan, minne oli jättänyt miehensä väijymään.

"Hän oli kotonaan, Nicholson", sanoi hän. "Jos hän lähtee


kaupungille, seuratkaa häntä. Pitäkää häntä silmällä yhtä mittaa,
kunnes saatte minulta sanan. Tehän tiedätte tehtävänne, jos
ilmaantuu jotakin ilmoittamisen arvoista."

Siviilipukuinen mies nyökäytti päätään, ja Mellapont, poistuen


hänen luotaan, käveli nopeasti lyhyen matkan päässä sijaitsevaan
Shelmoren yksityisasuntoon. Kuultuaan siellä, että Shelmore söi
päivällistä herra Palsfordin kanssa Chaneellor-hotellissa, hän meni
sinne ja astuen ilmoittamatta kahvilahuoneistoon näki molempien
asianajajien juuri lopettavan ateriaansa. Muutamissa minuuteissa
hän oli kuiskaten kertonut heille lyhyesti kaiken sen, mitä oli saanut
tietää erottuaan heistä keskipäivällä.

"Entä nyt?" kysyi Shelmore.

"Nyt rouva Champernownen luo", sanoi Mellapont päättäväisesti.


"Minä haluan, että te molemmat tulisitte sinne kanssani. Sinne ei ole
kuin kymmenen minuutin kävely. Sitten kun olette valmiit…"
Ja hetkisen kuluttua kävelivät nämä kolme miestä ääneti katuja
pitkin Ashenhurst-huvilaa kohti. Heistä ei kukaan puhunut
sanaakaan, ennenkuin he ehtivät rouva Champernownen ovelle.
Silloin Palsford kuiskasi:

"Hän näki minut viime kerran noin parikymmentä vuotta sitten.


Onko luultavaa, että hän nyt…"

"Olen ajatellut sitäkin", sanoi Mellapont. "Jättäkää se minun


huolekseni."

Jane Pratt avasi oven ja nähtyään Shelmoren näytti säpsähtävän.


Mutta Mellapont oli heti hänen vieressään kuiskailemassa, ja
hetkisen kuluttua tyttö oli opastanut heidät kaikki läheiseen
huoneeseen ja poistunut heidän luotaan. Mellapont nyökkäsi
tovereilleen.

"Minä sanoin hänelle, että hän ilmoittaisi vain minut", selitti hän.
"Herra Palsford, seisokaa tässä juuri ovea vastapäätä. Minä haluan,
että rouva Champernowne näkisi teidät ensin…"

Ovi aukeni, ennenkuin hän ehti sanoa enempää, ja rouva


Champernowne astui huoneeseen. Ja hän näki Palsfordin ensin,
osoittamatta mitään erityistä mielenkiintoa, paitsi että hän hiukan
punastui. Hänen katseensa kohdistui Mellapontiin ja Shelmoreen,
pysähtyen vihdoin edelliseen ja ilmaisten kaikkea muuta kuin
hyväntahtoisuutta.

"No, mitä nyt?" kysyi hän tuimasti. "Mitä tämä tarkoittaa,


Mellapont?
Miksi te…"
"Meidän tulomme johtuu mitä tärkeimmistä syistä, rouva
Champernowne", keskeytti Mellapont. "Vakavista asioista, joihin
minun täytyy pyytää teitä kiinnittämään huomionne. Mutta ensiksikin
— te tunsitte luullakseni tämän herran silloin kun asuitte
Normansholtissa parikymmentä vuotta sitten rouva Arradeanena?"

Rouva Champernowne katsoi Palsfordiin toistamiseen. Mutta hän


ei vastannut vieraan kumarrukseen, istuutui vain huoneen keskellä
sijaitsevan pöydän ääreen, mentyään kaikkien kolmen ohi, ja viittasi
tuoleihin.

"No nyt, Mellapont", sanoi hän. "Mitä te oikeastaan haluatte?


Luopukaa salaperäisyydestänne ja ruvetkaa puhumaan asioista."

"Hyvin mielelläni", vastasi Mellapont istuutuen tuolille pöytää


vastapäätä. "Mikään ei voisi sopia minulle paremmin, rouva
Champernowne. Ja se säästää sitä paitsi aikaakin, jos menen
suoraan asiaan. Minä voin peittelemättä ilmoittaa teille James
Bartlettin myöntäneen minulle tänään iltapäivällä, että te olette
maksanut hänelle vaikenemisrahoja taivuttaaksenne hänet pitämään
suunsa kiinni eräästä kummallisesta seikasta. Miksi, rouva
Champernowne?"

Rouva Champernowne katsoi häneen kylmästi.

"Se on minun asiani!" vastasi hän.

"Eipähän, vaan poliisin, rouva Champernowne", vastasi Mellapont.


"Älkäämme käsittäkö väärin toisiamme. Minä tiedän enemmän kuin
luulettekaan. John Hackdalekin on tehnyt muutamia myönnytyksiä.
Ja herra Palsford on kertonut minulle elämästänne Normansholtissa,
miehenne katoamisesta, ja niin edespäin. Sallikaa minun puhua
suoraan, rouva Champernowne. Me nimitämme sitä miestä, joka tuli
Chancellor-hotelliin ja joka murhattiin hiekkakuopassa huvilanne
takana, James Deaneksi, kuten hän itsekin, vaikka luulemme häntä
James Arradeaneksi, miehenne serkuksi. James Deane poistui
Chancellorista myöhään illalla kaupungille. Hän kysyi tietä taloonne,
mainiten nimennekin. Myöhemmin nähtiin hänet alueellanne teidän
seurassanne — te näytätte hämmästyvän sen kuullessanne, mutta
minä voin sen todistaa. Hän ei palannut enää Chancelloriin, ja hänet
löydettiin kuolleena, murhattuna, kaksi vuorokautta myöhemmin.
Silloin te aloitte hyvittää ihmisiä saadaksenne heidät vaikenemaan —
hyvititte varmasti Bartlettin, ja epäilen vakavasti, että hyvititte myös
John Hackdalen. Asiat näyttävät perin vakavilta, rouva
Champernowne, ja luullakseni teidän olisi parasta puhua, ja sitä
vaadinkin! Miksi ette voisi puhua ja ilmoittaa meille totuutta?
Suostukaa, rouva Champernowne, sillä tehän olette viranomainen ja
tiedätte…"

"Entä sitten, jollen tahdo?" kysyi rouva Champernowne.

Mellapont levitti kätensä.

"Ajatelkaa asemaani", sanoi hän. "Minulla on kaikki nämä tiedot


hallussani! Miltä asia mielestänne näyttää, rouva Champernowne?
Mitä ihmiset sanoisivat? Täällä on läsnä pari lakimiestä, ja jos
suostutte noudattamaan heidän neuvoansa, olen varma…"

Mutta rouva Champernowne ei näyttänyt haluavan kääntyä


kuminankaan lakimiehen puoleen, ei Shelmoren eikä Palsfordin. Hän
katseli sormuksiaan, joita pyöritteli koneellisesti, kysyjää ja sitten
taas sormuksiaan. Tuli hetkisen kestävä vaitiolo, joka vihdoin äkkiä
keskeytyi.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like