MATLAB - Guía rápida

MATLAB (laboratorio de matrices) es un lenguaje de programación de alto nivel de cuarta generación y un entorno interactivo para cálculo numérico, visualización y programación.

MATLAB es desarrollado por MathWorks.

Permite manipulaciones matriciales; trazado de funciones y datos; implementación de algoritmos; creación de interfaces de usuario; interactuar con programas escritos en otros lenguajes, incluidos C, C ++, Java y FORTRAN; analizar datos; desarrollar algoritmos; y crear modelos y aplicaciones.

Tiene numerosos comandos integrados y funciones matemáticas que lo ayudan en los cálculos matemáticos, la generación de gráficos y la ejecución de métodos numéricos.

El poder de las matemáticas computacionales de MATLAB

MATLAB se utiliza en todas las facetas de las matemáticas computacionales. A continuación se muestran algunos cálculos matemáticos de uso común donde se usa con más frecuencia:

  • Tratar con matrices y matrices
  • Trazado y gráficos 2-D y 3-D
  • Álgebra lineal
  • Ecuaciones algebraicas
  • Funciones no lineales
  • Statistics
  • Análisis de los datos
  • Cálculo y ecuaciones diferenciales
  • Cálculos numéricos
  • Integration
  • Transforms
  • Ajuste de curvas
  • Varias otras funciones especiales

Características de MATLAB

Las siguientes son las características básicas de MATLAB:

  • Es un lenguaje de alto nivel para cálculo numérico, visualización y desarrollo de aplicaciones.

  • También proporciona un entorno interactivo para la exploración, el diseño y la resolución de problemas iterativos.

  • Proporciona una amplia biblioteca de funciones matemáticas para álgebra lineal, estadística, análisis de Fourier, filtrado, optimización, integración numérica y resolución de ecuaciones diferenciales ordinarias.

  • Proporciona gráficos integrados para visualizar datos y herramientas para crear gráficos personalizados.

  • La interfaz de programación de MATLAB proporciona herramientas de desarrollo para mejorar el mantenimiento de la calidad del código y maximizar el rendimiento.

  • Proporciona herramientas para crear aplicaciones con interfaces gráficas personalizadas.

  • Proporciona funciones para integrar algoritmos basados ​​en MATLAB con aplicaciones y lenguajes externos como C, Java, .NET y Microsoft Excel.

Usos de MATLAB

MATLAB se utiliza ampliamente como herramienta computacional en ciencia e ingeniería que abarca los campos de la física, la química, las matemáticas y todas las corrientes de ingeniería. Se utiliza en una variedad de aplicaciones que incluyen:

  • Procesamiento de señales y comunicaciones
  • Procesamiento de imagen y video
  • Sistemas de control
  • Prueba y Medida
  • Finanzas Computacionales
  • Biología Computacional

Configuración del entorno local

La configuración del entorno MATLAB es cuestión de unos pocos clics. El instalador se puede descargar desde aquí .

MathWorks proporciona el producto con licencia, una versión de prueba y también una versión para estudiantes. Debe iniciar sesión en el sitio y esperar un poco su aprobación.

Después de descargar el instalador, el software se puede instalar con unos pocos clics.

Comprensión del entorno MATLAB

El IDE de desarrollo de MATLAB se puede iniciar desde el icono creado en el escritorio. La ventana de trabajo principal en MATLAB se llama escritorio. Cuando se inicia MATLAB, el escritorio aparece en su diseño predeterminado:

El escritorio tiene los siguientes paneles:

  • Current Folder - Este panel le permite acceder a las carpetas y archivos del proyecto.

  • Command Window- Esta es el área principal donde se pueden ingresar comandos en la línea de comandos. Se indica mediante el símbolo del sistema (>>).

  • Workspace - El espacio de trabajo muestra todas las variables creadas y / o importadas desde archivos.

  • Command History - Este panel muestra o devuelve comandos que se ingresan en la línea de comando.

Configurar GNU Octave

Si está dispuesto a utilizar Octave en su máquina (Linux, BSD, OS X o Windows), descargue la última versión de Descargar GNU Octave . Puede consultar las instrucciones de instalación proporcionadas para su máquina.

El entorno MATLAB se comporta como una calculadora supercompleja. Puede ingresar comandos en la línea de comandos >>.

MATLAB es un entorno interpretado. En otras palabras, da un comando y MATLAB lo ejecuta de inmediato.

Práctica práctica

Escriba una expresión válida, por ejemplo,

5 + 5

Y presione ENTER

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

ans = 10

Tomemos algunos ejemplos más:

3 ^ 2	       % 3 raised to the power of 2

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

ans = 9

Otro ejemplo,

sin(pi /2)	  % sine of angle 90o

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

ans = 1

Otro ejemplo,

7/0		      % Divide by zero

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

ans = Inf
warning: division by zero

Otro ejemplo,

732 * 20.3

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

ans =  1.4860e+04

MATLAB proporciona algunas expresiones especiales para algunos símbolos matemáticos, como pi para π, Inf para ∞, i (y j) para √-1, etc. Nan significa 'no es un número'.

Uso de punto y coma (;) en MATLAB

El punto y coma (;) indica el final de la declaración. Sin embargo, si desea suprimir y ocultar la salida de MATLAB para una expresión, agregue un punto y coma después de la expresión.

Por ejemplo,

x = 3;
y = x + 5

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, MATLAB lo ejecuta inmediatamente y el resultado devuelto es:

y =  8

Agregar comentarios

El símbolo de porcentaje (%) se utiliza para indicar una línea de comentario. Por ejemplo,

x = 9	     % assign the value 9 to x

También puede escribir un bloque de comentarios utilizando los operadores de comentarios de bloque% {y%}.

El editor MATLAB incluye herramientas y elementos de menú contextual para ayudarlo a agregar, eliminar o cambiar el formato de los comentarios.

Operadores y caracteres especiales de uso común

MATLAB admite los siguientes operadores y caracteres especiales de uso común:

Operador Propósito
+ Más; operador de adición.
- Menos; operador de resta.
* Operador de multiplicación escalar y matricial.
.* Operador de multiplicación de matrices.
^ Operador de exponenciación escalar y matricial.
.^ Operador de exponenciación de matriz.
\ Operador de división a la izquierda.
/ Operador de división a la derecha.
.\ Operador de división a la izquierda de matriz.
./ Operador de división por la derecha de matriz.
: Colon; genera elementos espaciados regularmente y representa una fila o columna completa.
( ) Paréntesis; encierra argumentos de función e índices de matriz; anula la precedencia.
[ ] Soportes; elementos de matriz de recintos.
. Punto decimal.
Elipsis; operador de continuación de línea
, Coma; separa declaraciones y elementos en una fila
; Punto y coma; separa columnas y suprime la visualización.
% Signo de porcentaje; designa un comentario y especifica el formato.
_ Cotizar signo y transponer operador.
._ Operador de transposición no conjugado.
= Operador de asignación.

Variables y constantes especiales

MATLAB admite las siguientes variables y constantes especiales:

Nombre Sentido
ans Respuesta más reciente.
eps Exactitud de precisión de punto flotante.
i,j La unidad imaginaria √-1.
Inf Infinito.
NaN Resultado numérico indefinido (no un número).
pi El número π

Nombrar variables

Los nombres de las variables consisten en una letra seguida de cualquier número de letras, dígitos o guiones bajos.

MATLAB es case-sensitive.

Los nombres de las variables pueden tener cualquier longitud, sin embargo, MATLAB usa solo los primeros N caracteres, donde N viene dado por la función namelengthmax.

Guardar su trabajo

los save El comando se usa para guardar todas las variables en el espacio de trabajo, como un archivo con extensión .mat, en el directorio actual.

Por ejemplo,

save myfile

Puede volver a cargar el archivo en cualquier momento utilizando el load mando.

load myfile

En el entorno MATLAB, cada variable es una matriz o matriz.

Puede asignar variables de forma sencilla. Por ejemplo,

x = 3	       % defining x and initializing it with a value

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

x = 3

Crea una matriz de 1 por 1 llamada x y almacena el valor 3 en su elemento. Veamos otro ejemplo,

x = sqrt(16) 	% defining x and initializing it with an expression

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

x = 4

Tenga en cuenta que -

  • Una vez que se ingresa una variable en el sistema, puede consultarla más tarde.

  • Las variables deben tener valores antes de usarse.

  • Cuando una expresión devuelve un resultado que no está asignado a ninguna variable, el sistema lo asigna a una variable llamada ans, que se puede usar más adelante.

Por ejemplo,

sqrt(78)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =  8.8318

Puedes usar esta variable ans -

sqrt(78);
9876/ans

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =  1118.2

Veamos otro ejemplo:

x = 7 * 8;
y = x * 7.89

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

y =  441.84

Varias asignaciones

Puede tener varias asignaciones en la misma línea. Por ejemplo,

a = 2; b = 7; c = a * b

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

c = 14

¡He olvidado las Variables!

los who El comando muestra todos los nombres de variables que ha utilizado.

who

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

Your variables are:
a    ans  b    c

los whos el comando muestra poco más sobre las variables -

  • Variables actualmente en memoria
  • Tipo de cada variable
  • Memoria asignada a cada variable
  • Si son variables complejas o no
whos

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

Attr Name        Size        Bytes      Class
==== ====        ====        ====       ===== 
   a             1x1           8        double
   ans           1x70         757        cell
   b             1x1           8        double
   c             1x1           8        double

Total is 73 elements using 781 bytes

los clear comando borra todas las variables (o las especificadas) de la memoria.

clear x     % it will delete x, won't display anything
clear       % it will delete all variables in the workspace
            %  peacefully and unobtrusively

Asignaciones largas

Las asignaciones largas se pueden extender a otra línea usando puntos suspensivos (...). Por ejemplo,

initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity + acceleration * time

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

final_velocity = 196

El comando de formato

De forma predeterminada, MATLAB muestra números con cuatro valores de posición decimales. Esto se conoce comoshort format.

Sin embargo, si desea más precisión, debe utilizar el format mando.

los format long El comando muestra 16 dígitos después del decimal.

Por ejemplo

format long
x = 7 + 10/3 + 5 ^ 1.2

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

x = 17.2319816406394

Otro ejemplo,

format short
x = 7 + 10/3 + 5 ^ 1.2

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

x = 17.232

los format bankEl comando redondea los números a dos decimales. Por ejemplo,

format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

weekly_wage = 1064.70

MATLAB muestra números grandes usando notación exponencial.

los format short e El comando permite mostrar en forma exponencial con cuatro lugares decimales más el exponente.

Por ejemplo,

format short e
4.678 * 4.9

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 2.2922e+01

los format long eEl comando permite mostrar en forma exponencial con cuatro lugares decimales más el exponente. Por ejemplo,

format long e
x = pi

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

x = 3.141592653589793e+00

los format ratEl comando da la expresión racional más cercana resultante de un cálculo. Por ejemplo,

format rat
4.678 * 4.9

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 34177/1491

Crear vectores

Un vector es una matriz unidimensional de números. MATLAB permite crear dos tipos de vectores:

  • Vectores de fila
  • Vectores de columna

Row vectors se crean encerrando el conjunto de elementos entre corchetes, utilizando espacio o coma para delimitar los elementos.

Por ejemplo,

r = [7 8 9 10 11]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

r =

   7    8    9   10   11

Otro ejemplo,

r = [7 8 9 10 11];
t = [2, 3, 4, 5, 6];
res = r + t

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

res =

         9         11         13         15         17

Column vectors se crean encerrando el conjunto de elementos entre corchetes, utilizando punto y coma (;) para delimitar los elementos.

c = [7;  8;  9;  10; 11]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

c =
       7       
       8       
       9       
      10       
      11

Creando Matrices

Una matriz es una matriz bidimensional de números.

En MATLAB, se crea una matriz ingresando cada fila como una secuencia de elementos separados por espacios o comas, y el final de una fila está demarcado por un punto y coma. Por ejemplo, creemos una matriz de 3 por 3 como:

m = [1 2 3; 4 5 6; 7 8 9]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

m =
       1              2              3       
       4              5              6       
       7              8              9

MATLAB es un programa interactivo para el cálculo numérico y la visualización de datos. Puede ingresar un comando escribiéndolo en el indicador de MATLAB '>>' en elCommand Window.

En esta sección, proporcionaremos listas de comandos generales de MATLAB de uso común.

Comandos para administrar una sesión

MATLAB proporciona varios comandos para administrar una sesión. La siguiente tabla proporciona todos estos comandos:

Mando Propósito
clc Borra la ventana de comandos.
claro Elimina variables de la memoria.
existe Verifica la existencia de archivo o variable.
global Declara que las variables son globales.
ayuda Busca un tema de ayuda.
buscar Busca entradas de ayuda para una palabra clave.
dejar Detiene MATLAB.
OMS Enumera las variables actuales.
quien Enumera las variables actuales (visualización larga).

Comandos para trabajar con el sistema

MATLAB proporciona varios comandos útiles para trabajar con el sistema, como guardar el trabajo actual en el espacio de trabajo como un archivo y cargar el archivo más tarde.

También proporciona varios comandos para otras actividades relacionadas con el sistema, como mostrar la fecha, listar archivos en el directorio, mostrar el directorio actual, etc.

La siguiente tabla muestra algunos comandos relacionados con el sistema de uso común:

Mando Propósito
discos compactos Cambia el directorio actual.
fecha Muestra la fecha actual.
Eliminar Elimina un archivo.
diario Activa / desactiva la grabación de archivos de diario.
dir Muestra todos los archivos del directorio actual.
carga Carga variables de espacio de trabajo desde un archivo.
camino Muestra la ruta de búsqueda.
pwd Muestra el directorio actual.
salvar Guarda las variables del espacio de trabajo en un archivo.
tipo Muestra el contenido de un archivo.
qué Muestra todos los archivos MATLAB en el directorio actual.
wklread Lee el archivo de hoja de cálculo .wk1.

Comandos de entrada y salida

MATLAB proporciona los siguientes comandos relacionados con la entrada y la salida:

Mando Propósito
disp Muestra el contenido de una matriz o cadena.
fscanf Leer datos formateados de un archivo.
formato Controla el formato de visualización de la pantalla.
fprintf Realiza escrituras formateadas en pantalla o archivo.
entrada Muestra mensajes y espera una entrada.
; Suprime la serigrafía.

los fscanf y fprintfLos comandos se comportan como las funciones C scanf y printf. Admiten los siguientes códigos de formato:

Código de formato Propósito
%s Formatee como una cadena.
%d Formatee como un número entero.
%f Formatee como valor de coma flotante.
%e Formatee como valor de coma flotante en notación científica.
%g Formatee en la forma más compacta:% fo% e.
\n Inserte una nueva línea en la cadena de salida.
\t Inserte una pestaña en la cadena de salida.

La función de formato tiene las siguientes formas que se utilizan para la visualización numérica:

Función de formato Mostrar hasta
formato corto Cuatro dígitos decimales (predeterminado).
formato largo 16 dígitos decimales.
formato corto e Cinco dígitos más exponente.
formato largo e 16 dígitos más exponentes.
banco de formato Dos dígitos decimales.
formato + Positivo, negativo o cero.
formato de rata Aproximación racional.
formato compacto Suprime algunos avances de línea.
formato suelto Se restablece al modo de visualización menos compacto.

Comandos de vector, matriz y arreglo

La siguiente tabla muestra varios comandos utilizados para trabajar con matrices, matrices y vectores:

Mando Propósito
gato Concatena matrices.
encontrar Encuentra índices de elementos distintos de cero.
longitud Calcula el número de elementos.
linspace Crea un vector espaciado regularmente.
espacio de registro Crea un vector espaciado logarítmicamente.
max Devuelve el elemento más grande.
min Devuelve el elemento más pequeño.
pinchar Producto de cada columna.
remodelar Cambia de tamaño.
Talla Calcula el tamaño de la matriz.
ordenar Ordena cada columna.
suma Suma cada columna.
ojo Crea una matriz de identidad.
unos Crea una matriz de unos.
ceros Crea una matriz de ceros.
cruzar Calcula productos cruzados de matriz.
punto Calcula productos escalares matriciales.
det Calcula el determinante de una matriz.
inv Calcula la inversa de una matriz.
pinv Calcula la pseudoinversa de una matriz.
rango Calcula el rango de una matriz.
rref Calcula la forma escalonada reducida de las filas.
celda Crea una matriz de celdas.
celldisp Muestra la matriz de celdas.
trama celular Muestra una representación gráfica de la matriz de celdas.
num2cell Convierte una matriz numérica en una matriz de celdas.
acuerdo Coincide con listas de entrada y salida.
iscell Identifica la matriz de celdas.

Comandos de trazado

MATLAB proporciona numerosos comandos para trazar gráficos. La siguiente tabla muestra algunos de los comandos más utilizados para trazar:

