MATLAB

MATLAB

In this Cleve’s Corner, I’ll describe some milestones in the evolution of MATLAB from those simple beginnings.

Mathematical Origins

The mathematical basis for the first version of MATLAB was a series of research papers by J. H. Wilkinson and 18 of his colleagues, published between 1965 and 1970 and later collected in Handbook for Automatic Computation, Volume II, Linear Algebra, edited by Wilkinson and C. Reinsch. These papers present algorithms, implemented in Algol 60, for solving matrix linear equation and eigenvalue problems.

EISPACK and LINPACK

In 1970, a group of researchers at Argonne National Laboratory proposed to the U.S. National Science Foundation (NSF) to “explore the methodology, costs, and resources required to produce, test, and disseminate high-quality mathematical software and to test, certify, disseminate, and support packages of mathematical software in certain problem areas.” The group developed EISPACK (Matrix Eigensystem Package) by translating the Algol procedures for eigenvalue problems in the handbook into Fortran and working extensively on testing and portability. The first version of EISPACK was released in 1971 and the second in 1976.

In 1975, four of us—Jack Dongarra, Pete Stewart, Jim Bunch, and myself—proposed to the NSF another research project that would investigate methods for the development of mathematical software. A byproduct would be the software itself, dubbed LINPACK, for Linear Equation Package. This project was also centered at Argonne.

LINPACK originated in Fortran; it did not involve translation from Algol. The package contained 44 subroutines in each of four numeric precisions.

In a sense, the LINPACK and EISPACK projects were failures. We had proposed research projects to the NSF to “explore the methodology, costs, and resources required to produce, test, and disseminate high-quality mathematical software.” We never wrote a report or paper addressing those objectives. We only produced software.

Historic MATLAB

In the 1970s and early 1980s, I was teaching Linear Algebra and Numerical Analysis at the University of New Mexico and wanted my students to have easy access to LINPACK and EISPACK without writing Fortran programs. By “easy access,” I meant not going through the remote batch processing and the repeated edit-compile-link-load-execute process that was ordinarily required on the campus central mainframe computer.

So, I studied Niklaus Wirth’s book Algorithms + Data Structures = Programs and learned how to parse programming languages. I wrote the first MATLAB—an acronym for Matrix Laboratory—in Fortran, with matrix as the only data type. The project was a kind of hobby, a new aspect of programming for me to learn and something for my students to use. There was never any formal outside support, and certainly no business plan.

This first MATLAB was just an interactive matrix calculator. This snapshot of the start-up screen shows all the reserved words and functions. There are only 71. To add another function, you had to get the source code from me, write a Fortran subroutine, add your function name to the parse table, and recompile MATLAB.

Data Types

For many years, MATLAB had only one numeric data type: IEEE standard 754 double-precision floating point, stored in the 64-bit format. As people began to use MATLAB for more applications and larger data sets, we provided more ways to represent data.

Single Precision and Integer

Support for single-precision arithmetic began in the early 2000s and was complete by MATLAB 7 in 2004. Requiring only 32 bits of storage, single precision cuts memory requirements for large arrays in half. MATLAB does not have declarations, so single-precision variables are obtained by executable conversion functions.

MATLAB 7 also introduced three unsigned integer data types, uint8, uint16, and uint32; three signed integer data types, int8, int16, and int32; and one logical data type, logical.

Sparse Matrices

Sparse matrices were introduced with MATLAB 4 in 1992. They are a memory-efficient way to represent very large arrays that have few nonzero values. Only the nonzero elements are stored, along with row indices and pointers to the starts of columns. The only change to the outward appearance of MATLAB is a pair of functions, sparse and full. Nearly all the operations apply equally to full and sparse matrices. The sparse storage scheme represents a matrix in space proportional to the number of nonzero entries, and most of the operations compute sparse results in time proportional to the number of arithmetic operations on nonzeros.

Cell Arrays

Cell arrays were introduced with MATLAB 5 in 1996. A cell array is an indexed, possibly heterogeneous collection of MATLAB objects, including other cell arrays. Cell arrays are created by curly braces, {}.

Cell arrays can be indexed by both curly braces and smooth parentheses. With braces, c{k} is the contents of the k-th cell. With parentheses, c(k) is another cell array containing the specified cells. Think of a collection of mailboxes. box(k) is the k-th mailbox. box{k} is the mail in the k-th box.

Modern MATLAB

While preserving its roots in matrix mathematics, MATLAB has continued to evolve to meet the changing needs of engineers and scientists. The key developments are shown in the timeline. Here, I’ll elaborate on some of them.

要查看或添加评论,请登录

Sandeep Krishnan的更多文章

  • ARM processor

    ARM processor

    ARM processors are a family of central processing units (CPUs) based on a reduced instruction set computer (RISC)…

  • Solar Wireless Charging

    Solar Wireless Charging

    Wireless charging technology, a reliable, convenient, and secure method of powering and charging electrical devices…

  • Three Phase H-Bridge Inverter

    Three Phase H-Bridge Inverter

    DGs (Distributed Generations) play a vital role in emerging electric power systems with current initiatives in…

  • NANOTECHNOLOGY

    NANOTECHNOLOGY

    Nanotechnology is the science and application of manipulating matter at the scale of individual atoms and molecules…

  • POWER ELECTRONICS

    POWER ELECTRONICS

    The capabilities and economy of power electronics system are determined by the active devices that are available. Their…

  • PCB board design

    PCB board design

    Types of Printed Circuit Boards In general, boards can be categorized into three categories: rigid, flex, or…

    1 条评论
  • SNS INSTITUTON 5 PILLARS

    SNS INSTITUTON 5 PILLARS

    The five pillars of SNS institution's activities encompass a comprehensive approach to fostering growth and engagement.…

  • 5G world

    5G world

    Most recently, in three decades, rapid growth was marked in the field of wireless communication concerning the…

  • Design thinking

    Design thinking

    Design thinking can be a valuable approach for Social and Nonprofit Sector (SNS) institutions as it offers a…

  • AUTONOMOUS FIRE FIGHTING ROBOT

    AUTONOMOUS FIRE FIGHTING ROBOT

    Firefighters risk their lives to save vulnerable people in the event of a fire. Firefighting robot designs have been…

社区洞察

其他会员也浏览了