Navigation
  • Home
  • Recent
  • Most Active
  • Popular
  • Blog
  • Credits
  • RSS
  •   Interaction
  • Register
  • Statistics
  •   Help
  • Suggestions
  • Contact Us
  • How to Edit
  • Help



  • [Edit]




    MATLAB is a numerical computing environment and programming language. Created by The MathWorks, MATLAB allows easy matrix manipulation, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs in other languages. Although it specializes in numerical computing, an optional toolbox interfaces with the Maple symbolic engine, making it a full computer algebra system. It is used by more than one million people in industry and academia. Generally speaking, MATLAB is intended for "performing computationally intensive tasks faster than with traditional programming languages such as C, C++, and Fortran." A North American individual commercial license costs US$1900 (MATLAB only), while a license for student use costs US$99 (MATLAB, Simulink and Symbolic Math).


        MATLAB
            History
            Syntax
                Variables
                Vectors/Matrices
                Semicolon
            Code Snippets
            Criticism
            See also
            Notes
    NameMATLAB
    LogoImage:Matlab.jpg
    ScreenshotImage:MATLAB screenshot showing sobel filteri...
    CaptionMATLAB 6.5 being used to manipulate a bitmap ...
    DeveloperThe MathWorks
    Latest Release VersionR2006b
    Latest Release DateSeptember 1, 2006
    Operating SystemCross-platform http://www.mathworks.com/produ...
    GenreList of numerical analysis software
    LicenseProprietary software

    top

    History
    Short for "MATrix LABoratory", MATLAB was invented in the late 1970s by Cleve Moler, then chairman of the computer science department at the University of New Mexico. He designed it to give his students access to LINPACK and EISPACK without having to learn Fortran. It soon spread to other universities and found a strong audience within the applied mathematics community. Jack Little, an engineer, was exposed to it during a visit Moler made to Stanford University in 1983. Recognizing its commercial potential, he joined with Moler and Steve Bangert. They rewrote MATLAB in C and founded The MathWorks in 1984 to continue its development. These rewritten libraries were lovingly known as JACKPAC. MATLAB was first adopted by control design engineers, Little's specialty, but quickly spread to many other domains. It is now also used in education, in particular the teaching of linear algebra and numerical analysis, and is the de facto choice for scientists involved with image processing.

    top

    Syntax
    MATLAB is built around the MATLAB language, sometimes called M-code or simply M. The simplest way to execute M-code is to type it in at the prompt, >> , in the Command Window, one of the elements of the MATLAB Desktop. In this way, MATLAB can be used as an interactive mathematical shell. Sequences of commands can be saved in a text file, typically using the MATLAB Editor, as a script or encapsulated into a function, extending the commands available.

    top

    Variables
    Variables are defined with the assignment operator, =. MATLAB is dynamically typed, meaning that variables can be assigned without declaring their type, and that their type can change. Values can come from constants, from computation involving values of other variables, or from the output of a function. For example:

    >> x = 17
    x =
    17
    >> x = 'hat'
    x =
    hat
    >> x = 3
      4
    x =
    12
    >> y = 3
      sin(x)
    y =
    -1.6097

    top

    Vectors/Matrices
    MATLAB is the "Matrix Laboratory", and so provides many convenient ways for creating matrices of various dimensions. In the MATLAB vernacular, a vector refers to a one dimensional (1×N or N×1) matrix, commonly referred to as an array in other programming languages. A matrix generally refers to a multi-dimensional matrix, that is, a matrix with more than one dimension, for instance, an N×M, an N×M×L, etc., where N, M, and L are greater than 1. In other languages, such a matrix might be referred to as an array of arrays, or array of arrays of arrays, etc.

    MATLAB provides a simple way to define simple arrays using the syntax: init:increment:terminator. For instance:

    >> array = 1:2:9
    array =
    1 3 5 7 9

    defines a variable named array (or assigns a new value to an existing variable with the name array) which is an array consisting of the values 1, 3, 5, 7, and 9. That is, the array starts at 1, the init value, and each value increments from the previous value by 2 (the increment value), and stops once it reaches but not exceeding 9 (9 being the value of the terminator).

    >> array = 1:3:9
    array =
    1 4 7

    the increment value can actually be left out of this syntax (along with one of the colons), to use a default value of 1.

    >> ari = 1:5
    ari =
    1 2 3 4 5

    assigns to the variable named ari an array with the values 1, 2, 3, 4, and 5, since the default value of 1 is used as the incrementer.

    top

    Semicolon
    In many other languages, the semicolon is required to terminate commands. In MATLAB the semicolon is optional. If a statement is not terminated with a semicolon, then the result of the statement is displayed.

    top

    Code Snippets
    This code, excerpted from the function magic.m, creates a magic square M for odd values of n.

    J,I = meshgrid(1:n);
    A = mod(I+J-(n+3)/2,n);
    B = mod(I+2
      J-2,n);
    M = n
      A + B + 1;

    Note that this code performs operations on vectors and matrices without the use of "for" loops. Idiomatic MATLAB programs usually operate on whole arrays at a time. The MESHGRID utility function above creates arrays like these:


    J =

    1 2 3
    1 2 3
    1 2 3

    I =

    1 1 1
    2 2 2
    3 3 3


    Most scalar functions can also be used on arrays, and will apply themselves in parallel to each element. Thus mod(2
      J,n) will (scalar) multiply the entire J array with 2, before reducing each element modulo n.

    MATLAB does include standard "for" and "while" loops, but using MATLAB's vectorized notation often produces code that is easier to read and faster to execute.

    top

    Criticism
    MATLAB is a proprietary product of The MathWorks, so users are subject to vendor lock-in.

    The language shows a mixed heritage with a sometimes erratic syntax. For example, MATLAB uses parentheses, e.g. y = f(x), for both indexing into an array and calling a function. Although this ambiguous syntax can facilitate a switch between a procedure and a lookup table, both of which correspond to mathematical functions, a very careful reading of the code is required to establish the original intent.

    Many functions have a different behavior with matrix and vector arguments. Since vectors are matrices, this can give unexpected results. For instance, function sum(A) where A is a matrix gives a row vector containing the sum of each column of A, and sum(v) where v is a column or row vector gives the sum of its elements; hence the programmer must be careful if the matrix argument of sum can degenerate into a single-row array. While sum and many similar functions accept an optional argument to specify a direction, others, like plot, do not and require additional checks. There are many other cases where MATLAB tries to do what it thinks the user means, not what the user says (e.g. how spaces are handled inside brackets as separators where it makes sense but not where it doesn't, or backslash escape sequences which are interpreted by some functions like fprintf but not directly by the language parser because it wouldn't be convenient for Windows directories). What might be considered as a convenience for commands typed interactively where the user can check that MATLAB does what the user wants becomes a nuisance for the development of reusable code.

    Though other datatypes are available, the default is a matrix of doubles. This array of numbers is devoid of important attributes required by real world data such as engineering units or sampling rates. Although time and date markers were added in R14SP3 with the time series object, the lack of sample rate information is a serious shortcoming for signal processing applications, where data is typically sampled at a constant interval. These attributes must be managed by the user with custom programming, which is error-prone and time-consuming.

    Array indexing is one-based, which is inconvenient for expressing many mathematical ideas, especially those related to digital signal processing. For instance, the DFT (or FFT) are defined with the DC component in bin
      1 instead of bin
        0 which is contrary to the standard definition of the DFT. In addition, this one-based indexing is hard wired into MATLAB, making it impossible for any user to define their own zero-based or negative indexed arrays to concisely model an idea needing non-positive indices.

    MATLAB doesn't support references, which makes it very difficult to implement data structures which contain indirections, such as open hash tables, linked lists, trees, and various other common computer science data structures. In addition, it makes the use of objects cumbersome, because every change in the object creates a new object instead of changing the current one ("this" or "self" is copy-on-write). The only way to change an object property is to "overwrite" the old object by the new object that was created after the property change, like this:

    obj = do_something(obj);

    Despite these shortcomings, MATLAB continues to be employed in many technical computing applications because of its ease of use and graphical capabilities.

    top

    See also
      Toolboxes and other add-ons:

    top

    Notes

     
    Search more:
     

       
    Source Privacy License Download Contact Us Atlas
    Scientus.org Dictionary (Yet Another Wiki) RC : 1.39
    This article is licensed under the GNU Free Documentation License [copyleft]. It uses material from the Wikipedia article "MATLAB". link