Mando Propósito
eje Establece límites de eje.
fplot Trazado inteligente de funciones.
cuadrícula Muestra líneas de cuadrícula.
trama Genera un gráfico xy.
impresión Imprime el trazado o guarda el trazado en un archivo.
título Coloca el texto en la parte superior del gráfico.
xlabel Agrega una etiqueta de texto al eje x.
etiqueta Agrega una etiqueta de texto al eje y.
ejes Crea objetos de ejes.
cerca Cierra la trama actual.
cierra todo Cierra todas las parcelas.
figura Abre una nueva ventana de figura.
gtext Permite la colocación de etiquetas con el mouse.
sostener Congela la trama actual.
leyenda Colocación de la leyenda con el mouse.
actualizar Vuelve a dibujar la ventana de la figura actual.
conjunto Especifica propiedades de objetos como ejes.
subtrama Crea gráficos en subventanas.
texto Coloca la cuerda en la figura.
bar Crea un gráfico de barras.
registro Crea una gráfica logarítmica.
polar Crea un diagrama polar.
semilogx Crea un gráfico semilogarítmico. (abscisa logarítmica).
semilogía Crea un gráfico semilogarítmico. (ordenada logarítmica).
escalera Crea trama de escaleras.
vástago Crea un diagrama de tallo.

Hasta ahora, hemos utilizado el entorno MATLAB como calculadora. Sin embargo, MATLAB también es un poderoso lenguaje de programación, así como un entorno computacional interactivo.

En capítulos anteriores, aprendió cómo ingresar comandos desde el símbolo del sistema de MATLAB. MATLAB también le permite escribir una serie de comandos en un archivo y ejecutar el archivo como una unidad completa, como escribir una función y llamarla.

Los archivos M

MATLAB permite escribir dos tipos de archivos de programa:

  • Scripts - los archivos de script son archivos de programa con .m extension. En estos archivos, escribe una serie de comandos que desea ejecutar juntos. Los scripts no aceptan entradas y no devuelven ninguna salida. Operan con datos en el espacio de trabajo.

  • Functions - los archivos de funciones también son archivos de programa con .m extension. Las funciones pueden aceptar entradas y devolver salidas. Las variables internas son locales a la función.

Puede utilizar el editor MATLAB o cualquier otro editor de texto para crear su .marchivos. En esta sección, discutiremos los archivos de script. Un archivo de secuencia de comandos contiene varias líneas secuenciales de comandos y llamadas a funciones de MATLAB. Puede ejecutar un script escribiendo su nombre en la línea de comando.

Crear y ejecutar un archivo de script

Para crear archivos de secuencias de comandos, debe utilizar un editor de texto. Puede abrir el editor MATLAB de dos formas:

  • Usando el símbolo del sistema
  • Usando el IDE

Si está utilizando el símbolo del sistema, escriba editen el símbolo del sistema. Esto abrirá el editor. Puede escribir directamenteedit y luego el nombre del archivo (con extensión .m)

edit 
Or
edit <filename>

El comando anterior creará el archivo en el directorio MATLAB predeterminado. Si desea almacenar todos los archivos de programa en una carpeta específica, deberá proporcionar la ruta completa.

Creemos una carpeta llamada progs. Escriba los siguientes comandos en el símbolo del sistema (>>) -

mkdir progs    % create directory progs under default directory
chdir progs    % changing the current directory to progs
edit  prog1.m  % creating an m file named prog1.m

Si está creando el archivo por primera vez, MATLAB le pedirá que lo confirme. Haga clic en Sí.

Alternativamente, si está utilizando el IDE, elija NUEVO -> Script. Esto también abre el editor y crea un archivo llamado Sin título. Puede nombrar y guardar el archivo después de escribir el código.

Escriba el siguiente código en el editor:

NoOfStudents = 6000;
TeachingStaff = 150;
NonTeachingStaff = 20;
Total = NoOfStudents + TeachingStaff ...
   + NonTeachingStaff;
disp(Total);

Después de crear y guardar el archivo, puede ejecutarlo de dos formas:

  • Haciendo clic en el Run en la ventana del editor o

  • Simplemente escribiendo el nombre del archivo (sin extensión) en el símbolo del sistema: >> prog1

El indicador de la ventana de comando muestra el resultado:

6170

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

a = 5; b = 7;
c = a + b
d = c + sin(b)
e = 5 * d
f = exp(-d)

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

c =  12
d =  12.657
e =  63.285
f =    3.1852e-06

MATLAB no requiere ninguna declaración de tipo o declaración de dimensión. Siempre que MATLAB encuentra un nuevo nombre de variable, crea la variable y asigna el espacio de memoria apropiado.

Si la variable ya existe, MATLAB reemplaza el contenido original con contenido nuevo y asigna nuevo espacio de almacenamiento, cuando sea necesario.

Por ejemplo,

Total = 42

La declaración anterior crea una matriz de 1 por 1 denominada 'Total' y almacena el valor 42 en ella.

Tipos de datos disponibles en MATLAB

MATLAB proporciona 15 tipos de datos fundamentales. Cada tipo de datos almacena datos en forma de matriz o arreglo. El tamaño de esta matriz o matriz es un mínimo de 0 por 0 y esto puede crecer hasta una matriz o matriz de cualquier tamaño.

La siguiente tabla muestra los tipos de datos más utilizados en MATLAB:

No Señor. Tipo de datos y descripción
1

int8

Entero de 8 bits con signo

2

uint8

Entero sin signo de 8 bits

3

int16

Entero de 16 bits con signo

4

uint16

Entero sin signo de 16 bits

5

int32

Entero de 32 bits con signo

6

uint32

Entero sin signo de 32 bits

7

int64

Entero de 64 bits con signo

8

uint64

Entero sin signo de 64 bits

9

single

datos numéricos de precisión simple

10

double

datos numéricos de doble precisión

11

logical

valores lógicos de 1 o 0, representan verdadero y falso respectivamente

12

char

datos de caracteres (las cadenas se almacenan como vector de caracteres)

13

cell array

Matriz de celdas indexadas, cada una capaz de almacenar una matriz de diferente dimensión y tipo de datos.

14

structure

Estructuras similares a C, cada estructura tiene campos con nombre capaces de almacenar una matriz de una dimensión y tipo de datos diferentes

15

function handle

puntero a una función

dieciséis

user classes

objetos construidos a partir de una clase definida por el usuario

17

java classes

objetos construidos a partir de una clase Java

Ejemplo

Cree un archivo de script con el siguiente código:

str = 'Hello World!'
n = 2345
d = double(n)
un = uint32(789.50)
rn = 5678.92347
c = int32(rn)

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

str = Hello World!
n =  2345
d =  2345
un = 790
rn = 5678.9
c =  5679

Conversión de tipo de datos

MATLAB proporciona varias funciones para convertir un valor de un tipo de datos a otro. La siguiente tabla muestra las funciones de conversión de tipos de datos:

Función Propósito
carbonizarse Convertir a matriz de caracteres (cadena)
int2str Convertir datos enteros en cadenas
mat2str Convertir matriz en cadena
num2str Convertir número en cadena
str2double Convertir cadena en valor de doble precisión
str2num Convertir cadena en número
native2unicode Convertir bytes numéricos a caracteres Unicode
unicode2native Convertir caracteres Unicode en bytes numéricos
base2dec Convierta la cadena de números base N a un número decimal
bin2dec Convertir una cadena de números binarios en un número decimal
dec2base Convertir decimal a base N número en cadena
dec2bin Convertir decimal a binario en una cadena
dec2hex Convertir decimal a número hexadecimal en cadena
hex2dec Convierta la cadena numérica hexadecimal en un número decimal
hex2num Convierta la cadena numérica hexadecimal en un número de doble precisión
num2hex Convierta sencillos y dobles en cadenas hexadecimales IEEE
cell2mat Convertir matriz de celdas en matriz numérica
cell2struct Convertir matriz de celdas en matriz de estructura
celltr Cree una matriz de celdas de cadenas a partir de una matriz de caracteres
mat2cell Convierta una matriz en una matriz de celdas con celdas de tamaño potencialmente diferente
num2cell Convierta una matriz en una matriz de celdas con celdas de tamaño uniforme
struct2cell Convertir estructura en matriz de celdas

Determinación de tipos de datos

MATLAB proporciona varias funciones para identificar el tipo de datos de una variable.

La siguiente tabla proporciona las funciones para determinar el tipo de datos de una variable:

Función Propósito
es Detectar estado
es un Determinar si la entrada es un objeto de la clase especificada
iscell Determinar si la entrada es una matriz de celdas
iscellstr Determinar si la entrada es una matriz de cadenas de celdas
ischar Determinar si el elemento es una matriz de caracteres
isfield Determinar si la entrada es un campo de matriz de estructura
isfloat Determinar si la entrada es una matriz de punto flotante
ishghandle Verdadero para identificadores de objetos de gráficos de manejo
isinteger Determinar si la entrada es una matriz de enteros
isjava Determinar si la entrada es un objeto Java
isologico Determinar si la entrada es una matriz lógica
isnumérico Determinar si la entrada es una matriz numérica
isobjeto Determinar si la entrada es un objeto MATLAB
es real Verifique si la entrada es una matriz real
isscalar Determinar si la entrada es escalar
isstr Determinar si la entrada es una matriz de caracteres
isstruct Determinar si la entrada es una matriz de estructura
isvector Determine si la entrada es vectorial
clase Determinar la clase de objeto
validar atributos Verificar la validez de la matriz
quien Lista de variables en el espacio de trabajo, con tamaños y tipos

Ejemplo

Cree un archivo de script con el siguiente código:

x = 3
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = 23.54
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)
 
x = [1 2 3]
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
 
x = 'Hello'
isinteger(x)
isfloat(x)
isvector(x)
isscalar(x)
isnumeric(x)

Cuando ejecuta el archivo, produce el siguiente resultado:

x = 3
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x = 23.540
ans = 0
ans = 1
ans = 1
ans = 1
ans = 1
x =

          1          2          3

ans = 0
ans = 1
ans = 1
ans = 0
x = Hello
ans = 0
ans = 0
ans = 1
ans = 0
ans = 0

Un operador es un símbolo que le dice al compilador que realice manipulaciones matemáticas o lógicas específicas. MATLAB está diseñado para operar principalmente en matrices y arreglos completos. Por lo tanto, los operadores de MATLAB funcionan tanto con datos escalares como no escalares. MATLAB permite los siguientes tipos de operaciones elementales:

  • Operadores aritméticos
  • Operadores relacionales
  • Operadores logicos
  • Operaciones bit a bit
  • Establecer operaciones

Operadores aritméticos

MATLAB permite dos tipos diferentes de operaciones aritméticas:

  • Operaciones aritméticas matriciales
  • Operaciones aritméticas de matrices

Las operaciones aritméticas matriciales son las mismas que se definen en álgebra lineal. Las operaciones de matriz se ejecutan elemento por elemento, tanto en una matriz unidimensional como multidimensional.

Los operadores de matriz y los operadores de matriz se diferencian por el símbolo de punto (.). Sin embargo, como la operación de suma y resta es la misma para matrices y arreglos, el operador es el mismo para ambos casos. La siguiente tabla ofrece una breve descripción de los operadores:

Mostrar ejemplos

No Señor. Operador y descripción
1

+

Adición o plus unario. A + B suma los valores almacenados en las variables A y B. A y B deben tener el mismo tamaño, a menos que uno sea un escalar. Se puede agregar un escalar a una matriz de cualquier tamaño.

2

-

Resta o menos unario. AB resta el valor de B de A. A y B deben tener el mismo tamaño, a menos que uno sea un escalar. Un escalar se puede restar de una matriz de cualquier tamaño.

3

*

Multiplicación de matrices. C = A * B es el producto algebraico lineal de las matrices A y B. Más precisamente,

Para A y B no escalares, el número de columnas de A debe ser igual al número de filas de B. Un escalar puede multiplicar una matriz de cualquier tamaño.

4

.*

Multiplicación de matrices. A. * B es el producto elemento por elemento de las matrices A y B. A y B deben tener el mismo tamaño, a menos que uno de ellos sea un escalar.

5

/

División derecha de barra o matriz. B / A es aproximadamente lo mismo que B * inv (A). Más precisamente, B / A = (A '\ B') '.

6

./

Matriz de división a la derecha. A./B es la matriz con elementos A (i, j) / B (i, j). A y B deben tener el mismo tamaño, a menos que uno de ellos sea un escalar.

7

\

Barra invertida o división de matriz a la izquierda. Si A es una matriz cuadrada, A \ B es aproximadamente lo mismo que inv (A) * B, excepto que se calcula de una manera diferente. Si A es un n-por-n matriz y B es un vector columna con n componentes, o una matriz con varias de estas columnas, entonces X = A \ B es la solución a la ecuación AX = B . Se muestra un mensaje de advertencia si A tiene una escala incorrecta o es casi singular.

8

.\

Array división izquierda. A. \ B es la matriz con elementos B (i, j) / A (i, j). A y B deben tener el mismo tamaño, a menos que uno de ellos sea un escalar.

9

^

Poder de la matriz. X ^ p es X elevado a p, si p es un escalar. Si p es un número entero, la potencia se calcula elevando al cuadrado repetidamente. Si el número entero es negativo, X se invierte primero. Para otros valores de p, el cálculo involucra valores propios y vectores propios, de modo que si [V, D] = eig (X), entonces X ^ p = V * D. ^ p / V.

10

.^

Poder de matriz. A. ^ B es la matriz con elementos A (i, j) a la potencia B (i, j). A y B deben tener el mismo tamaño, a menos que uno de ellos sea un escalar.

11

'

Transposición de matriz. A 'es la transpuesta algebraica lineal de A. Para matrices complejas, esta es la transpuesta conjugada compleja.

12

.'

Transposición de matriz. UN.' es la transposición de la matriz de A. Para matrices complejas, esto no implica conjugación.

Operadores relacionales

Los operadores relacionales también pueden trabajar con datos escalares y no escalares. Los operadores relacionales para matrices realizan comparaciones elemento por elemento entre dos matrices y devuelven una matriz lógica del mismo tamaño, con elementos configurados en 1 lógico (verdadero) donde la relación es verdadera y elementos configurados en 0 lógico (falso) donde es no.

La siguiente tabla muestra los operadores relacionales disponibles en MATLAB:

Mostrar ejemplos

No Señor. Operador y descripción
1

<

Menos que

2

<=

Menos que o igual a

3

>

Mas grande que

4

>=

Mayor qué o igual a

5

==

Igual a

6

~=

No igual a

Operadores logicos

MATLAB ofrece dos tipos de funciones y operadores lógicos:

  • En cuanto a elementos: estos operadores operan en elementos correspondientes de matrices lógicas.

  • Cortocircuito: estos operadores operan en expresiones escalares y lógicas.

Los operadores lógicos de elementos operan elemento por elemento en matrices lógicas. Los símbolos &, | y ~ son los operadores de matriz lógica AND, OR y NOT.

Los operadores lógicos de cortocircuito permiten el cortocircuito en operaciones lógicas. Los símbolos && y || son los operadores lógicos de cortocircuito AND y OR.

Mostrar ejemplos

Operaciones bit a bit

Los operadores bit a bit trabajan en bits y realizan operaciones bit a bit. Las tablas de verdad para &, | y ^ son las siguientes:

pags q p & q p | q p ^ q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

Suponga si A = 60; y B = 13; Ahora en formato binario serán los siguientes:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001

~ A = 1100 0011

MATLAB proporciona varias funciones para operaciones bit a bit como operaciones 'bit a bit y', 'bit a bit o' y 'bit a bit no', operación de desplazamiento, etc.

La siguiente tabla muestra las operaciones bit a bit más utilizadas:

Mostrar ejemplos

Función Propósito
bitand (a, b) AND de bits de enteros una y b
bitcmp (a) Complemento bit a bit de un
bitget (a, pos) Obtener el bit en la posición especificada pos , en la matriz de enteros a
mordedor (a, b) Bit a bit OR de enteros una y b
bitset (a, pos) Bit activado en ubicación específica pos de una
desplazamiento de bits (a, k) Devuelve un desplazado a la izquierda por k bits, equivalente a multiplicar por 2 k . Los valores negativos de k corresponden a desplazar bits a la derecha o dividir por 2 | k | y redondeando al número entero más cercano hacia el infinito negativo. Los bits de desbordamiento se truncan.
bitxor (a, b) XOR bit a bit de los enteros una y b
swapbytes Intercambiar orden de bytes

Establecer operaciones

MATLAB proporciona varias funciones para operaciones de conjuntos, como unión, intersección y prueba para pertenencia a conjuntos, etc.

La siguiente tabla muestra algunas operaciones de conjuntos de uso común:

Mostrar ejemplos

No Señor. Función descriptiva
1

intersect(A,B)

Establecer la intersección de dos matrices; devuelve los valores comunes a A y B. Los valores devueltos están ordenados.

2

intersect(A,B,'rows')

Trata cada fila de A y cada fila de B como entidades únicas y devuelve las filas comunes a A y B. Las filas de la matriz devuelta están ordenadas.

3

ismember(A,B)

Devuelve una matriz del mismo tamaño que A, que contiene 1 (verdadero) donde los elementos de A se encuentran en B. En otros lugares, devuelve 0 (falso).

4

ismember(A,B,'rows')

Trata cada fila de A y cada fila de B como entidades individuales y devuelve un vector que contiene 1 (verdadero) donde las filas de la matriz A también son filas de B. En otros lugares, devuelve 0 (falso).

5

issorted(A)

Devuelve un 1 lógico (verdadero) si los elementos de A están ordenados y un 0 lógico (falso) en caso contrario. La entrada A puede ser un vector o una matriz de cadenas de celdas de N-por-1 o 1-por-N.A is considered to be sorted if A y la salida del tipo (A) son iguales.

6

issorted(A, 'rows')

