Cechy środowiska MATLAB® & Simulink®
Bardzo wygodny, z punktu widzenia użytkownika, język wysokiego poziomu stosowany w MATLAB-ie, a także udostępnienie w nim niezawodnych implementacji algorytmów matematyki stosowanej, bogatych funkcji graficznych i licznych modułów rozszerzeń zorientowanych na określone dziedziny zastosowań (MATLAB Application Toolboxes , Simulink, Simulink Blocksets , MATLAB Coder, Simulink Coder, Stateflow i inne) sprawiły, że obecnie MATLAB w znacznym stopniu wyparł z obliczeń naukowo-technicznych języki uniwersalne (Fortran, C, C++) ograniczając ich zasadniczą rolę do funkcji oprogramowania narzędziowego.
Rozszerzalność, będąca podstawowym założeniem architektury MATLAB-a, umożliwiła niezwykle szybki rozwój tego środowiska. Stało się to zarówno dzięki działaniom jego producenta - The MathWorks, Inc., jak i ok. 200 firm współpracujących z nim w ramach MATLAB Connections Programme, w tym np. dSPACE GmbH, Agilent, Motorola, Texas Instruments, Xilinx, ABB Industrial Systems. Partnerzy The MathWorks dostarczają produkty oparte na MATLAB-ie lub interfejsy łączące MATLAB-a z ich własnymi produktami.
Architektura:
- rozszerzalność (możliwość budowania własnych funkcji użytkownika: m-pliki, skryptowe i funkcyjne, dołączanie skompilowanego kodu w C lub w Fortranie: biblioteki DLL - MEX-pliki)
- przenośność (jednakowy kod MATLAB-a - m-kod dla różnych platform PC: Windows, GNU/Linux i MacOSX)
- wymiana danych z innymi aplikacjami poprzez pliki i różne protokoły komunikacyjne, ODBC/JDBC (bazy danych) - Database Toolbox
- współpraca z innymi aplikacjami w środowisku wielozadaniowym (możliwość uruchamiania innych aplikacji z poziomu MATLABA - polecenia poprzedzane znakiem !, udostępnianie usług poprzez MATLAB Engine - zlecanie obliczeń i generowanie bibliotek - .NET, Java i makra Excel)
Język programowania wysokiego poziomu:
- indeksacja niejawna pozwalająca na efektywną wektoryzację obliczeń i zwarty zapis (konstrukcje z użyciem dwukropka, nawiasów kwadratowych, połączenie kropki i operatorów arytmetycznych, indeksacja za pomocą warunków logicznych, wektoryzacja funkcji wbudowanych)
- domyślne określanie typów i wymiarowanie tablic umożliwiające szybkie prototypowanie aplikacji w środowisku interpretera MATLAB-a
- automatyczna generacja kodu C (MATLAB Compiler i biblioteki MATLAB C/C++ Math Libraries) wykorzystywana do budowania niezależnych aplikacji na bazie kodu MATLAB-owskiego
- różnorodne typy zmiennych: numeryczne - stałoprzecinkowe i zmiennoprzecinkowe, tablice wielowymiarowe, zmienne tekstowe, zmienne strukturowe - dostęp do pola przez nazwę (notacja kropkowa), tablice wskaźnikowe - cell arrays (notacja klamrowa)
Obiektowość:
- grafika uchwytów (hierarchiczna struktura Handle Graphics - pobieranie (get) i nadawanie (set) wartości atrybutów określanych zmiennymi tekstowymi)
- obiekty standardowe (np. LTI - liniowy, stacjonarny system dynamiczny, obiekt sym - wyrażenie symboliczne)
- narzędzia programowania obiektowego (hermetyzacja, dziedziczenie, przeciążanie)