MATLAB (abreviatura del inglés "Matrix Laboratory" , en ruso pronunciado como Matlab ) es un paquete de programas aplicados para resolver problemas de cálculos técnicos. El paquete es utilizado por más de un millón de ingenieros y científicos, se ejecuta en la mayoría de los sistemas operativos modernos , incluidos Linux , macOS , Solaris (a partir de la versión R2010b, se suspendió el soporte para Solaris [ 8] [9] ) y Windows [10] .
MATLAB como lenguaje de programación fue desarrollado por Cleve Moler a fines de la década de 1970 cuando era decano del departamento de informática de la Universidad de Nuevo México . El propósito del desarrollo fue dar a los estudiantes de la facultad la oportunidad de utilizar las librerías de programas Linpack y EISPACK sin necesidad de aprender Fortran . El nuevo lenguaje pronto se extendió a otras universidades y fue recibido con gran interés por los científicos que trabajaban en el campo de las matemáticas aplicadas. Una versión de 1982 escrita en Fortran distribuida como código abierto todavía se puede encontrar en Internet hoy en día . El ingeniero John Little ( Eng. John N. (Jack) Little ) conoció el idioma durante la visita de Clive Moler a la Universidad de Stanford en 1983. Al darse cuenta de que el nuevo lenguaje tenía un gran potencial comercial, se asoció con Clive Moler y Steve Bangert [ 11 ] . Juntos reescribieron MATLAB en C [12] y fundaron The MathWorks en 1984 para un mayor desarrollo. Estas bibliotecas C reescritas se conocieron durante mucho tiempo con el nombre de JACKPAC. MATLAB se pensó originalmente para el diseño de sistemas de control (la especialidad principal de John Little), pero rápidamente ganó popularidad en muchos otros campos científicos y de ingeniería. También ha sido ampliamente utilizado en educación, en particular para la enseñanza de álgebra lineal y métodos numéricos .
El lenguaje MATLAB es un lenguaje de programación interpretado de alto nivel que incluye estructuras de datos basadas en matrices , una amplia gama de funciones, un entorno de desarrollo integrado, funciones orientadas a objetos e interfaces para programas escritos en otros lenguajes de programación.
Los programas escritos en MATLAB son de dos tipos: funciones y scripts. Las funciones tienen argumentos de entrada y salida, así como su propio espacio de trabajo para almacenar resultados intermedios de cálculos y variables. Los scripts comparten un espacio de trabajo común. Tanto los scripts como las funciones se guardan como archivos de texto y se compilan dinámicamente en código de máquina . También existe la posibilidad de guardar los llamados programas analizados previamente : funciones y scripts procesados en una forma conveniente para la ejecución de la máquina. En general, estos programas se ejecutan más rápido que los habituales, especialmente si la función contiene comandos de trazado.
La característica principal del lenguaje MATLAB son sus amplias posibilidades para trabajar con matrices, que los creadores del lenguaje expresaron en el lema "pensar vectorizado" ( ing. Think vectorized ).
Un código de ejemplo que forma parte de la función magic.m que genera un cuadrado mágico M para valores impares de tamaño de lado n :
[ J , I ] = rejilla de malla ( 1 : n ); A = mod ( yo + J - ( n + 3 ) / 2 , n ); B = mod ( yo + 2 * J - 2 , n ); METRO = norte * UN + segundo + 1 ;Un ejemplo de código que carga una matriz A unidimensional con los valores de la matriz B en orden inverso (solo si el vector A está definido y el número de sus elementos es el mismo que el número de elementos del vector B ) :
A ( 1 : final ) = B ( final : - 1 : 1 );El programa MATLAB puede crear gráficos 3D utilizando las funciones surf, plot3 o mesh.
[ X , Y ] = rejilla de malla ( - 8 : .5 : 8 );
R = raíz cuadrada ( X .^ 2 + Y .^ 2 );
Z = sen ( R ) ./ R ;
Z ( R == 0 ) = 1 ;
malla ( X , Y , Z );
Este código creará un diagrama de estructura alámbrica 3D de la función sinc . |
La división de la ventana gráfica se lleva a cabo mediante el comando Subplot (número de filas, número de columnas, elemento actual) (imaginemos que estamos creando una matriz, por así decirlo). Es posible construir una regresión polinomial para datos tabulares a través del comando Herramientas > Ajuste básico de la ventana de salida gráfica. [13]
Es posible calcular el área delimitada por dos líneas usando el comando quad (área de una integral definida, vea el código a continuación ). Los argumentos para quad son los puntos de intersección de las líneas (que se encuentran con el comando fzero (el primer argumento es la diferencia entre funciones, el segundo argumento es un segmento o un punto donde la diferencia entre funciones es igual a cero).
borrar todo clc cerrar todo f =@( x ) 0.5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1 g =@( x ) raíz cuadrada ( x .^ 2 + 5.5 ) X = -2 : 0,01 : 14 ; _ trama secundaria ( 2 , 1 , 1 ) trama ( X , f ( X ), 'm' , 'LineWidth' , 2 ) espera _ trazar ( X , g ( X ), 'g' , 'LineWidth' , 2 ) cuadrícula etiqueta x ( 'x' ) yetiqueta ( 'f, g' ) Leyenda ( 'f' , 'g' , 'Ubicación' , 'mejor' ) F =@( x ) gramo ( x ) - f ( x ) trama secundaria ( 2 , 1 , 2 ) trazar ( X , F ( X ), 'b' , 'LineWidth' , 2 ) espera _ trama ([ - 2 14 ],[ 0 0 ], 'k' , 'LineWidth' , 2 ) cuadrícula etiqueta x ( 'x' ) yetiqueta ( 'f, g' ) x1 = fcero ( F , 0 ) x2 = fcero ( F ,[ 10 , 14 ]) S = cuádruple ( F , x1 , x2 )En el caso de fórmulas largas, cuando la expresión no cabe en una línea del programa, la función de transferencia en la ventana de comandos se proporciona mediante tres puntos "...". Los puntos se vuelven azules, el cursor en la siguiente línea parpadea, pero no hay signo de doble desigualdad >> (signo de inicio de línea de comando). Por ejemplo,
t = sqrt ( abs ( sen ( 1.3 * pi ) / cos ( 4.6 ) * tan ( 0.7 * pi ) / acot ( 0.3 ))) - ... ( exp ( - 0.2 ) * log ( 3.8 ) ^ 1.2 ) ^ ( 1 / 3 )es equivalente a
t = sqrt ( abs ( sin ( 1.3 * pi ) / cos ( 4.6 ) * tan ( 0.7 * pi ) / acot ( 0.3 ))) - ( exp ( - 0.2 ) * log ( 3.8 ) ^ 1.2 ) ^ ( 1 / 3 )La función plot() le permite cambiar el color y el tipo de la línea mostrada, incluida la escala logarítmica [14] . Para ello, se utilizan parámetros adicionales, que se escriben de la siguiente manera: plot(<x>, <y>, <'color de línea, tipo de línea, marcador de punto'>); [15] Por ejemplo,
plot ( X , Y , 'r--' , 'LineWidth' , 2 , 'Marker' , 'o' , 'MarkerFaceColor' , 'k' )trazará rojo (r), con guiones (--), con un ancho de línea de 2 ('LineWidth',2), con un marcador de círculo ('Marker','o') relleno de negro ('MarkerFaceColor', 'k').
cuadrícula etiqueta x ( 'x' ) yetiqueta ( 'y' ) título ( 'Lomanaya lninya' )grid crea la cuadrícula, xlabel('x') e ylabel('y') etiquetan los ejes, title('Lomanaya lninya') da el título a la trama.
Entre corchetes, enumeramos los elementos del vector separados por un espacio (puedes separarlo con una coma) y los elementos se distribuirán en una línea . Por ejemplo,
X = [ 2 3 4 3 5 1 ]Si necesita diseñar los elementos en una columna, entonces los elementos deben estar separados por un punto y coma ";" (en principio, siempre se puede aplicar el procedimiento de transposición).
Muy a menudo es necesario especificar un vector cuyos elementos difieren en la misma cantidad de paso . Esto es especialmente cierto cuando construimos gráficos de funciones (dividimos el área de trazado de esta función con puntos con algún paso ). Para esta tarea, se utiliza el carácter de índice de dos puntos ":". Por ejemplo, 0 a 10 para el paso 2:
Y = [ 0 : 2 : 10 ](si el paso es 1, entonces no lo escribimos, MATLAB establecerá la unidad por defecto). Un vector puede ser un argumento de función, por ejemplo
F = sen ( Y )Hay cosas que no están descritas por una operación específica en matemáticas. Por ejemplo , trabaje elemento por elemento con elementos de matriz . En matemáticas podemos trabajar elemento a elemento con los elementos de un arreglo, pero no existe una notación específica para ello. Matlbe lo tiene. Si necesita aplicar una acción a cada elemento de la matriz, debe colocar un punto ".". Por ejemplo, hay un vector F
F = [ 0 3 4 3 5 1 ]Podemos dividirlo fácilmente en dos:
f / 2A continuación, obtenemos (cada elemento del vector se dividirá por 2):
0 1,5000 2,0000 1,5000 2,5000 0,5000Sin embargo, si escribes
2 / FMatlab arrojará un error:
Error al usar / Las dimensiones de la matriz deben coincidir.Tan pronto como surja el pensamiento en la cabeza de que la acción debe aplicarse a cada elemento del vector en Matlabe, esto debe indicarse poniendo un punto antes de la acción:
2./F _ _. A continuación obtenemos:
Inf 0,6667 0,5000 0,6667 0,4000 2,0000.
Inf significa que se ha realizado una división por cero.
Si hay dos gráficos de función y necesita determinar su intersección, calcule el área que está limitada como resultado de la intersección. En Matlabe, se puede crear una función definida por el usuario agregando el signo "@" (escribimos entre paréntesis de qué depende esta función):
f =@( x ) 0.5 * x ^ 2 + sin ( 5 * x ) - 5 * x + 1que corresponde a la función . El punto está solo delante del grado ( .^ ), esto indica que la función será un vector. Los puntos no se colocan antes de la suma, la diferencia, ya que los vectores se pueden sumar y restar de acuerdo con las reglas habituales.
MATLAB generará:
f = function_handle con valor : @( x ) 0.5 * x .^ 2 + sin ( 5 * x ) - 5 * x + 1function_handle dice que la función está hecha a mano, usuario .
Un ejemplo de código para mostrar el rango de trazado de -2 a 12 con un paso de 0.01 ( puede ingresar tanto 0.01 como .01 ):
X = - 2 : 0,01 : 12 ;Un punto y coma ";" al final del comando significa que no se mostrará el resultado. Para mostrar funciones juntas en una ventana, puede usar el comando Hold on :
parcela ( X , f ( X )) espera _ parcela ( X , g ( X )) cuadrícula Leyenda ( 'f' , 'g' , 'Ubicación' , 'mejor' )legend('f','g','Location','best') significa que las etiquetas de las funciones en el gráfico conjunto se ubicarán en el lugar más libre.
MATLAB proporciona al usuario una gran cantidad (varios cientos) de funciones para el análisis de datos, cubriendo casi todas las áreas de las matemáticas , en particular:
MATLAB proporciona un medio conveniente para desarrollar algoritmos, incluidos los de alto nivel que utilizan conceptos de programación orientada a objetos . Tiene todas las herramientas necesarias de un entorno de desarrollo integrado , incluido un depurador y un generador de perfiles . Las funciones para trabajar con tipos de datos enteros facilitan la creación de algoritmos para microcontroladores y otras aplicaciones cuando sea necesario.
El paquete MATLAB tiene una gran cantidad de funciones para graficar, incluido el análisis de datos visuales tridimensionales y la creación de videos animados .
El entorno de desarrollo incorporado le permite crear interfaces gráficas de usuario con varios controles, como botones, campos de entrada y otros.
Los programas de MATLAB, tanto los basados en consola como con una interfaz gráfica de usuario, se pueden compilar mediante el módulo MATLAB Compiler en aplicaciones ejecutables independientes de MATLAB o bibliotecas dinámicas que, sin embargo, requieren la instalación del entorno de tiempo de ejecución de MATLAB redistribuible libremente para ejecutarse en otros computadoras [17] (anteriormente llamado MATLAB Compiler Runtime MCR) [18] .
El paquete MATLAB incluye varias interfaces para acceder a rutinas externas escritas en otros lenguajes de programación, datos, clientes y servidores que se comunican a través de las tecnologías Component Object Model o Dynamic Data Exchange , y periféricos que se comunican directamente con MATLAB. Muchas de estas funciones se conocen como la API de MATLAB.
COMEl paquete MATLAB brinda acceso a funciones que le permiten crear, manipular y eliminar objetos COM (tanto clientes como servidores). La tecnología ActiveX también es compatible . Todos los objetos COM pertenecen a una clase COM especial de MATLAB. Todos los programas que tienen las funciones de un controlador de automatización pueden acceder a MATLAB como un servidor de automatización .
.NETEl paquete MATLAB en Microsoft Windows brinda acceso a la plataforma de programación .NET Framework. Es posible cargar ensamblados .NET (Assemblies) y trabajar con objetos de clases .NET desde el entorno MATLAB. MATLAB 7.11 (R2010b) admite las versiones 2.0, 3.0, 3.5 y 4.0 de .NET Framework.
DDEl paquete MATLAB contiene funciones que le permiten acceder a otras aplicaciones del entorno Windows , así como a estas aplicaciones acceder a datos MATLAB, utilizando la tecnología Dynamic Data Exchange (DDE). Cada aplicación que puede ser un servidor DDE tiene su propio nombre de identificación único. Para MATLAB, este nombre es Matlab .
Servicios webEn MATLAB, es posible utilizar servicios web. La función especial crea una clase que contiene los métodos de la API del servicio web , lo que le permite acceder al servicio web a través de llamadas a métodos de clase.
MATLAB interactúa con el cliente del servicio web al recibir datos de este, procesarlos y enviar el resultado. Se admiten las siguientes tecnologías: Protocolo simple de acceso a objetos (SOAP) y Lenguaje de descripción de servicios web (WSDL).
Puerto serieLa interfaz de puerto serie de MATLAB proporciona acceso directo a periféricos como módems , impresoras y equipos científicos que se conectan a la computadora a través de un puerto serie (COM). La interfaz funciona creando un objeto de una clase especial para el puerto serie. Los métodos disponibles de esta clase le permiten leer y escribir datos en el puerto serie, usar eventos y controladores de eventos y escribir información en el disco de la computadora en tiempo real . Esto puede ser necesario al realizar experimentos, simular sistemas en tiempo real y para otras aplicaciones.
Archivos MEXEl paquete MATLAB incluye una interfaz para interactuar con aplicaciones externas escritas en C y Fortran . Esta interacción se lleva a cabo a través de archivos MEX. Es posible llamar a subrutinas escritas en C o Fortran desde MATLAB como si fueran funciones integradas del paquete. Los archivos MEX son bibliotecas de enlaces dinámicos que el intérprete integrado en MATLAB puede cargar y ejecutar. Los procedimientos MEX también tienen la capacidad de llamar a los comandos integrados de MATLAB.
DLLLa interfaz DLL compartida de MATLAB le permite llamar a funciones que se encuentran en bibliotecas de vínculos dinámicos regulares directamente desde MATLAB. Estas funciones deben tener una interfaz C.
Además, MATLAB tiene la capacidad de acceder a sus funciones integradas a través de la interfaz C, lo que le permite utilizar las funciones del paquete en aplicaciones externas escritas en C. Esta tecnología se denomina C Engine en MATLAB .
Para MATLAB, es posible crear cajas de herramientas especiales ( caja de herramientas en inglés ) que amplían su funcionalidad. Las cajas de herramientas son colecciones de funciones y objetos escritos en el lenguaje MATLAB para resolver una determinada clase de problemas. Mathworks proporciona kits de herramientas que se utilizan en muchas áreas, incluidas las siguientes:
Además de lo anterior, hay miles de otros juegos de herramientas de MATLAB escritos por otras empresas y entusiastas.
Existe un gran número de paquetes de software para la resolución de problemas de análisis numérico. Muchos de estos paquetes son software libre .
![]() | ||||
---|---|---|---|---|
|