Devuelve un 1 lógico (verdadero) si las filas de la matriz bidimensional A están ordenadas y un 0 lógico (falso) en caso contrario. Matrix A is considered to be sorted if A y la salida de sortrows (A) son iguales.

7

setdiff(A,B)

Establece la diferencia de dos matrices; devuelve los valores de A que no están en B. Los valores de la matriz devuelta están ordenados.

8

setdiff(A,B,'rows')

Trata cada fila de A y cada fila de B como entidades únicas y devuelve las filas de A que no están en B. Las filas de la matriz devuelta están ordenadas.

La opción 'filas' no admite matrices de celdas.

9

setxor

Establece OR exclusivo de dos matrices

10

union

Establece la unión de dos matrices

11

unique

Unique values in array

Decision making structures require that the programmer should specify one or more conditions to be evaluated or tested by the program, along with a statement or statements to be executed if the condition is determined to be true, and optionally, other statements to be executed if the condition is determined to be false.

Following is the general form of a typical decision making structure found in most of the programming languages −

MATLAB provides following types of decision making statements. Click the following links to check their detail −

Sr.No. Statement & Description
1 if ... end statement

An if ... end statement consists of a boolean expression followed by one or more statements.

2 if...else...end statement

An if statement can be followed by an optional else statement, which executes when the boolean expression is false.

3 If... elseif...elseif...else...end statements

An if statement can be followed by one (or more) optional elseif... and an else statement, which is very useful to test various conditions.

4 nested if statements

You can use one if or elseif statement inside another if or elseif statement(s).

5 switch statement

A switch statement allows a variable to be tested for equality against a list of values.

6 nested switch statements

You can use one switch statement inside another switch statement(s).

There may be a situation when you need to execute a block of code several number of times. In general, statements are executed sequentially. The first statement in a function is executed first, followed by the second, and so on.

Programming languages provide various control structures that allow for more complicated execution paths.

A loop statement allows us to execute a statement or group of statements multiple times and following is the general form of a loop statement in most of the programming languages −

MATLAB provides following types of loops to handle looping requirements. Click the following links to check their detail −

Sr.No. Loop Type & Description
1 while loop

Repeats a statement or group of statements while a given condition is true. It tests the condition before executing the loop body.

2 for loop

Executes a sequence of statements multiple times and abbreviates the code that manages the loop variable.

3 nested loops

You can use one or more loops inside any another loop.

Loop Control Statements

Loop control statements change execution from its normal sequence. When execution leaves a scope, all automatic objects that were created in that scope are destroyed.

MATLAB supports the following control statements. Click the following links to check their detail.

Sr.No. Control Statement & Description
1 break statement

Terminates the loop statement and transfers execution to the statement immediately following the loop.

2 continue statement

Causes the loop to skip the remainder of its body and immediately retest its condition prior to reiterating.

A vector is a one-dimensional array of numbers. MATLAB allows creating two types of vectors −

  • Row vectors
  • Column vectors

Row Vectors

Row vectors are created by enclosing the set of elements in square brackets, using space or comma to delimit the elements.

r = [7 8 9 10 11]

MATLAB will execute the above statement and return the following result −

r =

   7    8    9   10   11

Column Vectors

Column vectors are created by enclosing the set of elements in square brackets, using semicolon to delimit the elements.

c = [7;  8;  9;  10; 11]

MATLAB will execute the above statement and return the following result −

c =
      7       
      8       
      9       
      10       
      11

Referencing the Elements of a Vector

You can reference one or more of the elements of a vector in several ways. The ith component of a vector v is referred as v(i). For example −

v = [ 1; 2; 3; 4; 5; 6];	% creating a column vector of 6 elements
v(3)

MATLAB will execute the above statement and return the following result −

ans =  3

When you reference a vector with a colon, such as v(:), all the components of the vector are listed.

v = [ 1; 2; 3; 4; 5; 6];	% creating a column vector of 6 elements
v(:)

MATLAB will execute the above statement and return the following result −

ans =
     1
     2
     3
     4
     5
     6

MATLAB allows you to select a range of elements from a vector.

For example, let us create a row vector rv of 9 elements, then we will reference the elements 3 to 7 by writing rv(3:7) and create a new vector named sub_rv.

rv = [1 2 3 4 5 6 7 8 9];
sub_rv = rv(3:7)

MATLAB will execute the above statement and return the following result −

sub_rv =

   3   4   5   6   7

Vector Operations

In this section, let us discuss the following vector operations −

  • Addition and Subtraction of Vectors

  • Scalar Multiplication of Vectors

  • Transpose of a Vector

  • Appending Vectors

  • Magnitude of a Vector

  • Vector Dot Product

  • Vectors with Uniformly Spaced Elements

A matrix is a two-dimensional array of numbers.

In MATLAB, you create a matrix by entering elements in each row as comma or space delimited numbers and using semicolons to mark the end of each row.

For example, let us create a 4-by-5 matrix a

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

MATLAB will execute the above statement and return the following result −

a =
      1     2     3     4     5
      2     3     4     5     6
      3     4     5     6     7
      4     5     6     7     8

Referencing the Elements of a Matrix

To reference an element in the mth row and nth column, of a matrix mx, we write −

mx(m, n);

Por ejemplo, para hacer referencia al elemento en la fila y la columna, de la matriz a , como se creó en la última sección, escribimos -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(2,5)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =  6

Para hacer referencia a todos los elementos de la m ésima columna, escribimos A (:, m).

Vamos a crear un vector columna V, a partir de los elementos de la 4 ª fila de la matriz A -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
v = a(:,4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

v =
      4
      5
      6
      7

También puede seleccionar los elementos de la m ésima a la n ésima columna, para esto escribimos -

a(:,m:n)

Creemos una matriz más pequeña tomando los elementos de la segunda y tercera columnas -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
      2     3
      3     4
      4     5
      5     6

De la misma manera, puede crear una submatriz tomando una subparte de una matriz.

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
      2     3
      3     4
      4     5
      5     6

De la misma manera, puede crear una submatriz tomando una subparte de una matriz.

Por ejemplo, creemos una submatriz sa tomando la subparte interna de a -

3     4     5     
4     5     6

Para hacer esto, escriba -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
sa = a(2:3,2:4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

sa =
      3     4     5
      4     5     6

Eliminar una fila o una columna en una matriz

Puede eliminar una fila o columna completa de una matriz asignando un conjunto vacío de llaves [] a esa fila o columna. Básicamente, [] denota una matriz vacía.

Por ejemplo, eliminemos la cuarta fila de un -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a( 4 , : ) = []

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

a =
      1     2     3     4     5
      2     3     4     5     6
      3     4     5     6     7

A continuación, eliminemos la quinta columna de un -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(: , 5)=[]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

a =
      1     2     3     4
      2     3     4     5
      3     4     5     6
      4     5     6     7

Ejemplo

En este ejemplo, creemos una matriz m de 3 por 3, luego copiaremos la segunda y tercera filas de esta matriz dos veces para crear una matriz de 4 por 3.

Cree un archivo de script con el siguiente código:

a = [ 1 2 3 ; 4 5 6; 7 8 9];
new_mat = a([2,3,2,3],:)

Cuando ejecuta el archivo, muestra el siguiente resultado:

new_mat =
      4     5     6
      7     8     9
      4     5     6
      7     8     9

Operaciones de matriz

En esta sección, analicemos las siguientes operaciones matriciales básicas y de uso común:

  • Suma y resta de matrices

  • División de matrices

  • Operaciones escalares de matrices

  • Transposición de una matriz

  • Matrices de concatenación

  • Multiplicación de matrices

  • Determinante de una matriz

  • Inversa de una matriz

Todas las variables de todos los tipos de datos en MATLAB son matrices multidimensionales. Un vector es una matriz unidimensional y una matriz es una matriz bidimensional.

Ya hemos hablado de vectores y matrices. En este capítulo, analizaremos las matrices multidimensionales. Sin embargo, antes de eso, analicemos algunos tipos especiales de matrices.

Matrices especiales en MATLAB

En esta sección, discutiremos algunas funciones que crean algunas matrices especiales. Para todas estas funciones, un solo argumento crea una matriz cuadrada, los argumentos dobles crean una matriz rectangular.

los zeros() la función crea una matriz de todos los ceros -

Por ejemplo

zeros(5)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0
      0     0     0     0     0

los ones() la función crea una matriz de todos unos -

Por ejemplo

ones(4,3)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
      1     1     1
      1     1     1
      1     1     1
      1     1     1

los eye() La función crea una matriz de identidad.

Por ejemplo

eye(4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
      1     0     0     0
      0     1     0     0
      0     0     1     0
      0     0     0     1

los rand() La función crea una matriz de números aleatorios distribuidos uniformemente en (0,1) -

Por ejemplo

rand(3, 5)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   0.8147    0.9134    0.2785    0.9649    0.9572
   0.9058    0.6324    0.5469    0.1576    0.4854
   0.1270    0.0975    0.9575    0.9706    0.8003

Un cuadrado mágico

UN magic square es un cuadrado que produce la misma suma, cuando sus elementos se agregan en filas, columnas o diagonalmente.

los magic()La función crea una matriz cuadrada mágica. Se necesita un argumento singular que da el tamaño del cuadrado. El argumento debe ser un escalar mayor o igual a 3.

magic(4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   16     2     3    13
   5    11    10     8
   9     7     6    12
   4    14    15     1

Matrices multidimensionales

Una matriz que tiene más de dos dimensiones se denomina matriz multidimensional en MATLAB. Las matrices multidimensionales en MATLAB son una extensión de la matriz bidimensional normal.

Generalmente, para generar una matriz multidimensional, primero creamos una matriz bidimensional y la ampliamos.

Por ejemplo, creemos una matriz bidimensional a.

a = [7 9 5; 6 1 9; 4 3 2]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

a =
   7     9     5
   6     1     9
   4     3     2

La matriz a es una matriz de 3 por 3; podemos agregar una tercera dimensión a a , proporcionando valores como -

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

a =

ans(:,:,1) =

   0   0   0
   0   0   0
   0   0   0

ans(:,:,2) =

   1   2   3
   4   5   6
   7   8   9

También podemos crear matrices multidimensionales usando las funciones unos (), ceros () o rand ().

Por ejemplo,

b = rand(4,3,2)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

b(:,:,1) =
   0.0344    0.7952    0.6463
   0.4387    0.1869    0.7094
   0.3816    0.4898    0.7547
   0.7655    0.4456    0.2760

b(:,:,2) =
   0.6797    0.4984    0.2238
   0.6551    0.9597    0.7513
   0.1626    0.3404    0.2551
   0.1190    0.5853    0.5060

También podemos utilizar el cat()función para construir matrices multidimensionales. Concatena una lista de matrices a lo largo de una dimensión especificada:

La sintaxis de la función cat () es -

B = cat(dim, A1, A2...)

Dónde,

  • B es la nueva matriz creada

  • A1 , A2 , ... son las matrices que se van a concatenar

  • dim es la dimensión a lo largo de la cual concatenar las matrices

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

a = [9 8 7; 6 5 4; 3 2 1];
b = [1 2 3; 4 5 6; 7 8 9];
c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])

Cuando ejecuta el archivo, muestra:

c(:,:,1) =
      9     8     7
      6     5     4
      3     2     1
c(:,:,2) =
      1     2     3
      4     5     6
      7     8     9
c(:,:,3) =
      2     3     1
      4     7     8
      3     9     0

Funciones de matriz

MATLAB proporciona las siguientes funciones para ordenar, rotar, permutar, remodelar o cambiar el contenido de la matriz.

Función Propósito
longitud Longitud del vector o dimensión de matriz más grande
ndims Número de dimensiones de la matriz
numel Número de elementos de la matriz
Talla Dimensiones de la matriz
iscolumn Determina si la entrada es un vector de columna
esta vacio Determina si la matriz está vacía
ismatrix Determina si la entrada es matriz
isrow Determina si la entrada es un vector de fila
isscalar Determina si la entrada es escalar
isvector Determina si la entrada es vectorial
blkdiag Construye una matriz diagonal de bloques a partir de argumentos de entrada
circshift Cambia la matriz circularmente
ctranspose Transposición conjugada compleja
diag Matrices diagonales y diagonales de matriz
flipdim Voltea la matriz a lo largo de la dimensión especificada
fliplr Voltea la matriz de izquierda a derecha
flipud Voltea la matriz de arriba a abajo
permutar Invierte las dimensiones de permutación de la matriz ND
permutar Reorganiza las dimensiones de la matriz ND
repmat Replicaciones y matriz de mosaicos
remodelar Matriz de remodelaciones
rot90 Gira la matriz 90 grados
shiftdim Cambia las dimensiones
clasificado Determina si los elementos del conjunto están ordenados
ordenar Ordena los elementos de la matriz en orden ascendente o descendente
sortrows Ordena las filas en orden ascendente
exprimir Elimina dimensiones singleton
transponer Transponer
vectorizar Vectoriza la expresión

Ejemplos

Los siguientes ejemplos ilustran algunas de las funciones mencionadas anteriormente.

Length, Dimension and Number of elements −

Cree un archivo de script y escriba el siguiente código en él:

x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9];
length(x)      % length of x vector
y = rand(3, 4, 5, 2);
ndims(y)       % no of dimensions in array y
s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab'];
numel(s)       % no of elements in s

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =  8
ans =  4
ans =  23

Circular Shifting of the Array Elements −

Cree un archivo de script y escriba el siguiente código en él:

a = [1 2 3; 4 5 6; 7 8 9]  % the original array a
b = circshift(a,1)         %  circular shift first dimension values down by 1.
c = circshift(a,[1 -1])    % circular shift first dimension values % down by 1 
                           % and second dimension values to the left % by 1.

Cuando ejecuta el archivo, muestra el siguiente resultado:

a =
   1     2     3
   4     5     6
   7     8     9

b =
   7     8     9
   1     2     3
   4     5     6

c =
   8     9     7
   2     3     1
   5     6     4

Ordenación de matrices

Cree un archivo de script y escriba el siguiente código en él:

v = [ 23 45 12 9 5 0 19 17]  % horizontal vector
sort(v)                      % sorting v
m = [2 6 4; 5 3 9; 2 0 1]    % two dimensional array
sort(m, 1)                   % sorting m along the row
sort(m, 2)                   % sorting m along the column

Cuando ejecuta el archivo, muestra el siguiente resultado:

v =
   23    45    12     9     5     0    19    17
ans =
   0     5     9    12    17    19    23    45
m =
   2     6     4
   5     3     9
   2     0     1
ans =
   2     0     1
   2     3     4
   5     6     9
ans =
   2     4     6
   3     5     9
   0     1     2

Matriz de celdas

Las matrices de celdas son matrices de celdas indexadas donde cada celda puede almacenar una matriz de diferentes dimensiones y tipos de datos.

los cellLa función se utiliza para crear una matriz de celdas. La sintaxis de la función de celda es:

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

Dónde,

  • C es la matriz de celdas;

  • dim es un entero escalar o vector de enteros que especifica las dimensiones de la matriz de celdas C;

  • dim1, ..., dimN son números enteros escalares que especifican las dimensiones de C;

  • obj es uno de los siguientes:

    • Matriz u objeto de Java
    • Matriz .NET de tipo System.String o System.Object

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

Cuando ejecuta el archivo, muestra el siguiente resultado:

c = 
{
   [1,1] = Red
   [2,1] =  1
   [1,2] = Blue
   [2,2] =  2
   [1,3] = Green
   [2,3] =  3
   [1,4] = Yellow
   [2,4] =  4
   [1,5] = White
   [2,5] =  5
}

Acceso a datos en matrices de celdas

Hay dos formas de hacer referencia a los elementos de una matriz de celdas:

  • Incluyendo los índices en el primer corchete (), para hacer referencia a conjuntos de celdas
  • Incluir los índices entre llaves {}, para hacer referencia a los datos dentro de celdas individuales

Cuando encierra los índices en el primer corchete, se refiere al conjunto de celdas.

Los índices de matriz de celdas entre paréntesis suaves se refieren a conjuntos de celdas.

Por ejemplo

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 
{
   [1,1] = Red
   [2,1] =  1
   [1,2] = Blue
   [2,2] =  2
}

También puede acceder al contenido de las celdas indexando con llaves.

Por ejemplo

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = Blue
ans = Green
ans = Yellow

los colon(:)es uno de los operadores más útiles en MATLAB. Se utiliza para crear vectores, matrices de subíndices yspecify for iterations.

Si desea crear un vector de fila, que contenga números enteros del 1 al 10, escriba:

1:10

MATLAB ejecuta la declaración y devuelve un vector de fila que contiene los números enteros del 1 al 10 -

ans =                                                                           
                                                                                
   1    2    3    4    5    6    7    8    9   10

Si desea especificar un valor de incremento que no sea uno, por ejemplo:

100: -5: 50

MATLAB ejecuta la declaración y devuelve el siguiente resultado:

ans =
   100    95    90    85    80    75    70    65    60    55    50

Tomemos otro ejemplo:

0:pi/8:pi

MATLAB ejecuta la declaración y devuelve el siguiente resultado:

ans =
   Columns 1 through 7
      0    0.3927    0.7854    1.1781    1.5708    1.9635    2.3562
   Columns 8 through 9
      2.7489    3.1416

Puede utilizar el operador de dos puntos para crear un vector de índices para seleccionar filas, columnas o elementos de matrices.

La siguiente tabla describe su uso para este propósito (tengamos una matriz A) -

Formato Propósito
A(:,j) es la j-ésima columna de A.
A(i,:) es la i-ésima fila de A.
A(:,:) es la matriz bidimensional equivalente. Para matrices, esto es lo mismo que A.
A(j:k) es A (j), A (j + 1), ..., A (k).
A(:,j:k) es A (:, j), A (:, j + 1), ..., A (:, k).
A(:,:,k) es la k- ésima página de la matriz tridimensional A.
A(i,j,k,:) es un vector en una matriz A de cuatro dimensiones. El vector incluye A (i, j, k, 1), A (i, j, k, 2), A (i, j, k, 3), y así sucesivamente.
A(:) son todos los elementos de A, considerados como una sola columna. En el lado izquierdo de una instrucción de asignación, A (:) llena A, conservando su forma de antes. En este caso, el lado derecho debe contener el mismo número de elementos que A.

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

A = [1 2 3 4; 4 5 6 7; 7 8 9 10]
A(:,2)      % second column of A
A(:,2:3)    % second and third column of A
A(2:3,2:3)  % second and third rows and second and third columns

Cuando ejecuta el archivo, muestra el siguiente resultado:

A =
      1     2     3     4
      4     5     6     7
      7     8     9    10

ans =
      2
      5
      8

ans =
      2     3
      5     6
      8     9

ans =
      5     6
      8     9

MATLAB admite varias clases numéricas que incluyen números enteros con y sin signo y números de punto flotante de precisión simple y doble. De forma predeterminada, MATLAB almacena todos los valores numéricos como números de punto flotante de doble precisión.

Puede optar por almacenar cualquier número o matriz de números como enteros o como números de precisión simple.

Todos los tipos numéricos admiten operaciones básicas de matriz y operaciones matemáticas.

Conversión a varios tipos de datos numéricos

MATLAB proporciona las siguientes funciones para convertir a varios tipos de datos numéricos:

Función Propósito
doble Convierte en número de doble precisión
soltero Convierte a un número de precisión simple
int8 Convierte a un entero de 8 bits con signo
int16 Convierte a un entero de 16 bits con signo
int32 Convierte a un entero de 32 bits con signo
int64 Convierte a un entero de 64 bits con signo
uint8 Convierte a un entero sin signo de 8 bits
uint16 Convierte a un entero sin signo de 16 bits
uint32 Convierte en un entero sin signo de 32 bits
uint64 Convierte en un entero sin signo de 64 bits

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = single([5.32 3.47 6.28]) .* 7.5
x = double([5.32 3.47 6.28]) .* 7.5
x = int8([5.32 3.47 6.28]) .* 7.5
x = int16([5.32 3.47 6.28]) .* 7.5
x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5

Cuando ejecuta el archivo, muestra el siguiente resultado:

x =

   39.900   26.025   47.100

x =

   39.900   26.025   47.100

x =

   38  23  45

x =

   38  23  45

x =

   38  23  45

x =

   38  23  45

Ejemplo

Extendamos un poco más el ejemplo anterior. Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = int32([5.32 3.47 6.28]) .* 7.5
x = int64([5.32 3.47 6.28]) .* 7.5
x = num2cell(x)

Cuando ejecuta el archivo, muestra el siguiente resultado:

x =

   38  23  45

x =

   38  23  45

x = 
{
   [1,1] = 38
   [1,2] = 23
   [1,3] = 45
}

Enteros más pequeños y más grandes

Las funciones intmax() y intmin() devuelve los valores máximo y mínimo que se pueden representar con todos los tipos de números enteros.

Ambas funciones toman el tipo de datos entero como argumento, por ejemplo, intmax (int8) o intmin (int64) y devuelven los valores máximo y mínimo que puede representar con el tipo de datos entero.

Ejemplo

El siguiente ejemplo ilustra cómo obtener los valores más pequeños y más grandes de números enteros. Cree un archivo de script y escriba el siguiente código en él:

% displaying the smallest and largest signed integer data
str = 'The range for int8 is:\n\t%d to %d ';
sprintf(str, intmin('int8'), intmax('int8'))
str = 'The range for int16 is:\n\t%d to %d ';
sprintf(str, intmin('int16'), intmax('int16'))
str = 'The range for int32 is:\n\t%d to %d ';
sprintf(str, intmin('int32'), intmax('int32'))
str = 'The range for int64 is:\n\t%d to %d ';
sprintf(str, intmin('int64'), intmax('int64'))
 
% displaying the smallest and largest unsigned integer data
str = 'The range for uint8 is:\n\t%d to %d ';
sprintf(str, intmin('uint8'), intmax('uint8'))
str = 'The range for uint16 is:\n\t%d to %d ';
sprintf(str, intmin('uint16'), intmax('uint16'))
str = 'The range for uint32 is:\n\t%d to %d ';
sprintf(str, intmin('uint32'), intmax('uint32'))
str = 'The range for uint64 is:\n\t%d to %d ';
sprintf(str, intmin('uint64'), intmax('uint64'))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans = The range for int8 is:
	-128 to 127 
ans = The range for int16 is:
	-32768 to 32767 
ans = The range for int32 is:
	-2147483648 to 2147483647 
ans = The range for int64 is:
	0 to 0 
ans = The range for uint8 is:
	0 to 255 
ans = The range for uint16 is:
	0 to 65535 
ans = The range for uint32 is:
	0 to -1 
ans = The range for uint64 is:
	0 to 18446744073709551616

Números de punto flotante más pequeños y más grandes

Las funciones realmax() y realmin() devuelve los valores máximo y mínimo que se pueden representar con números de coma flotante.

Ambas funciones, cuando se llaman con el argumento 'single', devuelven los valores máximo y mínimo que puede representar con el tipo de datos de precisión simple y cuando se llaman con el argumento 'double', devuelven los valores máximo y mínimo que puede representar con el tipo de datos de doble precisión.

Ejemplo

El siguiente ejemplo ilustra cómo obtener los números de coma flotante más pequeños y más grandes. Cree un archivo de script y escriba el siguiente código en él:

% displaying the smallest and largest single-precision 
% floating point number
str = 'The range for single is:\n\t%g to %g and\n\t %g to  %g';
sprintf(str, -realmax('single'), -realmin('single'), ...
   realmin('single'), realmax('single'))

% displaying the smallest and largest double-precision 
% floating point number
str = 'The range for double is:\n\t%g to %g and\n\t %g to  %g';
sprintf(str, -realmax('double'), -realmin('double'), ...
   realmin('double'), realmax('double'))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans = The range for single is:                                                  
        -3.40282e+38 to -1.17549e-38 and                                        
         1.17549e-38 to  3.40282e+38                                            
ans = The range for double is:                                                  
        -1.79769e+308 to -2.22507e-308 and                                      
         2.22507e-308 to  1.79769e+308

Crear una cadena de caracteres es bastante simple en MATLAB. De hecho, lo hemos usado muchas veces. Por ejemplo, escribe lo siguiente en el símbolo del sistema:

my_string = 'Tutorials Point'

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

my_string = Tutorials Point

MATLAB considera todas las variables como matrices y las cadenas se consideran matrices de caracteres. Usemos elwhos comando para verificar la variable creada anteriormente -

whos

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

Name           Size            Bytes  Class    Attributes
my_string      1x16               32  char

Curiosamente, puede utilizar funciones de conversión numérica como uint8 o uint16para convertir los caracteres de la cadena a sus códigos numéricos. loschar función convierte el vector entero de nuevo a caracteres -

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

my_string = 'Tutorial''s Point';
str_ascii = uint8(my_string)        % 8-bit ascii values
str_back_to_char= char(str_ascii)  
str_16bit = uint16(my_string)       % 16-bit ascii values
str_back_to_char = char(str_16bit)

Cuando ejecuta el archivo, muestra el siguiente resultado:

str_ascii =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point
str_16bit =

   84  117  116  111  114  105   97  108   39  115   32   80  111  105  110  116

str_back_to_char = Tutorial's Point

Matriz de caracteres rectangulares

Las cadenas que hemos discutido hasta ahora son matrices de caracteres unidimensionales; sin embargo, necesitamos almacenar más que eso. Necesitamos almacenar datos textuales más dimensionales en nuestro programa. Esto se logra mediante la creación de matrices de caracteres rectangulares.

La forma más sencilla de crear una matriz de caracteres rectangular es concatenando dos o más matrices de caracteres unidimensionales, ya sea vertical u horizontalmente, según sea necesario.

Puede combinar cadenas verticalmente de cualquiera de las siguientes formas:

  • Usando el operador de concatenación de MATLAB []y separando cada fila con un punto y coma (;). Tenga en cuenta que en este método cada fila debe contener el mismo número de caracteres. Para cadenas con diferentes longitudes, debe rellenar con caracteres de espacio según sea necesario.

  • Utilizando el charfunción. Si las cadenas tienen diferentes longitudes, char rellena las cadenas más cortas con espacios en blanco al final para que cada fila tenga el mismo número de caracteres.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

doc_profile = ['Zara Ali                             '; ...
               'Sr. Surgeon                          '; ...
               'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
                  'RN Tagore Cardiology Research Center')

Cuando ejecuta el archivo, muestra el siguiente resultado:

doc_profile =
Zara Ali                             
Sr. Surgeon                          
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali                            
Sr. Surgeon                         
RN Tagore Cardiology Research Center

Puede combinar cadenas horizontalmente de cualquiera de las siguientes formas:

  • Usando el operador de concatenación de MATLAB, []y separando las cadenas de entrada con una coma o un espacio. Este método conserva los espacios finales en las matrices de entrada.

  • Usando la función de concatenación de cadenas, strcat. Este método elimina los espacios finales en las entradas.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)

