Introduction to MATLAB

Total Page:16

File Type:pdf, Size:1020Kb

Introduction to MATLAB What is MATLAB MathWorks Logo I high-level language (garbage collecting, var-len structures) Introduction to MATLAB I BASIC-like syntax, with elements from C, GUI IDE I basic data type: 2- or 3-dimensional floating-point matrix I most operators and functions work on entire matrices Markus Kuhn ) hardly ever necessary to write out loops I uses internally highly optimized numerics libraries (BLAS, LAPACK, FFTW) I comprehensive toolboxes for easy access to standard algorithms from Computer Laboratory, University of Cambridge many fields: statistics, machine learning, image processing, signal processing, neural networks, wavelets, communications systems https://www.cl.cam.ac.uk/teaching/1920/TeX+MATLAB/ I very simple I/O for many data/multimedia file formats I popular for experimental/rapid-prototype number crunching I widely used as a visualization and teaching tool matlab-slides-4up.pdf 2019-10-05 17:41 d4e9c33 1 2 What MATLAB is not Open-source MATLAB alternatives Similar to MATLAB, subset compatible: GNU Octave, SciLab, FreeMat Other high-level languages for technical computing: I R { focus on statistics and plotting I not a computer algebra system https://www.r-project.org/ I not a strong general purpose programming language I Python { a full-featured programming language. Modules: • • limited support for other data structures numpy { numerical arrays, fast linear algebra • • few software-engineering features; matplotlib { MATLAB-like plotting functions https://matplotlib.org/ typical MATLAB programs are only a few lines long • SciPy { scientific computing, Pandas { data analysis, etc. • not well-suited for teaching OOP I Julia { modern, fast, full-featured, compiled, interactive language • limited GUI features https://julialang.org/ I not a high-performance language (but fast matrix operators) • MATLAB-inspired syntax (especially for arrays) got better since introduction of JIT compiler (JVM) • combines dynamic and static type systems, multiple dispatch I not freely available (but local campus licence) • LLVM backend, can also call C, C++, Python, R, Fortran functions • LISP-like metaprogramming, rich flexible type system I others: LuaJIT (SciLua), Perl Data Language (PDL), OCaml (Owl) Jupyter is a popular browser-based notebook environment for recording and presenting experiments in Julia, Python, R, . 3 4 Local availability Documentation MATLAB is installed and ready to use on I Intel Lab, etc.: MCS Windows I Intel Lab, etc.: MCS Linux (/usr/bin/matlab) I Full documentation built in: start matlab then type • I CL MCS Linux server: ssh -X linux.cl.ds.cam.ac.uk doc { to browse built-in hypertext manual • I MCS Linux server: ssh -X linux.ds.cam.ac.uk doc command { to jump to a specific manual page (e.g. plot) • I Computer Laboratory managed Linux PCs help command { to show plain-text summary of a command cl-matlab -> /usr/groups/matlab/current/bin/matlab I Read first: doc ! MATLAB ! Getting Started Campus license (666637) allows installation on staff/student home PCs I Tutorial videos: (Linux, macOS, Windows): https://uk.mathworks.com/videos.html I https://uk.mathworks.com/academia/tah-portal/ Documentation also available online (HTML and PDF): the-university-of-cambridge-666637.html I • https://uk.mathworks.com/help/matlab/ I Now (since 2018) includes full suite of ≈ 180 toolboxes: Statistics and Machine Learning, Signal Processing, Image Processing, Image • https://uk.mathworks.com/help/ { toolboxes Acquisition, Bioinformatics, Control Systems, Wavelets, Deep Locally installed MATLAB may be half a year behind the latest release. If you spot problems with Learning, Audio System, GPU Coder, Instrument Control, RF, . the MCS MATLAB installation, please do let the lecturer know (! [email protected]). I Installation requires setting up a https://uk.mathworks.com/ account with your @cam.ac.uk email address. The older Computer Laboratory license (136605) was replaced in 2018 by the University one. 5 6 MATLAB matrices (1) MATLAB matrices (2) Colon generates number sequence: Specify step size with second colon: Generate a \magic square" with equal row/column/diagonal sums and assign the resulting 3 × 3 matrix to variable a: >> 11:14 >> 1:3:12 ans = ans = >> a = magic(3) 11 12 13 14 1 4 7 10 a = 8 1 6 >> -1:1 >> 4:-1:1 3 5 7 ans = ans = 4 9 2 -1 0 1 4 3 2 1 Assignments and subroutine calls normally end with a semicolon. >> 3:0 >> 3:-0.5:2 Without, MATLAB will print each result. Useful for debugging! ans = ans = Results from functions not called inside an expression are assigned to the Empty matrix: 1-by-0 3.0000 2.5000 2.0000 default variable ans. Single matrix cell: a(2,3) == 7. Vectors as indices select several rows and Type help magic for the manual page of this library function. columns. When used inside a matrix index, the variable end provides the highest index value: a(end, end-1) == 9. Using just \:" is equivalent to \1:end" and can be used to select an entire row or column. 7 8 • = • 0 •••• 1 B •••• C B C · = B •••• C scalar product, dot product B C @ •••• A •••• 0 •••• 1 B •••• C = B C @ •••• A •••• row first factor column second factor matrix of all pair-wise products MATLAB matrices (3) MATLAB matrices (4) Select rows, columns and Matrices can also be accessed as a Use [] to build new matrices, where , or space as a delimiter joins submatrices of a: 1-dimensional vector: submatrices horizontally and ; joins them vertically. >> a(1:5) >> a(1,:) ans = >> c = [2 7; 3 1] Mask matrix elements: ans = 8 3 4 1 5 c = 8 1 6 2 7 >> find(a > 5) >> a(6:end) 3 1 ans = >> a(:,1) ans = >> d = [a(:,end) a(1,:)'] 1 ans = 9 6 7 2 d = 6 8 6 8 7 3 >> b = a(1:4:9) 7 1 8 4 ans = 2 6 >> a(find(a > 5)) = 0 8 5 2 >> e = [zeros(1,3); a(2,:)] a = >> a(2:3,1:2) e = 0 1 0 ans = >> size(b) 0 0 0 3 5 0 3 5 ans = 3 5 7 4 0 2 4 9 1 3 9 10 Review: matrix multiplication Review: inner and outer product of vectors Special cases of matrix multiplication 0 •••• 1 @ •••• A •••• 0 • 1 B • C · k •••• · B C = @ • A 0 ••• 1 0 •••• 1 • B ••• C B •••• C B C B C B ••• C B •••• C Row vector times column vector: B C B C @ ••• A @ •••• A ••• •••• 0 • 1 B • C B C · •••• @ • A Each element of the matrix product is the scalar product of • the corresponding in the and the corresponding in the Column vector times row vector: 11 12 MATLAB matrices (5) Plotting 20-point raised cosine 1 1 real 0.8 imaginary 0.8 Operators on scalars and matrices: Inner and outer vector product: 0.6 >> [2 3 5] * [1 7 11]' 0.6 0.4 >> [1 1; 1 0] * [2 3]' ans = 0.2 ans = 78 0.4 5 >> [2 3 5]' * [1 7 11] 0 2 ans = 0.2 -0.2 >> [1 2 3] .* [10 10 15] 2 14 22 -0.4 0 0 2 4 6 8 10 ans = 3 21 33 0 5 10 15 20 10 20 45 5 35 55 x = 0:20; t = 0:0.1:10; y = 0.5 - 0.5*cos(2*pi * x/20); x = exp(t * (j - 1/3)); p stem(x, y); plot(t, real(x), t, imag(x)); The imaginary unit vector −1 is available as both i and j, and title('20-point raised cosine'); grid; legend('real', 'imaginary') matrices can be complex. Related functions: real, imag, conj, exp, abs, angle Plotting functions plot, semilogx, semilogy, loglog all expect a pair of vectors for each curve, with x and y coordinates, respectively. Use saveas(gcf, 'plot2.eps') to save current figure as graphics file. 13 14 2D plotting Some common functions and operators -20 *, ^ imread, imwrite, image, matrix multiplication, exponentiation imagesc, colormap 1 -15 /, \, inv bitmap image I/O A=B = AB−1;AnB = A−1B; A−1 0.5 -10 plot, semilogfx,yg, loglog +, -, .*, ./, .^ 2D curve plotting element-wise add/sub/mul/div/exp 0 -5 conv, conv2, xcorr ==, ~=, <, >, <=, >= 1D/2D convolution, -0.5 0 relations result in element-wise 0/1 20 cross/auto-correlation sequence 20 length, size 0 10 5 fft, ifft, fft2 0 size of vectors and matrices -10 discrete Fourier transform -20 -20 zeros, ones, eye, diag 10 all-0, all-1, identity, diag. matrices sum, prod, min, max sum up rows or columns 15 xlim, ylim, zlim xl = -20:0.3:20; set plot axes ranges cumsum, cumprod, diff yl = -20:0.3:20; 20 xlabel, ylabel, zlabel cumulative sum or product, [x,y] = meshgrid(xl, yl); -20 -10 0 10 20 r = sqrt(x.^2 + y.^2); label plot axes differentiate row/column s = sin(r) ./ r; s(find(r==0)) = 1; imagesc(xl, yl, s, [-1 1]); audioread, audiowrite, sound find plot3(x, y, s); colormap(gray); audio I/O list non-zero indices grid on; set(gca, 'DataAspectRatio', [1 1 1]); csvread, csvwrite figure, saveas comma-separated-value I/O open new figure, save figure 15 16 Functions and m-files Example: generating an audio illusion To define a new function, for example decibel(x) = 10x=20, write into a Generate an audio file with 12 sine tones of apparently continuously file decibel.m the lines exponentially increasing frequency, which never leave the frequency range function f = decibel(x) 300{3400 Hz. Do this by letting them wrap around the frequency interval % DECIBEL(X) converts a decibel figure X into a factor and reduce their volume near the interval boundaries based on a f = 10 .^ (x ./ 20); raised-cosine curve applied to the logarithm of the frequency.
Recommended publications
  • Scaling a Content Delivery System for Open Source Software
    Scaling a Content Delivery system for Open Source Software Niklas Edmundsson May 25, 2015 Master’s Thesis in Computing Science, 30 credits Supervisor at CS-UmU: Per-Olov Ostberg¨ Examiner: Fredrik Georgsson Ume˚a University Department of Computing Science SE-901 87 UMEA˚ SWEDEN Abstract This master’s thesis addresses scaling of content distribution sites. In a case study, the thesis investigates issues encountered on ftp.acc.umu.se,acontentdistributionsiterun by the Academic Computer Club (ACC) of Ume˚aUniversity. Thissiteischaracterized by the unusual situation of the external network connectivity having higher bandwidth than the components of the system, which differs from the norm of the external con- nectivity being the limiting factor. To address this imbalance, a caching approach is proposed to architect a system that is able to fully utilize the available network capac- ity, while still providing a homogeneous resource to the end user. A set of modifications are made to standard open source solutions to make caching perform as required, and results from production deployment of the system are evaluated. In addition, time se- ries analysis and forecasting techniques are introduced as tools to improve the system further, resulting in the implementation of a method to automatically detect bursts and handle load distribution of unusually popular files. Contents 1Introduction 1 2Background 3 3 Architecture analysis 5 3.1 Overview ................................... 5 3.2 Components . 7 3.2.1 mod cache disk largefile - Apache httpd disk cache . 8 3.2.2 libhttpcacheopen - using the httpd disk cache for otherservices. 9 3.2.3 redirprg.pl-redirectionsubsystem . ... 10 3.3 Results....................................
    [Show full text]
  • Effective Perl Programming
    Effective Perl Programming Second Edition The Effective Software Development Series Scott Meyers, Consulting Editor Visit informit.com/esds for a complete list of available publications. he Effective Software Development Series provides expert advice on Tall aspects of modern software development. Books in the series are well written, technically sound, and of lasting value. Each describes the critical things experts always do—or always avoid—to produce outstanding software. Scott Meyers, author of the best-selling books Effective C++ (now in its third edition), More Effective C++, and Effective STL (all available in both print and electronic versions), conceived of the series and acts as its consulting editor. Authors in the series work with Meyers to create essential reading in a format that is familiar and accessible for software developers of every stripe. Effective Perl Programming Ways to Write Better, More Idiomatic Perl Second Edition Joseph N. Hall Joshua A. McAdams brian d foy Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals. The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.
    [Show full text]
  • Mastering Algorithms with Perl
    Page iii Mastering Algorithms with Perl Jon Orwant, Jarkko Hietaniemi, and John Macdonald Page iv Mastering Algorithms with Perl by Jon Orwant, Jarkko Hietaniemi. and John Macdonald Copyright © 1999 O'Reilly & Associates, Inc. All rights reserved. Printed in the United States of America. Cover illustration by Lorrie LeJeune, Copyright © 1999 O'Reilly & Associates, Inc. Published by O'Reilly & Associates, Inc., 101 Morris Street, Sebastopol, CA 95472. Editors: Andy Oram and Jon Orwant Production Editor: Melanie Wang Printing History: August 1999: First Edition. Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo are registered trademarks of O'Reilly & Associates, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. The association between the image of a wolf and the topic of Perl algorithms is a trademark of O'Reilly & Associates, Inc. While every precaution has been taken in the preparation of this book, the publisher assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 1-56592-398-7 [1/00] [M]]break Page v Table of Contents Preface xi 1. Introduction 1 What Is an Algorithm? 1 Efficiency 8 Recurrent Themes in Algorithms 20 2. Basic Data Structures 24 Perl's Built-in Data Structures 25 Build Your Own Data Structure 26 A Simple Example 27 Perl Arrays: Many Data Structures in One 37 3.
    [Show full text]
  • Using Perl for Statistics: Data Processing and Statistical Computing
    JSS Journal of Statistical Software May 2004, Volume 11, Issue 1. http://www.jstatsoft.org/ Using Perl for Statistics: Data Processing and Statistical Computing Giovanni Baiocchi University of Durham Abstract In this paper we show how Perl, an expressive and extensible high-level programming language, with network and object-oriented programming support, can be used in process- ing data for statistics and statistical computing. The paper is organized in two parts. In Part I, we introduce the Perl programming language, with particular emphasis on the fea- tures that distinguish it from conventional languages. Then, using practical examples, we demonstrate how Perl’s distinguishing features make it particularly well suited to perform labor intensive and sophisticated tasks ranging from the preparation of data to the writing of statistical reports. In Part II we show how Perl can be extended to perform statistical computations using modules and by “embedding” specialized statistical applications. We provide example on how Perl can be used to do simple statistical analyses, perform com- plex statistical computations involving matrix algebra and numerical optimization, and make statistical computations more easily reproducible. We also investigate the numerical and statistical reliability of various Perl statistical modules. Important computing issues such as ease of use, speed of calculation, and efficient memory usage, are also considered. Keywords: Perl, data processing, statistical computing, reproducibility. 1. Introduction Statistics is often defined as the collection, presentation, characterization, analysis, and in- terpretation of data. The large availability of powerful computers and sophisticated software has meant that many of these activities are routinely solved by statisticians using powerful statistical systems.
    [Show full text]
  • Perl Cookbook
    ;-_=_Scrolldown to the Underground_=_-; Perl Cookbook http://kickme.to/tiger/ By Tom Christiansen & Nathan Torkington; ISBN 1-56592-243-3, 794 pages. First Edition, August 1998. (See the catalog page for this book.) Search the text of Perl Cookbook. Index Symbols | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z Table of Contents Foreword Preface Chapter 1: Strings Chapter 2: Numbers Chapter 3: Dates and Times Chapter 4: Arrays Chapter 5: Hashes Chapter 6: Pattern Matching Chapter 7: File Access Chapter 8: File Contents Chapter 9: Directories Chapter 10: Subroutines Chapter 11: References and Records Chapter 12: Packages, Libraries, and Modules Chapter 13: Classes, Objects, and Ties Chapter 14: Database Access Chapter 15: User Interfaces Chapter 16: Process Management and Communication Chapter 17: Sockets Chapter 18: Internet Services Chapter 19: CGI Programming Chapter 20: Web Automation The Perl CD Bookshelf Navigation Copyright © 1999 O'Reilly & Associates. All Rights Reserved. Foreword Next: Preface Foreword They say that it's easy to get trapped by a metaphor. But some metaphors are so magnificent that you don't mind getting trapped in them. Perhaps the cooking metaphor is one such, at least in this case. The only problem I have with it is a personal one - I feel a bit like Betty Crocker's mother. The work in question is so monumental that anything I could say here would be either redundant or irrelevant. However, that never stopped me before. Cooking is perhaps the humblest of the arts; but to me humility is a strength, not a weakness.
    [Show full text]
  • Programming Skills: a Look Back to Peer Into the Future
    Programming Skills: A look back to peer into the future. Pete Massiello iTech Solutions [email protected] Twitter: PeteM59 1 Prehistory • The first Programming languages predate the computer. • Languages were codes • 1890 Herman Hollerith – Census data Early programming When do we start? • The Analytical Engine, an important step in the history of computers, is a design for a mechanical general-purpose computer first described by English mathematician Charles Babbage in 1837. It was the successor to Babbage's difference engine, a design for a mechanical calculator. The Analytical Engine incorporated an arithmetical unit, control flow in the form of conditional branching and loops, and integrated memory, making it the first Turing-complete design for a general-purpose computer. • Programming supposed to be by punch cards. Analytical Engine: Built 63 years later ENIAC • Designed in 1942 General-purpose Electronic computer • Electronic Numerical Integrator and Computer (ENIAC). • Enormous speed advantage by using digital electronics with no moving parts. • Called Project-PX as its code name. • Started in 1943, completed in 1946 costing $500,000 ( $6,000,000 in 2010 dollars). • Designed to calculate artillery firing tables for the Army. • First project was computations for the hydrogen bomb. • Decimal based. Programming the ENIAC Operating ENIACs main control panel EDVAC • Electronic Discrete Variable Automatic Computer • Binary serial computer with automatic addition, subtraction, multiplication, programmed division and automatic checking with an ultrasonic serial memory. • Capacity of 1,000 44-bit words, later set to 1,024 words: 5.5KB • 6,000 vacuum tubes, 12,000 diodes, consumed 56kW of power, and covered 490 Sq. Ft.
    [Show full text]
  • MASS2, Modular Aquatic Simulation System in Two Dimensions, User
    PNNL-14820-2 MASS2 Modular Aquatic Simulation System in Two Dimensions User Guide and Reference W. A. Perkins M. C. Richmond September 2004 Prepared for the U.S. Department of Energy under Contract DE-AC06-76RL01830 DISCLAIMER United States Government. Neither the United States Government nor any agency thereof, nor Battelle Memorial Institute, nor any of their employees, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights. Reference herein to any specific commercial product, process, or service by trade name, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Government or any agency thereof, or Battelle Memorial Institute. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof. PACIFIC NORTHWEST NATIONAL LABORATORY operated by BATTELLE for the UNITED STATES DEPARTMENT OF ENERGY under Contract DE-AC06-76RLO1830 Printed in the United States of America Available to DOE and DOE contractors from the Office of Scientific and Technical Information, P.O. Box 62, Oak Ridge, TN 37831-0062; ph: (865) 576-8401 fax: (865) 576-5728 email: [email protected] Available to the public from the National Technical Information Service, U.S. Department of Commerce, 5285 Port Royal Rd., Springfield, VA 22161 ph: (800) 553-6847 fax: (703) 605-6900 email: [email protected] online ordering: http://www.ntis.gov/ordering.htm This document was printed on recycled paper.
    [Show full text]
  • The Perl Data Language (PDL) – a Short Intro Karl Glazebrook
    The Perl Data Language (PDL) – A short intro Karl Glazebrook Monday, 17 October 2011 What is PDL? – Array processing oriented language – Multiple datatypes (ints, floats, doubles...) – Arrays are stored in C-friendly compact memory blocks – C-speed for array processing – Lots of numerical oriented functions $r = rvals(2000,2000); $sin = 10*sin(0.02*$r); imag $sin/max($sin)+grandom($r)*0.1; Monday, 17 October 2011 DEMO Monday, 17 October 2011 History Monday, 17 October 2011 Some key features High-level expressive coding 2D graphics uses familiar PGPLOT (support for multiple 2D+3D graphics libraries) Deep vectorization Access to all of Perl (CPAN libraries) – text processing, DB/SQL support, WWW interfaces,... Excellent FITS & astro support Fast Free Easy extension with C code (inline!) Monday, 17 October 2011 Deep vectorization $x = random(1000000); $median = medover($x); # 0D answer $x = random(100000,200); $median = medover($x); # 1D answer (200 elements) $median = medover($x->mv(1,0)); # 1D answer (100000) All vector functions operate at C speed and automatically ‘thread’ over extra dimensions Lots of functions for slicing, dicing, clumping, indexing and generally mixing up dimensions $x = random(10, 2000,2000,2); $median = medover($x->clump(1,2)->mv(1,0)); # answer is 10x2 Monday, 17 October 2011 Real World Example Something I did recently... DEIMOS sky spectrum Monday, 17 October 2011 Code ($w,$f) = rcols 'cooper-skyspec.dat'; Log sequence of FWHMs # Smooth with a series of gaussians Tmp column vector $fwhm = 10**(sequence(20)/10)
    [Show full text]
  • Introduction to MATLAB
    MathWorks Logo Introduction to MATLAB Markus Kuhn Computer Laboratory, University of Cambridge https://www.cl.cam.ac.uk/teaching/2021/TeX+MATLAB/ matlab-slides-2up.pdf 2020-09-28 19:05 a24d99d 1 What is MATLAB I high-level language (garbage collecting, var-len structures) I BASIC-like syntax, with elements from C, GUI IDE I basic data type: 2- or 3-dimensional floating-point matrix I most operators and functions work on entire matrices ) hardly ever necessary to write out loops I uses internally highly optimized numerics libraries (BLAS, LAPACK, FFTW) I comprehensive toolboxes for easy access to standard algorithms from many fields: statistics, machine learning, image processing, signal processing, neural networks, wavelets, communications systems I very simple I/O for many data/multimedia file formats I popular for experimental/rapid-prototype number crunching I widely used as a visualization and teaching tool 2 What MATLAB is not I not a computer algebra system I not a strong general purpose programming language • limited support for other data structures • few software-engineering features; typical MATLAB programs are only a few lines long • not well-suited for teaching OOP • limited GUI features I not a high-performance language (but fast matrix operators) got better since introduction of JIT compiler (JVM) I not freely available (but local campus licence) 3 Open-source MATLAB alternatives Similar to MATLAB, subset compatible: GNU Octave, SciLab, FreeMat Other high-level languages for technical computing: I R { focus on statistics and plotting https://www.r-project.org/ I Python { a full-featured programming language. Modules: • numpy { numerical arrays, fast linear algebra • matplotlib { MATLAB-like plotting functions https://matplotlib.org/ • SciPy { scientific computing, Pandas { data analysis, etc.
    [Show full text]
  • Extending and Embedding Perl
    Extending and Embedding Perl Extending and Embedding Perl TIM JENNESS SIMON COZENS MANNING Greenwich (74° w. long.) For online information and ordering of this and other Manning books, go to www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact: Special Sales Department Manning Publications Co. 209 Bruce Park Avenue Fax: (203) 661-9018 Greenwich, CT 06830 email: [email protected] ©2003 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Manning Publications Co. Copyeditor: Tiffany Taylor 209 Bruce Park Avenue Typesetter: Dottie Marsico Greenwich, CT 06830 Cover designer: Leslie Haimes ISBN 1930110820 Printed in the United States of America 12345678910–VHG–0605040302 To the Perl open source community contents preface xiii acknowledgments xv about this book xvi author online xix about the cover
    [Show full text]
  • Summary of Image and Plotting Software (IPS) Packages Collected
    Summary of Image and Plotting Software (IPS) packages collected for possible use with GLAST Science Analysis Tools For the Science Analysis Tools, we will need the capability to make plots, and display images on the screen. It would not be an efficient use of our manpower to write a custom set of plotting tools if we can find a package available that satisfies our needs. To this end the User Interface committee has settled on a list of basic requirements for science analysis graphics and have begun to look at some packages. The packages and their characteristics are contained in table 1 below. It seems quite clear that the choice of package is intimately related to the scope of what we want to do. For example if our tools only have to put up plots and images with minimal interactive analysis, then the plotting packages (the first group in table 1) are desirable. If we want to have more complicated interactions with the user and more extensive image manipulation (rotatable images, e.g.), then something more like a graphic toolkit would be desirable. If we decide to go the latter route and use a tool like Qt, then we need programmers to start working immediately to create the basic plotting classes and methods to ensure this does not hold up development of the science tools. The basic requirements have already reduced the number of packages to < 20, but we need to better define the requirements in greater detail to narrow it down to two or three packages. Basic requirements (IPS= Image and Plotting Software): 1) The IPS must be freely available for use, modification, and re-distribution.
    [Show full text]
  • Advanced Perl Programming
    ;-_=_Scrolldown to the Underground_=_-; Advanced Perl Programming http://kickme.to/tiger/ By Sriram Srinivasan; ISBN 1-56592-220-4, 434 pages. First Edition, August 1997. (See the catalog page for this book.) Search the text of Advanced Perl Programming. Index Symbols | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z Table of Contents Preface Chapter 1: Data References and Anonymous Storage Chapter 2: Implementing Complex Data Structures Chapter 3: Typeglobs and Symbol Tables Chapter 4: Subroutine References and Closures Chapter 5: Eval Chapter 6: Modules Chapter 7: Object-Oriented Programming Chapter 8: Object Orientation: The Next Few Steps Chapter 9: Tie Chapter 10: Persistence Chapter 11: Implementing Object Persistence Chapter 12: Networking with Sockets Chapter 13: Networking: Implementing RPC Chapter 14: User Interfaces with Tk Chapter 15: GUI Example: Tetris Chapter 16: GUI Example: Man Page Viewer Chapter 17: Template-Driven Code Generation Chapter 18: Extending Perl:A First Course Chapter 19: Embedding Perl:The Easy Way Chapter 20: Perl Internals Appendix A: Tk Widget Reference Appendix B: Syntax Summary Examples The Perl CD Bookshelf Navigation Copyright © 1999 O'Reilly & Associates. All Rights Reserved. Preface Next: Why Perl? Preface Contents: The Case for Scripting Why Perl? What Must I Know? The Book's Approach Conventions Resources Perl Resources We'd Like to Hear from You Acknowledgments Errors, like straws, upon the surface flow; He who would search for pearls must dive below. - John Dryden, All for Love, Prologue This book has two goals: to make you a Perl expert, and, at a broader level, to supplement your current arsenal of techniques and tools for crafting applications.
    [Show full text]