Cuando ejecuta el archivo, muestra el siguiente resultado:

profile = Zara Ali      , Sr. Surgeon      , R N Tagore Cardiology Research Center
profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center

Combinar cadenas en una matriz de celdas

De nuestra discusión anterior, está claro que combinar cadenas con diferentes longitudes podría ser una molestia, ya que todas las cadenas de la matriz deben tener la misma longitud. Hemos utilizado espacios en blanco al final de las cadenas para igualar su longitud.

Sin embargo, una forma más eficaz de combinar las cadenas es convertir la matriz resultante en una matriz de celdas.

La matriz de celdas de MATLAB puede contener diferentes tamaños y tipos de datos en una matriz. Las matrices de celdas proporcionan una forma más flexible de almacenar cadenas de longitud variable.

los cellstr La función convierte una matriz de caracteres en una matriz de celdas de cadenas.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

name =     'Zara Ali                             ';
position = 'Sr. Surgeon                          '; 
worksAt =  'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)

Cuando ejecuta el archivo, muestra el siguiente resultado:

{                                                                               
   [1,1] = Zara Ali                                                              
   [2,1] = Sr. Surgeon                                                           
   [3,1] = R N Tagore Cardiology Research Center                                 
}

Funciones de cadena en MATLAB

MATLAB proporciona numerosas funciones de cadenas para crear, combinar, analizar, comparar y manipular cadenas.

La siguiente tabla proporciona una breve descripción de las funciones de cadena en MATLAB:

Función Propósito
Funciones para almacenar texto en matrices de caracteres, combinar matrices de caracteres, etc.
espacios en blanco Crea una cadena de caracteres en blanco
celltr Cree una matriz de celdas de cadenas a partir de una matriz de caracteres
carbonizarse Convertir a matriz de caracteres (cadena)
iscellstr Determinar si la entrada es una matriz de cadenas de celdas
ischar Determinar si el elemento es una matriz de caracteres
sprintf Dar formato a los datos en una cadena
strcat Concatenar cadenas horizontalmente
strjoin Unir cadenas en una matriz de celdas en una sola cadena
Funciones para identificar partes de cadenas, buscar y reemplazar subcadenas
ischar Determinar si el elemento es una matriz de caracteres
isletter Elementos de matriz que son letras alfabéticas
espacio Elementos de matriz que son caracteres espaciales
isstrprop Determinar si la cadena pertenece a la categoría especificada
sscanf Leer datos formateados de una cadena
strfind Encuentra una cuerda dentro de otra
strrep Buscar y reemplazar subcadena
strsplit Dividir cadena en el delimitador especificado
strtok Partes seleccionadas de la cuerda
validatestring Verificar la validez de la cadena de texto
symvar Determinar variables simbólicas en expresión
regexp Coincidir con expresión regular (distingue entre mayúsculas y minúsculas)
regexpi Coincidir con expresión regular (no distingue entre mayúsculas y minúsculas)
regexprep Reemplazar cadena usando expresión regular
regexptranslate Traducir cadena a expresión regular
Funciones para la comparación de cadenas
strcmp Comparar cadenas (distingue entre mayúsculas y minúsculas)
strcmpi Comparar cadenas (no distingue entre mayúsculas y minúsculas)
strncmp Comparar los primeros n caracteres de cadenas (distingue entre mayúsculas y minúsculas)
strncmpi Comparar los primeros n caracteres de cadenas (no distingue entre mayúsculas y minúsculas)
Funciones para cambiar cadenas a mayúsculas o minúsculas, crear o eliminar espacios en blanco
deblank Pele los espacios en blanco finales del final de la cuerda
strtrim Eliminar los espacios en blanco iniciales y finales de la cadena
inferior Convertir cadena a minúscula
Superior Convertir cadena a mayúscula
strjust Justificar la matriz de caracteres

Ejemplos

Los siguientes ejemplos ilustran algunas de las funciones de cadena mencionadas anteriormente:

Formateo de cadenas

Cree un archivo de script y escriba el siguiente código en él:

A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =  3141.592654 
   3141.59 
   +3141.59 
      3141.59 
   000003141.59

Unir cadenas

Cree un archivo de script y escriba el siguiente código en él:

%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};

% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")

Cuando ejecuta el archivo, muestra el siguiente resultado:

str1 = red-blue-green-yellow-orange
str2 = red,blue,green,yellow,orange

Encontrar y reemplazar cadenas

Cree un archivo de script y escriba el siguiente código en él:

students = {'Zara Ali', 'Neha Bhatnagar', ...
            'Monica Malik', 'Madhu Gautam', ...
            'Madhu Sharma', 'Bhawna Sharma',...
            'Nuha Ali', 'Reva Dutta', ...
            'Sunaina Ali', 'Sofia Kabir'};
 
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)

Cuando ejecuta el archivo, muestra el siguiente resultado:

new_student = 
{
   [1,1] = Poulomi Dutta
}
first_names = 
{
   [1,1] = Zara
   [1,2] = Neha
   [1,3] = Monica
   [1,4] = Madhu
   [1,5] = Madhu
   [1,6] = Bhawna
   [1,7] = Nuha
   [1,8] = Reva
   [1,9] = Sunaina
   [1,10] = Sofia
}

Comparación de cadenas

Cree un archivo de script y escriba el siguiente código en él:

str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
   sprintf('%s and %s are equal', str1, str2)
else
   sprintf('%s and %s are not equal', str1, str2)
end

Cuando ejecuta el archivo, muestra el siguiente resultado:

str1 = This is test
str2 = This is text
ans = This is test and This is text are not equal

Una función es un grupo de declaraciones que juntas realizan una tarea. En MATLAB, las funciones se definen en archivos separados. El nombre del archivo y de la función debe ser el mismo.

Las funciones operan en variables dentro de su propio espacio de trabajo, que también se llama local workspace, separado del espacio de trabajo al que accede en el símbolo del sistema de MATLAB, que se llama base workspace.

Las funciones pueden aceptar más de un argumento de entrada y pueden devolver más de un argumento de salida.

La sintaxis de una declaración de función es:

function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)

Ejemplo

La siguiente función llamada mymax debe escribirse en un archivo llamado mymax.m . Toma cinco números como argumento y devuelve el máximo de números.

Cree un archivo de función, llamado mymax.m y escriba el siguiente código en él:

function max = mymax(n1, n2, n3, n4, n5)

%This function calculates the maximum of the
% five numbers given as input
max =  n1;
if(n2 > max)
   max = n2;
end
if(n3 > max)
   max = n3;
end
if(n4 > max)
   max = n4;
end
if(n5 > max)
   max = n5;
end

La primera línea de una función comienza con la palabra clave function. Da el nombre de la función y el orden de los argumentos. En nuestro ejemplo, la función mymax tiene cinco argumentos de entrada y un argumento de salida.

Las líneas de comentarios que vienen inmediatamente después de la declaración de función proporcionan el texto de ayuda. Estas líneas se imprimen cuando escribe:

help mymax

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

This function calculates the maximum of the
   five numbers given as input

Puede llamar a la función como -

mymax(34, 78, 89, 23, 11)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 89

Funciones anónimas

Una función anónima es como una función en línea en los lenguajes de programación tradicionales, definida dentro de una sola declaración de MATLAB. Consiste en una sola expresión MATLAB y cualquier número de argumentos de entrada y salida.

Puede definir una función anónima directamente en la línea de comandos de MATLAB o dentro de una función o script.

De esta manera puede crear funciones simples sin tener que crear un archivo para ellas.

La sintaxis para crear una función anónima a partir de una expresión es

f = @(arglist)expression

Ejemplo

En este ejemplo, escribiremos una función anónima llamada potencia, que tomará dos números como entrada y devolverá el primer número elevado a la potencia del segundo número.

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power (4.5, 1.5)

Cuando ejecuta el archivo, muestra:

result1 =  343
result2 =  7
result3 =  1.0000e-10
result4 =  9.5459

Funciones primarias y secundarias

Cualquier función que no sea una función anónima debe definirse dentro de un archivo. Cada archivo de función contiene una función primaria requerida que aparece primero y cualquier número de subfunciones opcionales que vienen después de la función primaria y son utilizadas por esta.

Las funciones primarias se pueden llamar desde fuera del archivo que las define, ya sea desde la línea de comandos o desde otras funciones, pero las subfunciones no se pueden llamar desde la línea de comandos u otras funciones, fuera del archivo de funciones.

Las subfunciones son visibles solo para la función principal y otras subfunciones dentro del archivo de función que las define.

Ejemplo

Escribamos una función llamada cuadrática que calcularía las raíces de una ecuación cuadrática. La función tomaría tres entradas, el coeficiente cuadrático, el coeficiente lineal y el término constante. Devolvería las raíces.

El archivo de función quadratic.m contendrá la función principal cuadrática y el disco de subfunción , que calcula el discriminante.

Cree un archivo de función quadratic.m y escriba el siguiente código en él:

function [x1,x2] = quadratic(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficients of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of quadratic

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end   % end of sub-function

Puede llamar a la función anterior desde el símbolo del sistema como:

quadratic(2,4,-4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 0.7321

Funciones anidadas

Puede definir funciones dentro del cuerpo de otra función. Se denominan funciones anidadas. Una función anidada contiene alguno o todos los componentes de cualquier otra función.

Las funciones anidadas se definen dentro del alcance de otra función y comparten el acceso al espacio de trabajo de la función que las contiene.

Una función anidada sigue la siguiente sintaxis:

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

Ejemplo

Reescribamos la función cuadrática , del ejemplo anterior, sin embargo, esta vez la función de disco será una función anidada.

Cree un archivo de función quadratic2.m y escriba el siguiente código en él:

function [x1,x2] = quadratic2(a,b,c)
function disc  % nested function
d = sqrt(b^2 - 4*a*c);
end   % end of function disc

disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % end of function quadratic2

Puede llamar a la función anterior desde el símbolo del sistema como:

quadratic2(2,4,-4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =  0.73205

Funciones privadas

Una función privada es una función principal que solo es visible para un grupo limitado de otras funciones. Si no desea exponer la implementación de una función, puede crearlas como funciones privadas.

Las funciones privadas residen en subfolders con el nombre especial private.

Solo son visibles para las funciones de la carpeta principal.

Ejemplo

Reescribamos la función cuadrática . Esta vez, sin embargo, la función de disco que calcula el discriminante será una función privada.

Cree una subcarpeta denominada privada en el directorio de trabajo. Almacene el siguiente archivo de función disc.m en él:

function dis = disc(a,b,c) 
%function calculates the discriminant
dis = sqrt(b^2 - 4*a*c);
end      % end of sub-function

Cree una función quadratic3.m en su directorio de trabajo y escriba el siguiente código en ella:

function [x1,x2] = quadratic3(a,b,c)

%this function returns the roots of 
% a quadratic equation.
% It takes 3 input arguments
% which are the co-efficient of x2, x and the 
%constant term
% It returns the roots
d = disc(a,b,c); 

x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      % end of quadratic3

Puede llamar a la función anterior desde el símbolo del sistema como:

quadratic3(2,4,-4)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =  0.73205

Variables globales

Las variables globales pueden ser compartidas por más de una función. Para ello, debe declarar la variable como global en todas las funciones.

Si desea acceder a esa variable desde el espacio de trabajo base, declare la variable en la línea de comando.

La declaración global debe ocurrir antes de que la variable se use realmente en una función. Es una buena práctica utilizar letras mayúsculas para los nombres de las variables globales para distinguirlas de otras variables.

Ejemplo

Creemos un archivo de función llamado average.m y escriba el siguiente código en él:

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

Cuando ejecute el archivo, mostrará el siguiente resultado:

av =  35.500

Importar datos en MATLAB significa cargar datos desde un archivo externo. losimportdataLa función permite cargar varios archivos de datos de diferentes formatos. Tiene las siguientes cinco formas:

No Señor. Función descriptiva
1

A = importdata(filename)

Carga datos en la matriz A desde el archivo indicado por el nombre de archivo .

2

A = importdata('-pastespecial')

Carga datos del portapapeles del sistema en lugar de un archivo.

3

A = importdata(___, delimiterIn)

Interpreta delimiterIn como el separador de columna en el archivo ASCII, el nombre del archivo o los datos del portapapeles. Puede usar delimiterIn con cualquiera de los argumentos de entrada en las sintaxis anteriores.

4

A = importdata(___, delimiterIn, headerlinesIn)

Carga datos desde el archivo ASCII, el nombre del archivo o el portapapeles, leyendo datos numéricos a partir de la línea de encabezadoIn + 1 .

5

[A, delimiterOut, headerlinesOut] = importdata(___)

Devuelve el carácter delimitador detectado para el archivo ASCII de entrada en delimiterOut y el número detectado de líneas de encabezado en headerlinesOut , utilizando cualquiera de los argumentos de entrada en las sintaxis anteriores.

De forma predeterminada, Octave no tiene soporte para la función importdata () , por lo que tendrá que buscar e instalar este paquete para que los siguientes ejemplos funcionen con su instalación de Octave.

Ejemplo 1

Carguemos y visualicemos un archivo de imagen. Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

filename = 'smile.jpg';
A = importdata(filename);
image(A);

Cuando ejecuta el archivo, MATLAB muestra el archivo de imagen. Sin embargo, debe almacenarlo en el directorio actual.

Ejemplo 2

En este ejemplo, importamos un archivo de texto y especificamos Delimitador y Encabezado de columna. Creemos un archivo ASCII delimitado por espacios con encabezados de columna, llamado WeeklyData.txt .

Nuestro archivo de texto semanaldata.txt se ve así:

SunDay  MonDay  TuesDay  WednesDay  ThursDay  FriDay  SaturDay
95.01   76.21   61.54    40.57       55.79    70.28   81.53
73.11   45.65   79.19    93.55       75.29    69.87   74.68
60.68   41.85   92.18    91.69       81.32    90.38   74.51
48.60   82.14   73.82    41.03       0.99     67.22   93.18
89.13   44.47   57.63    89.36       13.89    19.88   46.60

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

filename = 'weeklydata.txt';
delimiterIn = ' ';
headerlinesIn = 1;
A = importdata(filename,delimiterIn,headerlinesIn);

% View data
for k = [1:7]
   disp(A.colheaders{1, k})
   disp(A.data(:, k))
   disp(' ')
end

Cuando ejecuta el archivo, muestra el siguiente resultado:

SunDay
   95.0100
   73.1100
   60.6800
   48.6000
   89.1300
 
MonDay
   76.2100
   45.6500
   41.8500
   82.1400
   44.4700
 
TuesDay
   61.5400
   79.1900
   92.1800
   73.8200
   57.6300

WednesDay
   40.5700
   93.5500
   91.6900
   41.0300
   89.3600
 
ThursDay
   55.7900
   75.2900
   81.3200
   0.9900
   13.8900
 
FriDay
   70.2800
   69.8700
   90.3800
   67.2200
   19.8800

SaturDay
   81.5300
   74.6800
   74.5100
   93.1800
   46.6000

Ejemplo 3

En este ejemplo, vamos a importar datos desde el portapapeles.

Copie las siguientes líneas en el portapapeles:

Mathematics is simple

Cree un archivo de secuencia de comandos y escriba el siguiente código:

A = importdata('-pastespecial')

Cuando ejecuta el archivo, muestra el siguiente resultado:

A = 
   'Mathematics is simple'

E / S de archivos de bajo nivel

La función importdata es una función de alto nivel. Las funciones de E / S de archivo de bajo nivel en MATLAB permiten el mayor control sobre la lectura o escritura de datos en un archivo. Sin embargo, estas funciones necesitan información más detallada sobre su archivo para funcionar de manera eficiente.

MATLAB proporciona las siguientes funciones para operaciones de lectura y escritura en el nivel de bytes o caracteres:

Función Descripción
fcerrar Cerrar uno o todos los archivos abiertos
feof Prueba de fin de archivo
ferror Información sobre errores de E / S de archivos
fgetl Leer línea del archivo, eliminar caracteres de nueva línea
fgets Leer línea desde archivo, manteniendo caracteres de nueva línea
fopen Abrir archivo u obtener información sobre archivos abiertos
fprintf Escribir datos en un archivo de texto
fread Leer datos de un archivo binario
frewind Mover el indicador de posición del archivo al comienzo del archivo abierto
fscanf Leer datos del archivo de texto
fseek Mover a la posición especificada en el archivo
ftell Posición en archivo abierto
escribir Escribir datos en un archivo binario

Importar archivos de datos de texto con E / S de bajo nivel

MATLAB proporciona las siguientes funciones para la importación a bajo nivel de archivos de datos de texto:

  • los fscanf La función lee datos formateados en un archivo de texto o ASCII.

  • los fgetl y fgets las funciones leen una línea de un archivo a la vez, donde un carácter de nueva línea separa cada línea.

  • los fread La función lee un flujo de datos a nivel de bytes o bits.

Ejemplo

Tenemos un archivo de datos de texto 'myfile.txt' guardado en nuestro directorio de trabajo. El archivo almacena datos de lluvia durante tres meses; Junio, julio y agosto para el año 2012.

Los datos en myfile.txt contienen conjuntos repetidos de mediciones de tiempo, mes y lluvia en cinco lugares. Los datos del encabezado almacenan el número de meses M; por lo que tenemos M conjuntos de medidas.

El archivo tiene este aspecto:

Rainfall Data
Months: June, July, August
 
M = 3
12:00:00
June-2012
17.21  28.52  39.78  16.55 23.67
19.15  0.35   17.57  NaN   12.01
17.92  28.49  17.40  17.06 11.09
9.59   9.33   NaN    0.31  0.23 
10.46  13.17  NaN    14.89 19.33
20.97  19.50  17.65  14.45 14.00
18.23  10.34  17.95  16.46 19.34
09:10:02
July-2012
12.76  16.94  14.38  11.86 16.89
20.46  23.17  NaN    24.89 19.33
30.97  49.50  47.65  24.45 34.00
18.23  30.34  27.95  16.46 19.34
30.46  33.17  NaN    34.89  29.33
30.97  49.50  47.65  24.45 34.00
28.67  30.34  27.95  36.46 29.34
15:03:40
August-2012
17.09  16.55  19.59  17.25 19.22
17.54  11.45  13.48  22.55 24.01
NaN    21.19  25.85  25.05 27.21
26.79  24.98  12.23  16.99 18.67
17.54  11.45  13.48  22.55 24.01
NaN    21.19  25.85  25.05 27.21
26.79  24.98  12.23  16.99 18.67

Importaremos datos de este archivo y mostraremos estos datos. Siga los siguientes pasos:

  • Abra el archivo con fopen función y obtener el identificador de archivo.

  • Describe los datos del archivo con format specifiers, como '%s'por una cuerda,'%d'para un número entero, o'%f'para un número de coma flotante.

  • Para omitir caracteres literales en el archivo, inclúyalos en la descripción del formato. Para omitir un campo de datos, use un asterisco ('*') en el especificador.

    Por ejemplo, para leer los encabezados y devolver el valor único de M, escribimos:

    M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
  • Por defecto, fscanflee los datos de acuerdo con nuestra descripción de formato hasta que no encuentra ninguna coincidencia con los datos, o llega al final del archivo. Aquí usaremos for loop para leer 3 conjuntos de datos y cada vez leerá 7 filas y 5 columnas.

  • Crearemos una estructura denominada mydata en el espacio de trabajo para almacenar los datos leídos del archivo. Esta estructura tiene tres campos: hora , mes y matriz de datos de lluvia .

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

filename = '/data/myfile.txt';
rows = 7;
cols = 5;
 
% open the file
fid = fopen(filename);
 
% read the file headers, find M (number of months)
M = fscanf(fid, '%*s %*s\n%*s %*s %*s %*s\nM=%d\n\n', 1);
 
% read each set of measurements
for n = 1:M
   mydata(n).time = fscanf(fid, '%s', 1);
   mydata(n).month = fscanf(fid, '%s', 1);
 
   % fscanf fills the array in column order,
   % so transpose the results
   mydata(n).raindata  = ...
      fscanf(fid, '%f', [rows, cols]);
end
for n = 1:M
   disp(mydata(n).time), disp(mydata(n).month)
   disp(mydata(n).raindata)
end
 
% close the file
fclose(fid);

Cuando ejecuta el archivo, muestra el siguiente resultado:

12:00:00
June-2012
   17.2100   17.5700   11.0900   13.1700   14.4500
   28.5200       NaN    9.5900       NaN   14.0000
   39.7800   12.0100    9.3300   14.8900   18.2300
   16.5500   17.9200       NaN   19.3300   10.3400
   23.6700   28.4900    0.3100   20.9700   17.9500
   19.1500   17.4000    0.2300   19.5000   16.4600
   0.3500   17.0600   10.4600   17.6500   19.3400

09:10:02
July-2012
   12.7600       NaN   34.0000   33.1700   24.4500
   16.9400   24.8900   18.2300       NaN   34.0000
   14.3800   19.3300   30.3400   34.8900   28.6700
   11.8600   30.9700   27.9500   29.3300   30.3400
   16.8900   49.5000   16.4600   30.9700   27.9500
   20.4600   47.6500   19.3400   49.5000   36.4600
   23.1700   24.4500   30.4600   47.6500   29.3400

15:03:40
August-2012
   17.0900   13.4800   27.2100   11.4500   25.0500
   16.5500   22.5500   26.7900   13.4800   27.2100
   19.5900   24.0100   24.9800   22.5500   26.7900
   17.2500       NaN   12.2300   24.0100   24.9800
   19.2200   21.1900   16.9900       NaN   12.2300
   17.5400   25.8500   18.6700   21.1900   16.9900
   11.4500   25.0500   17.5400   25.8500   18.6700

La exportación (o salida) de datos en MATLAB significa escribir en archivos. MATLAB le permite utilizar sus datos en otra aplicación que lee archivos ASCII. Para ello, MATLAB proporciona varias opciones de exportación de datos.

Puede crear los siguientes tipos de archivos:

  • Archivo de datos ASCII delimitado y rectangular de una matriz.

  • Archivo diario (o registro) de pulsaciones de teclas y la salida de texto resultante.

  • Archivo ASCII especializado que utiliza funciones de bajo nivel como fprintf.

  • MEX-file para acceder a su rutina C / C ++ o Fortran que escribe en un formato de archivo de texto particular.

Aparte de esto, también puede exportar datos a hojas de cálculo.

Hay dos formas de exportar una matriz numérica como un archivo de datos ASCII delimitado:

  • Utilizando el save función y especificando el -ascii Calificatorio

  • Utilizando el dlmwrite función

La sintaxis para usar la función de guardar es:

save my_data.out num_array -ascii

donde my_data.out es el archivo de datos ASCII delimitado creado, num_array es una matriz numérica y−ascii es el especificador.

Sintaxis para usar el dlmwrite la función es -

dlmwrite('my_data.out', num_array, 'dlm_char')

donde my_data.out es el archivo de datos ASCII delimitado creado, num_array es una matriz numérica y dlm_char es el carácter delimitador.

Ejemplo

El siguiente ejemplo demuestra el concepto. Cree un archivo de secuencia de comandos y escriba el siguiente código:

num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out

Cuando ejecuta el archivo, muestra el siguiente resultado:

1.0000000e+00   2.0000000e+00   3.0000000e+00   4.0000000e+00
   4.0000000e+00   5.0000000e+00   6.0000000e+00   7.0000000e+00
   7.0000000e+00   8.0000000e+00   9.0000000e+00   0.0000000e+00

1 2 3 4
4 5 6 7
7 8 9 0

Tenga en cuenta que el comando save -ascii y la función dlmwrite no funcionan con matrices de celdas como entrada. Para crear un archivo ASCII delimitado a partir del contenido de una matriz de celdas, puede

  • O convierta la matriz de celdas en una matriz usando el cell2mat función

  • O exporte la matriz de celdas utilizando funciones de E / S de archivos de bajo nivel.

Si usa el save función para escribir una matriz de caracteres en un archivo ASCII, escribe el equivalente ASCII de los caracteres en el archivo.

Por ejemplo, escribamos la palabra 'hola' en un archivo -

h = 'hello';
save textdata.out h -ascii
type textdata.out

MATLAB ejecuta las declaraciones anteriores y muestra el siguiente resultado. que son los caracteres de la cadena 'hola' en formato ASCII de 8 dígitos.

1.0400000e+02   1.0100000e+02   1.0800000e+02   1.0800000e+02   1.1100000e+02

Escribir en archivos de diario

Los archivos de diario son registros de actividad de su sesión de MATLAB. La función de diario crea una copia exacta de su sesión en un archivo de disco, sin incluir gráficos.

Para activar la función de diario, escriba -

diary

Opcionalmente, puede dar el nombre del archivo de registro, por ejemplo:

diary logdata.out

Para desactivar la función de diario:

diary off

Puede abrir el archivo del diario en un editor de texto.

Exportación de datos a archivos de datos de texto con E / S de bajo nivel

Hasta ahora, hemos exportado matrices numéricas. Sin embargo, es posible que deba crear otros archivos de texto, incluidas combinaciones de datos numéricos y de caracteres, archivos de salida no rectangulares o archivos con esquemas de codificación no ASCII. Para estos fines, MATLAB proporciona el nivel bajofprintf función.

Al igual que en las actividades de archivo de E / S de bajo nivel, antes de exportar, debe abrir o crear un archivo con el fopenfunción y obtener el identificador de archivo. De forma predeterminada, fopen abre un archivo para acceso de solo lectura. Debe especificar el permiso para escribir o agregar, como 'w' o 'a'.

Después de procesar el archivo, debe cerrarlo con fclose(fid) función.

El siguiente ejemplo demuestra el concepto:

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
 
% open a file for writing
fid = fopen('logtable.txt', 'w');
 
% Table Header
fprintf(fid, 'Log     Function\n\n');
 
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f    %f\n', y);
fclose(fid);

% display the file created
type logtable.txt

Cuando ejecuta el archivo, muestra el siguiente resultado:

Log         Function

0.000000    -Inf
10.000000    2.302585
20.000000    2.995732
30.000000    3.401197
40.000000    3.688879
50.000000    3.912023
60.000000    4.094345
70.000000    4.248495
80.000000    4.382027
90.000000    4.499810
100.000000    4.605170

Para trazar la gráfica de una función, debe seguir los siguientes pasos:

  • Definir x, especificando el range of values para la variable x, para el cual se trazará la función

  • Definir la función, y = f(x)

  • Llama a plot comando, como plot(x, y)

El siguiente ejemplo demostraría el concepto. Tracemos la función simpley = x para el rango de valores de x de 0 a 100, con un incremento de 5.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [0:5:100];
y = x;
plot(x, y)

Cuando ejecuta el archivo, MATLAB muestra el siguiente gráfico:

Tomemos un ejemplo más para graficar la función y = x 2 . En este ejemplo dibujaremos dos gráficos con la misma función, pero en la segunda vez reduciremos el valor de incremento. Tenga en cuenta que a medida que disminuimos el incremento, el gráfico se vuelve más suave.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [1 2 3 4 5 6 7 8 9 10];
x = [-100:20:100];
y = x.^2;
plot(x, y)

Cuando ejecuta el archivo, MATLAB muestra el siguiente gráfico:

Cambie un poco el archivo de código, reduzca el incremento a 5 -

x = [-100:5:100];
y = x.^2;
plot(x, y)

MATLAB dibuja un gráfico más suave:

Agregar título, etiquetas, líneas de cuadrícula y escala en el gráfico

MATLAB le permite agregar títulos, etiquetas a lo largo del eje xy del eje y, líneas de cuadrícula y también ajustar los ejes para arreglar el gráfico.

  • los xlabel y ylabel Los comandos generan etiquetas a lo largo de los ejes X e Y.

  • los title El comando le permite poner un título en el gráfico.

  • los grid on El comando le permite poner las líneas de la cuadrícula en el gráfico.

  • los axis equal El comando permite generar el diagrama con los mismos factores de escala y los espacios en ambos ejes.

  • los axis square El comando genera un diagrama cuadrado.

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [0:0.01:10];
y = sin(x);
plot(x, y), xlabel('x'), ylabel('Sin(x)'), title('Sin(x) Graph'),
grid on, axis equal

MATLAB genera el siguiente gráfico:

Dibujar varias funciones en el mismo gráfico

Puede dibujar varios gráficos en el mismo gráfico. El siguiente ejemplo demuestra el concepto:

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [0 : 0.01: 10];
y = sin(x);
g = cos(x);
plot(x, y, x, g, '.-'), legend('Sin(x)', 'Cos(x)')

MATLAB genera el siguiente gráfico:

Establecer colores en el gráfico

MATLAB proporciona ocho opciones de color básicas para dibujar gráficos. La siguiente tabla muestra los colores y sus códigos:

Código Color
w Blanco
k Negro
segundo Azul
r rojo
C Cian
gramo Verde
metro Magenta
y Amarillo

Ejemplo

Dibujemos la gráfica de dos polinomios

  • f (x) = 3x 4 + 2x 3 + 7x 2 + 2x + 9 y

  • g (x) = 5x 3 + 9x + 2

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [-10 : 0.01: 10];
y = 3*x.^4 + 2 * x.^3 + 7 * x.^2 + 2 * x + 9;
g = 5 * x.^3 + 9 * x + 2;
plot(x, y, 'r', x, g, 'g')

Cuando ejecuta el archivo, MATLAB genera el siguiente gráfico:

Configuración de escalas de eje

los axisEl comando le permite establecer las escalas de los ejes. Puede proporcionar valores mínimos y máximos para los ejes xey utilizando el comando de eje de la siguiente manera:

axis ( [xmin xmax ymin ymax] )

El siguiente ejemplo muestra esto:

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [0 : 0.01: 10];
y = exp(-x).* sin(2*x + 3);
plot(x, y), axis([0 10 -1 1])

Cuando ejecuta el archivo, MATLAB genera el siguiente gráfico:

Generación de subparcelas

Cuando crea una matriz de parcelas en la misma figura, cada una de estas parcelas se denomina subtrama. lossubplot El comando se usa para crear subtramas.

La sintaxis del comando es:

subplot(m, n, p)

donde, m y n son el número de filas y columnas de la matriz de trama y p especifica dónde colocar una trama particular.

Cada gráfico creado con el comando subplot puede tener sus propias características. El siguiente ejemplo demuestra el concepto:

Ejemplo

Generemos dos gráficos:

y = e −1.5x sin (10x)

y = e −2x sin (10x)

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [0:0.01:5];
y = exp(-1.5*x).*sin(10*x);
subplot(1,2,1)
plot(x,y), xlabel('x'),ylabel('exp(–1.5x)*sin(10x)'),axis([0 5 -1 1])
y = exp(-2*x).*sin(10*x);
subplot(1,2,2)
plot(x,y),xlabel('x'),ylabel('exp(–2x)*sin(10x)'),axis([0 5 -1 1])

Cuando ejecuta el archivo, MATLAB genera el siguiente gráfico:

Este capítulo continuará explorando las capacidades de trazado y gráficos de MATLAB. Discutiremos -

  • Dibujar gráficos de barras
  • Dibujar contornos
  • Parcelas tridimensionales

Dibujar gráficos de barras

los barEl comando dibuja un gráfico de barras bidimensional. Tomemos un ejemplo para demostrar la idea.

Ejemplo

Tengamos un aula imaginaria con 10 alumnos. Sabemos que el porcentaje de calificaciones obtenidas por estos estudiantes es 75, 58, 90, 87, 50, 85, 92, 75, 60 y 95. Dibujaremos la gráfica de barras para estos datos.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [1:10];
y = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
bar(x,y), xlabel('Student'),ylabel('Score'),
title('First Sem:')
print -deps graph.eps

Cuando ejecuta el archivo, MATLAB muestra el siguiente gráfico de barras:

Dibujar contornos

Una línea de contorno de una función de dos variables es una curva a lo largo de la cual la función tiene un valor constante. Las curvas de nivel se utilizan para crear mapas de curvas de nivel uniendo puntos de igual elevación por encima de un nivel determinado, como el nivel medio del mar.

MATLAB proporciona una contour función para dibujar mapas de contorno.

Ejemplo

Generemos un mapa de curvas de nivel que muestre las curvas de nivel para una función dada g = f (x, y). Esta función tiene dos variables. Entonces, tendremos que generar dos variables independientes, es decir, dos conjuntos de datos xey. Esto se hace llamando almeshgrid mando.

los meshgrid El comando se usa para generar una matriz de elementos que dan el rango sobre xey junto con la especificación del incremento en cada caso.

Grafiquemos nuestra función g = f (x, y), donde −5 ≤ x ≤ 5, −3 ≤ y ≤ 3. Tomemos un incremento de 0.1 para ambos valores. Las variables se establecen como -

[x,y] = meshgrid(–5:0.1:5, –3:0.1:3);

Por último, necesitamos asignar la función. Sea nuestra función: x 2 + y 2

Cree un archivo de secuencia de comandos y escriba el siguiente código:

[x,y] = meshgrid(-5:0.1:5,-3:0.1:3);   %independent variables
g = x.^2 + y.^2;                       % our function
contour(x,y,g)                         % call the contour function
print -deps graph.eps

Cuando ejecuta el archivo, MATLAB muestra el siguiente mapa de contorno:

Modifiquemos un poco el código para arreglar el mapa

[x,y] = meshgrid(-5:0.1:5,-3:0.1:3);   %independent variables
g = x.^2 + y.^2;                       % our function
[C, h] = contour(x,y,g);               % call the contour function
set(h,'ShowText','on','TextStep',get(h,'LevelStep')*2)
print -deps graph.eps

Cuando ejecuta el archivo, MATLAB muestra el siguiente mapa de contorno:

Gráficos tridimensionales

Las gráficas tridimensionales básicamente muestran una superficie definida por una función en dos variables, g = f (x, y).

Como antes, para definir g, primero creamos un conjunto de (x, y) puntos sobre el dominio de la función usando el meshgridmando. A continuación, asignamos la función en sí. Finalmente, usamos elsurf comando para crear un gráfico de superficie.

El siguiente ejemplo demuestra el concepto:

Ejemplo

Creemos un mapa de superficie 3D para la función g = xe - (x 2 + y 2 )

Cree un archivo de secuencia de comandos y escriba el siguiente código:

[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps

Cuando ejecuta el archivo, MATLAB muestra el siguiente mapa 3D:

También puede utilizar el meshcomando para generar una superficie tridimensional. sin embargo, elsurf El comando muestra tanto las líneas de conexión como las caras de la superficie en color, mientras que el mesh El comando crea una superficie de estructura alámbrica con líneas de colores que conectan los puntos de definición.

Hasta ahora, hemos visto que todos los ejemplos funcionan en MATLAB así como en su GNU, alternativamente llamado Octave. Pero para resolver ecuaciones algebraicas básicas, tanto MATLAB como Octave son un poco diferentes, por lo que intentaremos cubrir MATLAB y Octave en secciones separadas.

También discutiremos la factorización y simplificación de expresiones algebraicas.

Resolver ecuaciones algebraicas básicas en MATLAB

los solveLa función se usa para resolver ecuaciones algebraicas. En su forma más simple, la función de resolución toma la ecuación entre comillas como argumento.

Por ejemplo, despejemos x en la ecuación x-5 = 0

solve('x-5=0')

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   5

También puede llamar a la función de resolución como -

y = solve('x-5 = 0')

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

y =
   5

Incluso puede que no incluya el lado derecho de la ecuación:

solve('x-5')

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   5

Si la ecuación involucra varios símbolos, entonces MATLAB de forma predeterminada asume que está resolviendo para x, sin embargo, la función de resolución tiene otra forma:

solve(equation, variable)

donde, también puede mencionar la variable.

Por ejemplo, resuelva la ecuación v - u - 3t 2 = 0, para v. En este caso, deberíamos escribir -

solve('v-u-3*t^2=0', 'v')

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   3*t^2 + u

Resolver ecuaciones algebraicas básicas en octava

los roots La función se usa para resolver ecuaciones algebraicas en Octave y puede escribir los ejemplos anteriores de la siguiente manera:

Por ejemplo, despejemos x en la ecuación x-5 = 0

roots([1, -5])

Octave ejecutará la declaración anterior y devolverá el siguiente resultado:

ans = 5

También puede llamar a la función de resolución como -

y = roots([1, -5])

Octave ejecutará la declaración anterior y devolverá el siguiente resultado:

y = 5

Resolver ecuaciones cuadráticas en MATLAB

los solveLa función también puede resolver ecuaciones de orden superior. A menudo se usa para resolver ecuaciones cuadráticas. La función devuelve las raíces de la ecuación en una matriz.

El siguiente ejemplo resuelve la ecuación cuadrática x 2 -7x +12 = 0. Cree un archivo de secuencia de comandos y escriba el siguiente código:

eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Cuando ejecuta el archivo, muestra el siguiente resultado:

The first root is: 
   3
The second root is: 
   4

Resolver ecuaciones cuadráticas en octava

El siguiente ejemplo resuelve la ecuación cuadrática x 2 -7x 12 = 0 en Octave. Cree un archivo de secuencia de comandos y escriba el siguiente código:

s = roots([1, -7, 12]);

disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Cuando ejecuta el archivo, muestra el siguiente resultado:

The first root is: 
   4
The second root is: 
   3

Resolver ecuaciones de orden superior en MATLAB

los solveLa función también puede resolver ecuaciones de orden superior. Por ejemplo, resuelva una ecuación cúbica como (x-3) 2 (x-7) = 0

solve('(x-3)^2*(x-7)=0')

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   3
   3
   7

En el caso de ecuaciones de orden superior, las raíces son largas y contienen muchos términos. Puede obtener el valor numérico de dichas raíces convirtiéndolas al doble. El siguiente ejemplo resuelve la ecuación de cuarto orden x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Cuando ejecuta el archivo, devuelve el siguiente resultado:

The first root is: 
6.630396332390718431485053218985
 The second root is: 
1.0597804633025896291682772499885
 The third root is: 
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
 The fourth root is: 
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
   6.6304
Numeric value of second root
   1.0598
Numeric value of third root
   -0.3451 - 1.0778i
Numeric value of fourth root
   -0.3451 + 1.0778i

Tenga en cuenta que las dos últimas raíces son números complejos.

Resolver ecuaciones de orden superior en octava

El siguiente ejemplo resuelve la ecuación de cuarto orden x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

v = [1, -7,  3, -5, 9];
s = roots(v);

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Cuando ejecuta el archivo, devuelve el siguiente resultado:

Numeric value of first root
 6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
 1.0598

Resolver sistema de ecuaciones en MATLAB

los solveLa función también se puede usar para generar soluciones de sistemas de ecuaciones que involucran más de una variable. Tomemos un ejemplo sencillo para demostrar este uso.

Resolvamos las ecuaciones -

5x + 9y = 5

3x - 6y = 4

Cree un archivo de secuencia de comandos y escriba el siguiente código:

s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   22/19
ans =
   -5/57

De la misma manera, puede resolver sistemas lineales más grandes. Considere el siguiente conjunto de ecuaciones:

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Resolver sistema de ecuaciones en octava

Tenemos un enfoque un poco diferente para resolver un sistema de 'n' ecuaciones lineales en 'n' incógnitas. Tomemos un ejemplo sencillo para demostrar este uso.

Resolvamos las ecuaciones -

5x + 9y = 5

3x - 6y = 4

Dicho sistema de ecuaciones lineales se puede escribir como la ecuación de matriz única Ax = b, donde A es la matriz de coeficientes, b es el vector de columna que contiene el lado derecho de las ecuaciones lineales yx es el vector de columna que representa la solución como mostrado en el programa siguiente -

Cree un archivo de secuencia de comandos y escriba el siguiente código:

A = [5, 9; 3, -6];
b = [5;4];
A \ b

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =

   1.157895
  -0.087719

De la misma manera, puede resolver sistemas lineales más grandes como se indica a continuación:

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Ampliación y recopilación de ecuaciones en MATLAB

los expand y el collectLa función expande y recopila una ecuación respectivamente. El siguiente ejemplo demuestra los conceptos:

Cuando trabaja con muchas funciones simbólicas, debe declarar que sus variables son simbólicas.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

syms x   %symbolic variable x
syms y   %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
 
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   x^2 + 4*x - 45
ans =
   x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
   2*cos(x)*sin(x)
ans =
   cos(x)*cos(y) - sin(x)*sin(y)
ans =
   x^4 - 7*x^3
ans =
   x^6 - 8*x^5 + 15*x^4

Ampliación y recopilación de ecuaciones en octava

Necesitas tener symbolic paquete, que proporciona expand y el collectfunción para expandir y recopilar una ecuación, respectivamente. El siguiente ejemplo demuestra los conceptos:

Cuando trabaja con muchas funciones simbólicas, debe declarar que sus variables son simbólicas, pero Octave tiene un enfoque diferente para definir variables simbólicas. Observe el uso deSin y Cos, que también se definen en paquete simbólico.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

% first of all load the package, make sure its installed.
pkg load symbolic

% make symbols module available
symbols

% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');

% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
 
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =

-45.0+x^2+(4.0)*x
ans =

210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =

sin((2.0)*x)
ans =

cos(y+x)
ans =

x^(3.0)*(-7.0+x)
ans =

(-3.0+x)*x^(4.0)*(-5.0+x)

Factorización y simplificación de expresiones algebraicas

los factor función factoriza una expresión y la simplifyfunción simplifica una expresión. El siguiente ejemplo demuestra el concepto:

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   (x - y)*(x^2 + x*y + y^2)
ans =
   [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
   x^2 + 4

MATLAB proporciona varias formas de resolver problemas de cálculo diferencial e integral, resolución de ecuaciones diferenciales de cualquier grado y cálculo de límites. Lo mejor de todo es que puede trazar fácilmente las gráficas de funciones complejas y verificar máximos, mínimos y otros puntos de papelería en una gráfica resolviendo la función original, así como su derivada.

Este capítulo se ocupará de los problemas de cálculo. En este capítulo, discutiremos conceptos previos al cálculo, es decir, calcular límites de funciones y verificar las propiedades de los límites.

En el próximo capítulo Diferencial , calcularemos la derivada de una expresión y encontraremos los máximos y mínimos locales en una gráfica. También discutiremos la resolución de ecuaciones diferenciales.

Finalmente, en el capítulo Integración , discutiremos el cálculo integral.

Calcular límites

MATLAB proporciona la limitfunción para calcular límites. En su forma más básica, ellimit La función toma la expresión como argumento y encuentra el límite de la expresión cuando la variable independiente llega a cero.

Por ejemplo, calculemos el límite de una función f (x) = (x 3 + 5) / (x 4 + 7), ya que x tiende a cero.

syms x
limit((x^3 + 5)/(x^4 + 7))

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   5/7

La función límite cae en el ámbito de la computación simbólica; necesitas usar elsymsfunción para decirle a MATLAB qué variables simbólicas está utilizando. También puede calcular el límite de una función, ya que la variable tiende a algún número distinto de cero. Para calcular lim x-> a (f (x)), usamos el comando limit con argumentos. El primero es la expresión y el segundo es el número, al que x se acerca, aquí es a .

Por ejemplo, calculemos el límite de una función f (x) = (x-3) / (x-1), ya que x tiende a 1.

limit((x - 3)/(x-1),1)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   NaN

Tomemos otro ejemplo,

limit(x^2 + 5, 3)

MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   14

Calcular límites usando una octava

A continuación se muestra la versión Octave del ejemplo anterior usando symbolic paquete, intente ejecutar y comparar el resultado -

pkg load symbolic
symbols

x = sym("x");
subs((x^3+5)/(x^4+7),x,0)

Octave ejecutará la declaración anterior y devolverá el siguiente resultado:

ans =
   0.7142857142857142857

Verificación de las propiedades básicas de los límites

El teorema algebraico del límite proporciona algunas propiedades básicas de los límites. Estos son los siguientes:

Consideremos dos funciones:

  • f (x) = (3x + 5) / (x - 3)
  • g (x) = x 2 + 1.

Calculemos los límites de las funciones cuando x tiende a 5, de ambas funciones y verifiquemos las propiedades básicas de los límites usando estas dos funciones y MATLAB.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

syms x
f = (3*x + 5)/(x-3);
g = x^2 + 1;
l1 = limit(f, 4)
l2 = limit (g, 4)
lAdd = limit(f + g, 4)
lSub = limit(f - g, 4)
lMult = limit(f*g, 4)
lDiv = limit (f/g, 4)

Cuando ejecuta el archivo, muestra:

l1 =
   17
  
l2 =
   17
  
lAdd =
   34
 
lSub =
   0
  
lMult =
   289
  
lDiv =
   1

Verificación de las propiedades básicas de los límites usando Octave

A continuación se muestra la versión Octave del ejemplo anterior usando symbolic paquete, intente ejecutar y comparar el resultado -

pkg load symbolic
symbols

x = sym("x");
f = (3*x + 5)/(x-3);
g = x^2 + 1;

l1 = subs(f, x, 4)
l2 = subs (g, x, 4)
lAdd = subs (f+g, x, 4)
lSub = subs (f-g, x, 4)
lMult = subs (f*g, x, 4)
lDiv = subs (f/g, x, 4)

Octave ejecutará la declaración anterior y devolverá el siguiente resultado:

l1 =
   17.0
l2 =
   17.0
lAdd =
   34.0
lSub =
   0.0
lMult =
   289.0
lDiv =
   1.0

Límites de los lados izquierdo y derecho

Cuando una función tiene una discontinuidad para algún valor particular de la variable, el límite no existe en ese punto. En otras palabras, los límites de una función f (x) tiene discontinuidad en x = a, cuando el valor del límite, cuando x se acerca a x desde el lado izquierdo, no es igual al valor del límite cuando x se acerca desde el lado derecho.

Esto lleva al concepto de límites para diestros y zurdos. Un límite a la izquierda se define como el límite cuando x -> a, desde la izquierda, es decir, x se acerca a a, para valores de x <a. Un límite a la derecha se define como el límite cuando x -> a, desde la derecha, es decir, x se acerca a a, para valores de x> a. Cuando el límite para zurdos y el límite para diestros no son iguales, el límite no existe.

Consideremos una función -

f(x) = (x - 3)/|x - 3|

Demostraremos que lím x-> 3 f (x) no existe. MATLAB nos ayuda a establecer este hecho de dos formas:

  • Trazando la gráfica de la función y mostrando la discontinuidad.
  • Calculando los límites y mostrando que ambos son diferentes.

Los límites para zurdos y diestros se calculan pasando las cadenas de caracteres 'izquierda' y 'derecha' al comando de límite como último argumento.

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

f = (x - 3)/abs(x-3);
ezplot(f,[-1,5])
l = limit(f,x,3,'left')
r = limit(f,x,3,'right')

Cuando ejecuta el archivo, MATLAB dibuja la siguiente gráfica

Después de que se muestre la siguiente salida:

l =
   -1
  
r =
   1

MATLAB proporciona la diffcomando para calcular derivadas simbólicas. En su forma más simple, pasa la función que desea diferenciar al comando diff como argumento.

Por ejemplo, calculemos la derivada de la función f (t) = 3t 2 + 2t -2

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

syms t
f = 3*t^2 + 2*t^(-2);
diff(f)

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

ans =
6*t - 4/t^3

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(f,t)

Octave ejecuta el código y devuelve el siguiente resultado:

ans =
   -(4.0)*t^(-3.0)+(6.0)*t

Verificación de reglas elementales de diferenciación

Enunciemos brevemente varias ecuaciones o reglas para la diferenciación de funciones y verifiquemos estas reglas. Para este propósito, escribiremos f '(x) para una derivada de primer orden y f "(x) para una derivada de segundo orden.

Las siguientes son las reglas para la diferenciación:

Regla 1

Para cualquier función f y g y cualquier número real a y b son la derivada de la función -

h(x) = af(x) + bg(x) con respecto ax está dado por -

h'(x) = af'(x) + bg'(x)

Regla 2

los sum y subtraction Las reglas establecen que si f y g son dos funciones, f 'y g' son sus derivadas respectivamente, entonces,

(f + g)' = f' + g'

(f - g)' = f' - g'

Regla 3

los product La regla establece que si f y g son dos funciones, f 'y g' son sus derivadas respectivamente, entonces,

(f.g)' = f'.g + g'.f

Regla 4

los quotient La regla establece que si f y g son dos funciones, f 'y g' son sus derivadas respectivamente, entonces,

(f/g)' = (f'.g - g'.f)/g2

Regla 5

los polynomial o la regla de poder elemental establece que, si y = f(x) = xn, luego f' = n. x(n-1)

Un resultado directo de esta regla es que la derivada de cualquier constante es cero, es decir, si y = k, cualquier constante, entonces

f' = 0

Regla 6

los chain La regla establece que, derivada de la función de una función h(x) = f(g(x)) con respecto ax es,

h'(x)= f'(g(x)).g'(x)

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

syms x
syms t

f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)

Cuando ejecuta el archivo, MATLAB muestra el siguiente resultado:

f =
   (x^2 + 3)*(x + 2)
 
   der1 =
   2*x*(x + 2) + x^2 + 3
  
f =
   (t^(1/2) + t^3)*(t^2 + 3)
 
   der2 =
   (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3)
  
f =
   (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
  
der3 =
   (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
 
f =
   (2*x^2 + 3*x)/(x^3 + 1)
  
der4 =
   (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2
  
f =
   (x^2 + 1)^17
  
der5 =
   34*x*(x^2 + 1)^16
  
f =
   1/(t^3 + 3*t^2 + 5*t - 9)^6
  
der6 =
   -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3) 
der1 = differentiate(f,x) 
f = (t^2 + 3)*(t^(1/2) + t^3) 
der2 = differentiate(f,t) 
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) 
der3 = differentiate(f,x) 
f = (2*x^2 + 3*x)/(x^3 + 1) 
der4 = differentiate(f,x) 
f = (x^2 + 1)^17 
der5 = differentiate(f,x) 
f = (t^3 + 3* t^2 + 5*t -9)^(-6) 
der6 = differentiate(f,t)

Octave ejecuta el código y devuelve el siguiente resultado:

f =

(2.0+x)*(3.0+x^(2.0))
der1 =

3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =

(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =

(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =

(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =

(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =

(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =

(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =

(1.0+x^(2.0))^(17.0)
der5 =

(34.0)*(1.0+x^(2.0))^(16.0)*x
f =

(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =

-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)

Derivadas de funciones exponenciales, logarítmicas y trigonométricas

La siguiente tabla proporciona las derivadas de funciones exponenciales, logarítmicas y trigonométricas de uso común:

Función Derivado
ca.x c a.x .ln ca (ln es el logaritmo natural)
ex e x
ln x 1 / x
lncx 1 / x.ln c
xx x x . (1 + ln x)
sin(x) cos (x)
cos(x) -pecado (x)
tan(x) seg 2 (x), o 1 / cos 2 (x), o 1 + tan 2 (x)
cot(x) -csc 2 (x), o -1 / sin 2 (x), o - (1 + cot 2 (x))
sec(x) sec (x) .tan (x)
csc(x) -csc (x) .cot (x)

Ejemplo

Cree un archivo de script y escriba el siguiente código en él:

syms x
y = exp(x)
diff(y)
y = x^9
diff(y)
y = sin(x)
diff(y)
y = tan(x)
diff(y)
y = cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)

Cuando ejecuta el archivo, MATLAB muestra el siguiente resultado:

y =
   exp(x)
   ans =
   exp(x)

y =
   x^9
   ans =
   9*x^8
  
y =
   sin(x)
   ans =
   cos(x)
  
y =
   tan(x)
   ans =
   tan(x)^2 + 1
 
y =
   cos(x)
   ans =
   -sin(x)
  
y =
   log(x)
   ans =
   1/x
  
y =
   log(x)/log(10)
   ans =
   1/(x*log(10))
 
y =
   sin(x)^2
   ans =
   2*cos(x)*sin(x)
 
y =
   cos(3*x^2 + 2*x + 1)
   ans =
   -sin(3*x^2 + 2*x + 1)*(6*x + 2)
  
y =
   exp(x)/sin(x)
   ans =
   exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
y = Exp(x)
differentiate(y,x)

y = x^9
differentiate(y,x)

y = Sin(x)
differentiate(y,x)

y = Tan(x)
differentiate(y,x)

y = Cos(x)
differentiate(y,x)

y = Log(x)
differentiate(y,x)

% symbolic packages does not have this support
%y = Log10(x)
%differentiate(y,x)

y = Sin(x)^2
differentiate(y,x)

y = Cos(3*x^2 + 2*x + 1)
differentiate(y,x)

y = Exp(x)/Sin(x)
differentiate(y,x)

Octave ejecuta el código y devuelve el siguiente resultado:

y =

exp(x)
ans =

exp(x)
y =

x^(9.0)
ans =

(9.0)*x^(8.0)
y =

sin(x)
ans =

cos(x)
y =

tan(x)
ans =

1+tan(x)^2
y =

cos(x)
ans =

-sin(x)
y =

log(x)
ans =

x^(-1)
y =

sin(x)^(2.0)
ans =

(2.0)*sin(x)*cos(x)
y =

cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =

-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =

sin(x)^(-1)*exp(x)
ans =

sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)

Cálculo de derivados de orden superior

Para calcular derivadas más altas de una función f, usamos la sintaxis diff(f,n).

Calculemos la segunda derivada de la función y = f (x) = x .e -3x

f = x*exp(-3*x);
diff(f, 2)

MATLAB ejecuta el código y devuelve el siguiente resultado:

ans =
9*x*exp(-3*x) - 6*exp(-3*x)

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)

Octave ejecuta el código y devuelve el siguiente resultado:

ans =

(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)

Ejemplo

En este ejemplo, solucionemos un problema. Dado que una funcióny = f(x) = 3 sin(x) + 7 cos(5x). Tendremos que averiguar si la ecuaciónf" + f = -5cos(2x) se mantiene cierto.

Cree un archivo de script y escriba el siguiente código en él:

syms x
y = 3*sin(x)+7*cos(5*x);  % defining the function
lhs = diff(y,2)+y;        %evaluting the lhs of the equation
rhs = -5*cos(2*x);        %rhs of the equation
if(isequal(lhs,rhs))
   disp('Yes, the equation holds true');
else
   disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

Cuando ejecuta el archivo, muestra el siguiente resultado:

No, the equation does not hold true
Value of LHS is: 
-168*cos(5*x)

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
y = 3*Sin(x)+7*Cos(5*x);           % defining the function
lhs = differentiate(y, x, 2) + y;  %evaluting the lhs of the equation
rhs = -5*Cos(2*x);                 %rhs of the equation

if(lhs == rhs)
   disp('Yes, the equation holds true');
else
   disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);

Octave ejecuta el código y devuelve el siguiente resultado:

No, the equation does not hold true
Value of LHS is: 
-(168.0)*cos((5.0)*x)

Encontrar los máximos y mínimos de una curva

Si buscamos los máximos y mínimos locales para un gráfico, básicamente buscamos los puntos más altos o más bajos en el gráfico de la función en una localidad en particular, o para un rango particular de valores de la variable simbólica.

Para una función y = f (x) los puntos en el gráfico donde el gráfico tiene pendiente cero se llaman stationary points. En otras palabras, los puntos estacionarios son donde f '(x) = 0.

Para encontrar los puntos estacionarios de una función que diferenciamos, necesitamos igualar la derivada a cero y resolver la ecuación.

Ejemplo

Encontremos los puntos estacionarios de la función f (x) = 2x 3 + 3x 2 - 12x + 17

Siga los siguientes pasos:

First let us enter the function and plot its graph.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;   % defining the function
ezplot(y)

MATLAB ejecuta el código y devuelve el siguiente gráfico:

Aquí está el código equivalente de Octave para el ejemplo anterior:

pkg load symbolic
symbols

x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");

ezplot(y)
print -deps graph.eps

Our aim is to find some local maxima and minima on the graph, so let us find the local maxima and minima for the interval [-2, 2] on the graph.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17;   % defining the function
ezplot(y, [-2, 2])

MATLAB ejecuta el código y devuelve el siguiente gráfico:

Aquí está el código equivalente de Octave para el ejemplo anterior:

pkg load symbolic
symbols

x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");

ezplot(y, [-2, 2])
print -deps graph.eps

Next, let us compute the derivative.

g = diff(y)

MATLAB ejecuta el código y devuelve el siguiente resultado:

g =
   6*x^2 + 6*x - 12

Aquí está el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)

Octave ejecuta el código y devuelve el siguiente resultado:

g =
   -12.0+(6.0)*x+(6.0)*x^(2.0)

Let us solve the derivative function, g, to get the values where it becomes zero.

s = solve(g)

MATLAB ejecuta el código y devuelve el siguiente resultado:

s =
   1
   -2

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)
roots([6, 6, -12])

Octave ejecuta el código y devuelve el siguiente resultado:

g =

-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =

  -2
   1

This agrees with our plot. So let us evaluate the function f at the critical points x = 1, -2. Podemos sustituir un valor en una función simbólica usando el subs mando.

subs(y, 1), subs(y, -2)

MATLAB ejecuta el código y devuelve el siguiente resultado:

ans =
   10
ans =
   37

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y,x)

roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)

ans =
   10.0
ans =
   37.0-4.6734207789940138748E-18*I

Por lo tanto, los valores mínimo y máximo de la función f (x) = 2x 3 + 3x 2 - 12x + 17, en el intervalo [-2,2] son ​​10 y 37.

Resolver ecuaciones diferenciales

MATLAB proporciona la dsolve comando para resolver ecuaciones diferenciales simbólicamente.

La forma más básica del dsolve El comando para encontrar la solución a una sola ecuación es

dsolve('eqn')

donde eqn es una cadena de texto utilizada para ingresar la ecuación.

Devuelve una solución simbólica con un conjunto de constantes arbitrarias que MATLAB etiqueta C1, C2, etc.

También puede especificar las condiciones iniciales y de contorno para el problema, como una lista delimitada por comas siguiendo la ecuación como -

dsolve('eqn','cond1', 'cond2',…)

Con el fin de utilizar el comando dsolve, derivatives are indicated with a D. Por ejemplo, una ecuación como f '(t) = -2 * f + costo (t) se ingresa como -

'Df = -2*f + cos(t)'

Las derivadas más altas se indican siguiendo a D por el orden de la derivada.

Por ejemplo, la ecuación f "(x) + 2f '(x) = 5sin3x debe ingresarse como -

'D2y + 2Dy = 5*sin(3*x)'

Tomemos un ejemplo simple de una ecuación diferencial de primer orden: y '= 5y.

s = dsolve('Dy = 5*y')

MATLAB ejecuta el código y devuelve el siguiente resultado:

s =
   C2*exp(5*t)

Tomemos otro ejemplo de una ecuación diferencial de segundo orden como: y "- y = 0, y (0) = -1, y '(0) = 2.

dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')

MATLAB ejecuta el código y devuelve el siguiente resultado:

ans =
   exp(t)/2 - (3*exp(-t))/2

La integración se ocupa de dos tipos de problemas esencialmente diferentes.

  • En el primer tipo, se da la derivada de una función y queremos encontrar la función. Por tanto, básicamente invertimos el proceso de diferenciación. Este proceso inverso se conoce como anti-diferenciación, o encontrar la función primitiva, o encontrar unaindefinite integral.

  • El segundo tipo de problemas implica sumar un número muy grande de cantidades muy pequeñas y luego tomar un límite cuando el tamaño de las cantidades se acerca a cero, mientras que el número de términos tiende a infinito. Este proceso conduce a la definición deldefinite integral.

Las integrales definidas se utilizan para encontrar área, volumen, centro de gravedad, momento de inercia, trabajo realizado por una fuerza y ​​en muchas otras aplicaciones.

Encontrar integrales indefinidas con MATLAB

Por definición, si la derivada de una función f (x) es f '(x), entonces decimos que una integral indefinida de f' (x) con respecto a x es f (x). Por ejemplo, dado que la derivada (con respecto a x) de x 2 es 2x, podemos decir que una integral indefinida de 2x es x 2 .

En símbolos -

f'(x2) = 2x, por lo tanto,

∫ 2xdx = x2.

La integral indefinida no es única, porque la derivada de x 2 + c, para cualquier valor de una constante c, también será 2x.

Esto se expresa en símbolos como:

∫ 2xdx = x2 + c.

Donde, c se llama una 'constante arbitraria'.

MATLAB proporciona una intcomando para calcular la integral de una expresión. Para derivar una expresión para la integral indefinida de una función, escribimos:

int(f);

Por ejemplo, de nuestro ejemplo anterior:

syms x 
int(2*x)

MATLAB ejecuta la declaración anterior y devuelve el siguiente resultado:

ans =
   x^2

Ejemplo 1

En este ejemplo, busquemos la integral de algunas expresiones de uso común. Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

syms x n

int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
   -cos(n*t)/n
   ans =
   (a*sin(pi*t))/pi
   ans =
   a^x/log(a)

Ejemplo 2

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))
int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))
int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))

Tenga en cuenta que el pretty La función devuelve una expresión en un formato más legible.

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   sin(x)
 
ans =
   exp(x)
 
ans =
   x*(log(x) - 1)
 
ans =
   log(x)
 
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
                                    2             4 
   24 cos(5 x)   24 x sin(5 x)   12 x  cos(5 x)   x  cos(5 x) 
   ----------- + ------------- - -------------- + ------------ 
      3125            625             125              5 
   
        3             5 
 
   4 x  sin(5 x)   x  sin(5 x) 
   ------------- + ----------- 
         25              5
 
ans =
-1/(4*x^4)
 
ans =
tan(x)
        2 
  x (3 x  - 5 x + 1)
 
ans = 
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
 
      6      5      4    3 
    7 x    3 x    5 x    x 
  - ---- - ---- + ---- + -- 
     12     5      8     2

Encontrar integrales definidas usando MATLAB

Por definición, la integral definida es básicamente el límite de una suma. Usamos integrales definidas para encontrar áreas como el área entre una curva y el eje xy el área entre dos curvas. Las integrales definidas también se pueden usar en otras situaciones, donde la cantidad requerida se puede expresar como el límite de una suma.

los int La función se puede utilizar para una integración definida pasando los límites sobre los que desea calcular la integral.

Calcular

nosotros escribimos,

int(x, a, b)

Por ejemplo, para calcular el valor de

escribimos:

int(x, 4, 9)

MATLAB ejecuta la declaración anterior y devuelve el siguiente resultado:

ans =
   65/2

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);

a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));

Octave ejecuta el código y devuelve el siguiente resultado:

Area: 

   32.500

Se puede dar una solución alternativa usando la función quad () proporcionada por Octave de la siguiente manera:

pkg load symbolic
symbols

f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);

display('Area: '), disp(double(a));

Octave ejecuta el código y devuelve el siguiente resultado:

Area: 
   32.500

Ejemplo 1

Calculemos el área encerrada entre el eje x, y la curva y = x 3 −2x + 5 y las ordenadas x = 1 y x = 2.

El área requerida viene dada por:

Cree un archivo de secuencia de comandos y escriba el siguiente código:

f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));

Cuando ejecuta el archivo, muestra el siguiente resultado:

a =
23/4
Area: 
   5.7500

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);

a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));

Octave ejecuta el código y devuelve el siguiente resultado:

Area: 

   5.7500

Se puede dar una solución alternativa usando la función quad () proporcionada por Octave de la siguiente manera:

pkg load symbolic
symbols

x = sym("x");
f = inline("x^3 - 2*x +5");

[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));

Octave ejecuta el código y devuelve el siguiente resultado:

Area: 
   5.7500

Ejemplo 2

Encuentre el área bajo la curva: f (x) = x 2 cos (x) para −4 ≤ x ≤ 9.

Cree un archivo de script y escriba el siguiente código:

f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

Cuando ejecuta el archivo, MATLAB traza el gráfico:

La salida se da a continuación:

a = 
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

A continuación se muestra el equivalente en octava del cálculo anterior:

pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));

MATLAB representa polinomios como vectores de fila que contienen coeficientes ordenados por potencias descendentes. Por ejemplo, la ecuación P (x) = x 4 + 7x 3 - 5x + 9 podría representarse como -

p = [1 7 0 -5 9];

Evaluación de polinomios

los polyvalLa función se utiliza para evaluar un polinomio en un valor especificado. Por ejemplo, para evaluar nuestro polinomio anteriorp, en x = 4, escriba -

p = [1 7 0  -5 9];
polyval(p,4)

MATLAB ejecuta las declaraciones anteriores y devuelve el siguiente resultado:

ans = 693

MATLAB también proporciona polyvalmfunción para evaluar un polinomio matricial. Un polinomio matricial es unpolynomial con matrices como variables.

Por ejemplo, creemos una matriz cuadrada X y evaluemos el polinomio p, en X -

p = [1 7 0  -5 9];
X = [1 2 -3 4; 2 -5 6 3; 3 1 0 2; 5 -7 3 8];
polyvalm(p, X)

MATLAB ejecuta las declaraciones anteriores y devuelve el siguiente resultado:

ans =
      2307       -1769        -939        4499
      2314       -2376        -249        4695
      2256       -1892        -549        4310
      4570       -4532       -1062        9269

Encontrar las raíces de los polinomios

los rootsLa función calcula las raíces de un polinomio. Por ejemplo, para calcular las raíces de nuestro polinomio p, escriba -

p = [1 7 0  -5 9];
r = roots(p)

MATLAB ejecuta las declaraciones anteriores y devuelve el siguiente resultado:

r =
   -6.8661 + 0.0000i
   -1.4247 + 0.0000i
   0.6454 + 0.7095i
   0.6454 - 0.7095i

La función polyes una función inversa de la función de raíces y vuelve a los coeficientes del polinomio. Por ejemplo

p2 = poly(r)

MATLAB ejecuta las declaraciones anteriores y devuelve el siguiente resultado:

p2 =

   Columns 1 through 3:

      1.00000 + 0.00000i   7.00000 + 0.00000i   0.00000 + 0.00000i

   Columns 4 and 5:

      -5.00000 - 0.00000i   9.00000 + 0.00000i

Ajuste de curva polinomial

los polyfitLa función encuentra los coeficientes de un polinomio que se ajusta a un conjunto de datos en un sentido de mínimos cuadrados. Si xey son dos vectores que contienen los datos xey que se van a ajustar a un polinomio de n grados, entonces obtenemos el polinomio que ajusta los datos escribiendo:

p = polyfit(x,y,n)

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

x = [1 2 3 4 5 6]; y = [5.5 43.1 128 290.7 498.4 978.67];   %data
p = polyfit(x,y,4)   %get the polynomial

% Compute the values of the polyfit estimate over a finer range, 
% and plot the estimate over the real data values for comparison:
x2 = 1:.1:6;          
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)
grid on

Cuando ejecuta el archivo, MATLAB muestra el siguiente resultado:

p =
   4.1056  -47.9607  222.2598 -362.7453  191.1250

Y traza el siguiente gráfico:

MATLAB proporciona comandos para trabajar con transformaciones, como las transformadas de Laplace y Fourier. Las transformaciones se utilizan en ciencia e ingeniería como una herramienta para simplificar el análisis y observar los datos desde otro ángulo.

Por ejemplo, la transformada de Fourier nos permite convertir una señal representada en función del tiempo en función de la frecuencia. La transformada de Laplace nos permite convertir una ecuación diferencial en una ecuación algebraica.

MATLAB proporciona la laplace, fourier y fft comandos para trabajar con transformadas de Laplace, Fourier y Fast Fourier.

La Transformada de Laplace

La transformada de Laplace de una función del tiempo f (t) viene dada por la siguiente integral:

La transformada de Laplace también se denota como transformada de f (t) en F (s). Puede ver que este proceso de transformación o integración convierte f (t), una función de la variable simbólica t, en otra función F (s), con otra variable s.

La transformada de Laplace convierte las ecuaciones diferenciales en algebraicas. Para calcular una transformada de Laplace de una función f (t), escriba -

laplace(f(t))

Ejemplo

En este ejemplo, calcularemos la transformada de Laplace de algunas funciones de uso común.

Cree un archivo de secuencia de comandos y escriba el siguiente código:

syms s t a b w

laplace(a)
laplace(t^2)
laplace(t^9)
laplace(exp(-b*t))
laplace(sin(w*t))
laplace(cos(w*t))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   1/s^2

ans =
   2/s^3

ans =
   362880/s^10

ans =
   1/(b + s)
  
ans =
   w/(s^2 + w^2)
  
ans =
   s/(s^2 + w^2)

La transformada inversa de Laplace

MATLAB nos permite calcular la transformada inversa de Laplace usando el comando ilaplace.

Por ejemplo,

ilaplace(1/s^3)

MATLAB ejecutará la declaración anterior y mostrará el resultado:

ans =
   t^2/2

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código:

syms s t a b w

ilaplace(1/s^7)
ilaplace(2/(w+s))
ilaplace(s/(s^2+4))
ilaplace(exp(-b*t))
ilaplace(w/(s^2 + w^2))
ilaplace(s/(s^2 + w^2))

Cuando ejecuta el archivo, muestra el siguiente resultado:

ans =
   t^6/720

ans =
   2*exp(-t*w)

ans =
   cos(2*t)

ans =
   ilaplace(exp(-b*t), t, x)

ans =
   sin(t*w)

ans =
   cos(t*w)

Las transformadas de Fourier

La transformada de Fourier comúnmente transforma una función matemática del tiempo, f (t), en una nueva función, a veces denotada por o F, cuyo argumento es la frecuencia con unidades de ciclos / s (hercios) o radianes por segundo. La nueva función se conoce entonces como la transformada de Fourier y / o el espectro de frecuencia de la función f.

Ejemplo

Cree un archivo de secuencia de comandos y escriba el siguiente código en él:

syms x 
f = exp(-2*x^2);     %our function
ezplot(f,[-2,2])     % plot of our function
FT = fourier(f)      % Fourier transform

Cuando ejecuta el archivo, MATLAB traza el siguiente gráfico:

Se muestra el siguiente resultado:

FT =
   (2^(1/2)*pi^(1/2)*exp(-w^2/8))/2

Trazando la transformada de Fourier como -

ezplot(FT)

Da el siguiente gráfico:

Transformadas inversas de Fourier

MATLAB proporciona la ifouriercomando para calcular la transformada de Fourier inversa de una función. Por ejemplo,

f = ifourier(-2*exp(-abs(w)))

MATLAB ejecutará la declaración anterior y mostrará el resultado:

f =
   -2/(pi*(x^2 + 1))

GNU Octave es un lenguaje de programación de alto nivel como MATLAB y es principalmente compatible con MATLAB. También se utiliza para cálculos numéricos.

Octave tiene las siguientes características comunes con MATLAB:

  • las matrices son tipos de datos fundamentales
  • tiene soporte incorporado para números complejos
  • tiene funciones matemáticas y bibliotecas integradas
  • admite funciones definidas por el usuario

GNU Octave también es un software de libre distribución. Puede redistribuirlo y / o modificarlo según los términos de la Licencia Pública General GNU (GPL) publicada por la Free Software Foundation.

MATLAB vs Octava

La mayoría de los programas de MATLAB se ejecutan en Octave, pero es posible que algunos de los programas de Octave no se ejecuten en MATLAB porque Octave permite cierta sintaxis que MATLAB no permite.

Por ejemplo, MATLAB solo admite comillas simples, pero Octave admite comillas simples y dobles para definir cadenas. Si está buscando un tutorial sobre Octave, lea este tutorial desde el principio, que cubre tanto MATLAB como Octave.

Ejemplos compatibles

Casi todos los ejemplos cubiertos en este tutorial son compatibles con MATLAB y con Octave. Intentemos seguir el ejemplo en MATLAB y Octave que produce el mismo resultado sin ningún cambio de sintaxis:

Este ejemplo crea un mapa de superficie 3D para la función g = xe - (x 2 + y 2 ) . Cree un archivo de secuencia de comandos y escriba el siguiente código:

[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps

Cuando ejecuta el archivo, MATLAB muestra el siguiente mapa 3D:

Ejemplos no compatibles

Aunque toda la funcionalidad principal de MATLAB está disponible en Octave, hay algunas funcionalidades, por ejemplo, Cálculo diferencial y de integración, que no coincide exactamente en ambos lenguajes. Este tutorial ha intentado dar ambos tipos de ejemplos en los que diferían en su sintaxis.

Considere el siguiente ejemplo donde MATLAB y Octave hacen uso de diferentes funciones para obtener el área de una curva: f (x) = x 2 cos (x) para −4 ≤ x ≤ 9. A continuación se muestra la versión MATLAB del código:

f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

Cuando ejecuta el archivo, MATLAB traza el gráfico:

Se muestra el siguiente resultado

a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

Pero para dar un área de la misma curva en una octava, tendrá que hacer uso de symbolic paquete de la siguiente manera -

pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));

Simulink es un entorno de diseño basado en modelos y simulación para sistemas dinámicos e integrados, integrado con MATLAB. Simulink, también desarrollado por MathWorks, es una herramienta de lenguaje de programación gráfica de flujo de datos para modelar, simular y analizar sistemas dinámicos multidominio. Básicamente es una herramienta gráfica de diagrama de bloques con un conjunto personalizable de bibliotecas de bloques.

Le permite incorporar algoritmos de MATLAB en modelos, así como exportar los resultados de la simulación a MATLAB para su posterior análisis.

Soportes de Simulink -

  • diseño a nivel de sistema
  • simulation
  • generación automática de código
  • prueba y verificación de sistemas integrados

Hay varios otros productos complementarios proporcionados por MathWorks y productos de hardware y software de terceros que están disponibles para su uso con Simulink.

La siguiente lista ofrece una breve descripción de algunos de ellos:

  • Stateflow permite desarrollar máquinas de estados y diagramas de flujo.

  • Simulink Coder permite la generación de código fuente C para la implementación de sistemas en tiempo real de forma automática.

  • xPC Target Juntos con x86-based real-time systems proporcionar un entorno para simular y probar modelos de Simulink y Stateflow en tiempo real en el sistema físico.

  • Embedded Coder admite objetivos integrados específicos.

  • HDL Coder permite generar automáticamente VHDL y Verilog sintetizables.

  • SimEvents proporciona una biblioteca de bloques de construcción gráficos para modelar sistemas de cola.

Simulink es capaz de realizar una verificación y validación sistemática de modelos mediante la verificación del estilo de modelado, la trazabilidad de requisitos y el análisis de cobertura del modelo.

Simulink Design Verifier le permite identificar errores de diseño y generar escenarios de casos de prueba para la verificación de modelos.

Usando Simulink

Para abrir Simulink, escriba en el espacio de trabajo de MATLAB:

simulink

Simulink abre con el Library Browser. El navegador de biblioteca se utiliza para crear modelos de simulación.

En el panel de la ventana del lado izquierdo, encontrará varias bibliotecas categorizadas según varios sistemas, al hacer clic en cada una se mostrarán los bloques de diseño en el panel de la ventana de la derecha.

La construcción de modelos

Para crear un nuevo modelo, haga clic en el Newen la barra de herramientas del navegador de la biblioteca. Esto abre una nueva ventana de modelo sin título.

Un modelo de Simulink es un diagrama de bloques.

Los elementos del modelo se agregan seleccionando los elementos apropiados del navegador de la biblioteca y arrastrándolos a la ventana del modelo.

Alternativamente, puede copiar los elementos del modelo y pegarlos en la ventana del modelo.

Ejemplos

Arrastre y suelte elementos de la biblioteca de Simulink para crear su proyecto.

A los efectos de este ejemplo, se utilizarán dos bloques para la simulación: A Source (una señal) y un Sink(un alcance). Un generador de señales (la fuente) genera una señal analógica, que luego será visualizada gráficamente por el osciloscopio (el sumidero).

Comience arrastrando los bloques necesarios desde la biblioteca a la ventana del proyecto. Luego, conecte los bloques entre sí, lo que se puede hacer arrastrando los conectores desde los puntos de conexión de un bloque a los de otro.

Arrastremos un bloque 'Sine Wave' en el modelo.

Seleccione 'Fregaderos' de la biblioteca y arrastre un bloque 'Alcance' en el modelo.

Arrastre una línea de señal desde la salida del bloque Sine Wave hasta la entrada del bloque Scope.

Ejecute la simulación presionando el botón 'Run', manteniendo todos los parámetros predeterminados (puede cambiarlos desde el menú Simulación)

Debería obtener el siguiente gráfico del alcance.