Función de transferencia
Una función de transferencia es un modelo matemático que a través de un cociente relaciona la respuesta de un sistema (modelada) a una señal de entrada o excitación (también modelada).
El cociente formado por los modelos de la señal de salida respecto de la señal de entrada, permite encontrar los ceros y los polos, respectivamente. Y que representan las raíces en las que cada uno de los modelos del cociente se iguala a cero. Es decir, representa la región frontera a la que no debe llegar ya sea la respuesta del sistema o la excitación al mismo; ya que de lo contrario llegará ya sea a la región nula o se irá al infinito, respectivamente.
Considerando la temporalidad; es decir, que la excitación al sistema tarda un tiempo en generar sus efectos en el sistema en cuestión y que éste tarda otro tiempo en dar respuesta. Esta condición es vista a través de un proceso de convolución, formado por la excitación de entrada convolucionada con el sistema considerado, dando como resultado, la respuesta dentro de un intervalo de tiempo. Ahora, en ese sentido (el de la convolución), se tiene que observar que la función de transferencia está formada por la de convolución entre la señal de entrada con el sistema. Dando como resultado la descripción externa de la operación del sistema considerado. De forma que el proceso de contar con la función de transferencia del sistema a través de la de convolución, se logra de forma matricial o vectorial, considerando la pseudoinversa de la matriz o vector de entrada multiplicado por el vector de salida, para describir el comportamiento del sistema dentro de un intervalo dado. Pareciera un proceso complicado, aunque solo baste ver que la convolución discreta es representada por un producto de una vector o matriz fija respecto de una matriz o vector móvil, o que en forma tradicional se observa como una sumatoria.
Uno de los primeros matemáticos en describir estos modelos fue Laplace, a través de su transformación matemática.
Por definición una función de transferencia se puede determinar según la expresión:
donde H (s) es la función de transferencia (también notada como G (s) ); Y (s) es la transformada de Laplace de la respuesta y U (s) es la transformada de Laplace de la señal de entrada.
La función de transferencia también puede considerarse como la respuesta de un sistema inicialmente inerte a un impulso como señal de entrada:
La salida o respuesta en frecuencia del sistema se halla entonces de
y la respuesta como función del tiempo se halla con la transformada de Laplace inversa de Y(s):
Cualquier sistema físico (mecánico, eléctrico, etc.) se puede traducir a una serie de valores matemáticos a través de los cuales se conoce el comportamiento de estos sistemas frente a valores concretos.
Por ejemplo, en análisis de circuitos eléctricos, la función de transferencia se representa como:
Funciones de transferencia
Una función de transferencia de una red es el cociente entre un fasor de respuesta y un fasor de excitación, que pueden o no estar definidos en el mismo par de nodos.
Un ejemplo de funciones de transferencia es una admitancia o una impedancia: , .
Estas funciones de transferencia tienen dimensiones. La primera dimension es de y la segunda de . Hay también funciones de transferencia adimensionales: función de transferencia de voltaje (V2/V1), de corriente (I2/I1)
Funciones de entrada
Funciones de transferencia
impedancia de entrada
admitancia de entrada
impedancia de transferencia
transferencia de voltaje
transferencia de corriente
Ejemplo - Filtro paso bajo
Si tenemos el siguiente circuito:
Si calculamos la función de transferencia de voltaje:
Esto representado queda:
Se ve cómo la función de transferencia es prácticamente 1 (v2 = v1) a frecuencias pequeñas, y prácticamente 0 (v2 = 0) a frecuencias elevadas. Esto hace que lo que tengamos sea un filtro paso bajo.
Viendo la gráfica de la fase se ve cómo v2 estará atrasada siempre respecto a v1, desde 0º a 90º de atraso. Es por tanto una red de atraso.
Frecuencia a 3dB: es aquella a la que una magnitud disminuye en 0'707 (es decir se divide entre ). A esta frecuencia la potencia se reduce a la mitad.
En la expresión:
Ejemplo - Filtro paso alto
En este segundo ejemplo tenemos el siguiente circuito:
La función de transferencia es:
Representando la función obtenemos que queda de la siguiente forma:
El módulo del fasor v2 aumenta con la pulsación y es nulo a =0, esto quiere decir que deja pasar las altas frecuencias. Es un filtro paso alto.
En la gráfica de fase se ve que varía de 90º (a =0) hasta 0º a altas frecuenciar. v2 estará adelantado a v1, tenemos una red de adelanto (en realidad esto es sólo en apariencia ya que lo que se hace es desfasar entre -270º y -360º).
Casos generales
En general podemos encontrarnos en alguno de los siguientes casos al tener una función v2/v1. Si la representamos en función de :
Filtro paso bajo
Filtro paso alto
Filtro paso banda
Ancho de banda: es el margen de frecuencias que deja pasar un circuito. En el filtro paso-alto es infinito mientras que en el paso-bajo es 1 - 0 = 1. En el paso-banda es 2 - 1.
Aplicación interactiva sobre filtros.
A continuación se puede acceder a una aplicación interactiva que muestra los filtros paso bajo y paso alto que se pueden realizar mediante un único condensador y una resistencia. En ella se pueden variar los valores de los distintos elementos del circuito y se muestra la función de transferencia del circuito así como la frecuencia de corte. Los únicos parámetros que puede modificar el usuario son:
· R y C: el valor de la resistencia y del condensador respectivamente que forman los filtros simples utilizados en la aplicación.
· Escoger entre un filtro paso bajo o paso alto.
Ejemplo - Filtro activo
En el siguiente ejemplo vamos a ver cómo calcular la función de transferencia V2/V1 en régimen permanente senoidal del siguiente filtro activo:
Ya sabemos que el circuito:
es equivalente a:
Así que si sustituimos el operacional en el circuito siguiendo la anterior equivalencia tendremos:
Si analizamos por nodos:
En el nodo C relacionamos el voltaje V2 con VB
Al final como resultado nos queda la función de transferencia:
En general se expresará la función de transferencia como un cociente de polinomios de la forma:
También como se ha visto en el ejemplo se suele normalizar el polinomio. Es decir se suele dividir el numerador y el denominador por D. De esta forma el coeficiente de es de 1.
Características
Las características que definen un filtro vienen determinadas por los siguientes conceptos:
Función de transferencia
Con independencia de la realización concreta del filtro (analógico, digital o mecánico) la forma de comportarse de un filtro se describe por su función de transferencia. Ésta determina la forma en que la señal aplicada cambia en amplitud y en fase al atravesar el filtro. La función de transferencia elegida tipifica el filtro. Algunos filtros habituales son:
Filtro de Butterworth, con una banda de paso suave y un corte agudo
Filtro de Chebyshev, con un corte agudo pero con una banda de paso con ondulaciones
Filtros elípticos o filtro de Cauer, que consiguen una zona de transición más abrupta que los anteriores a costa de oscilaciones en todas sus bandas
Filtro de Bessel, que, en el caso de ser analógico, aseguran una variación de fase constante
Se puede llegar a expresar matemáticamente la función de transferencia en forma de fracción mediante las transformaciones en frecuencia adecuadas. Se dice que los valores que hacen nulo el numerador son los ceros y los que hacen nulo el denominador son polos.
El número de polos y ceros indica el orden del filtro y su valor determina las características del filtro, como su respuesta en frecuencia y su estabilidad.
Orden
El orden de un filtro describe el grado de aceptación o rechazo de frecuencias por arriba o por debajo, de la respectiva frecuencia de corte. Un filtro de primer orden, cuya frecuencia de corte sea igual a (F), presentará una atenuación de 6 dB en la primera octava (2F), 12 dB en la segunda octava (4F), 18 dB en la tercer octava (8F) y así sucesivamente. Uno de segundo orden tendría el doble de pendiente (representado en escala logarítmica). Esto se relaciona con los polos y ceros: los polos hacen que la pendiente baje con 20 dB por década y los ceros que suba también con 20 dB por década, de esta forma los polos y ceros pueden compensar su efecto.
Para realizar filtros analógicos de órdenes más altos se suele realizar una conexión en serie de filtros de 1º o 2º orden debido a que a mayor orden el filtro se hace más complejo. Sin embargo, en el caso de filtros digitales es habitual obtener órdenes superiores a 100.
Tipos de filtro
Atendiendo a sus componentes constitutivos, naturaleza de las señales que tratan, respuesta en frecuencia y método de diseño, los filtros se clasifican en los distintos grupos que a continuación se indica.
Según respuesta frecuencia
Filtro paso bajo: Es aquel que permite el paso de frecuencias bajas, desde frecuencia 0 o continua hasta una determinada. Presentan ceros a alta frecuencia y polos a bajas frecuencia.
Filtro paso alto: Es el que permite el paso de frecuencias desde una frecuencia de corte determinada hacia arriba, sin que exista un límite superior especificado. Presentan ceros a bajas frecuencias y polos a altas frecuencias.
Filtro paso banda: Son aquellos que permiten el paso de componentes frecuenciales contenidos en un determinado rango de frecuencias, comprendido entre una frecuencia de corte superior y otra inferior.
Filtro Atenua banda: También llamado filtro rechaza banda, es el que dificulta el paso de componentes frecuenciales contenidos en un determinado rango de frecuencias, comprendido entre una frecuencia de corte superior y otra inferior.
Filtro multibanda: Es que presenta varios rangos de frecuencias en los cuales hay un comportamiento diferente.
Filtro variable: Es aquel que puede cambiar sus márgenes de frecuencia.
Filtros activos y pasivos
Filtro pasivo: Es el constituido únicamente por componentes pasivos como condensadores, bobinas y resistencias.
Filtro activo: Es aquel que puede presentar ganancia en toda o parte de la señal de salida respecto a la de entrada. En su implementación se combinan elementos activos y pasivos. Siendo frecuente el uso de amplificadores operacionales, que permite obtener resonancia y un elevado factor Q sin el empleo de bobinas.
Filtros analógicos o digitales
Atendiendo a la naturaleza de las señales tratadas los filtros pueden ser:
Filtro analógico: Diseñado para eltratamiento de señales analógicas.
Filtro digital: Diseñado para el tratamiento de señales digitales.
Otros filtros
Filtro piezoeléctrico Es aquel que aprovecha las propiedades resonantes de determinados materiales como el cuarzo.
Otro tipo de filtro puede ser la ferrita que hay en muchos cables, por ejemplo en el de las pantallas de ordenador, que tiene la propiedad de presentar distinta impedancia a alta y baja frecuencia.
domingo, 26 de julio de 2009
miércoles, 15 de julio de 2009
lunes, 13 de julio de 2009
domingo, 12 de julio de 2009
CONVOLUCION
Convolución
Se denomina convolución a una función, que de forma lineal y continua, transforma una señal de entrada en una nueva señal de salida. La función de convolución se expresa por el símbolo *.
En un sistema unidimensional, se dice que g(x) convoluciona f(x) cuando
donde x’ es una variable de integración.
El resultado de g(x) depende únicamente del valor de f(x) en el punto x, pero no de la posición de x. Es la propiedad que se denomina invariante respecto la posición (position-invariant) y es condición necesaria en la definición de las integrales de convolución.
En el caso de una función continua, bidimensional, como es el caso de una imagen monocroma, la convolución de f(x,y) por g(x,y) será:
Convolución en un dispositivo óptico (microscopio de fluorescencia, corte longitudinal de una imagen 3D)
Convolución de dos Pulsos Cuadrados (La función resultante termina siendo un Pulso Triangular). Animación realizada por Lautaro Carmona con el Mathematica v5.0
Convolución de un Pulso Cuadrado (como señal de entrada) con la respuesta al impulso de un capacitor para obtener la señal de salida (respuesta del capacitor a dicha señal). Animación realizada por Lautaro Carmona con el Mathematica v5.0
En matematicas y, en particular, analisis funcional, una convolución es un operador matemático que transforma dos funciones f y g en una tercera función que en cierto sentido representa la magnitud en la que se superponen f y una versión trasladada e invertida de g. Una convolución es un tipo muy general de promedio movil, como se puede observar si una de las funciones la tomamos como la funcion caracteristica de un intervalo.
Tipos de Convolución
Convolucion Discreta
Cuando se trata de hacer un procesamiento digital de señal no tiene sentido hablar de convoluciones aplicando estrictamente la definición ya que solo disponemos de valores en instantes discretos de tiempo. Es necesario, pues, una aproximación numérica. Para realizar la convolución entre dos señales, se evaluará el área de la función : . Para ello, disponemos de muestreos de ambas señales en los instantes de tiempo , que llamaremos y (donde n y k son enteros).
Convolución Circular
Cuando una función gT es periódica, con un periodo de T, entonces las funciones, f, tales como f*gT existentes, su convolución es también periódica i igual a:
Donde se escoge arbitrariamente.
Si gT es una extensión periodica de otra función, g, entonces f*gT se sabe que es circular, cíclica, o periodica de una convolución de f i g.
Mètodo para calcular la convolución circular:
Tenemos 2 circulos, uno exterior y otro interior. Vamos girando el círculo interior i sumando sus valores. Si los dos círculos tienen diferentes tamaños, entonces el más pequeño le añadimos "0" al inicio, al final o al inicio y final.
[L >= L1 + L2-1]
Mètodo para calcular la convolución circular:
Tenemos 2 circulos, uno exterior y otro interior. Vamos girando el círculo interior i sumando sus valores. Si los dos círculos tienen diferentes tamaños, entonces el más pequeño le añadimos "0" al inicio, al final o al inicio y final.
[L >= L1 + L2-1]
MODULACION
MODULACIÓN
Muchas señales de entrada no pueden ser enviadas directamente hacia el canal, como vienen del transductor. Para eso se modifica una onda portadora, cuyas propiedades se adaptan mejor al medio de comunicación en cuestión, para representar el mensaje.
"La modulación es la alteración sistemática de una onda portadora de acuerdo con el mensaje (señal modulada) y puede ser también una codificación"
"Las señales de banda base producidas por diferentes fuentes de información no son siempre adecuadas para la transmisión directa a través de un a canal dado. Estas señales son en ocasiones fuertemente modificadas para facilitar su transmisión."
Una portadora es una senoide de alta frecuencia, y uno de sus parámetros (tal como la amplitud, la frecuencia o la fase) se varía en proporción a la señal de banda base s(t). De acuerdo con esto, se obtiene la modulación en amplitud (AM), la modulación en frecuencia (FM), o la modulación en fase (PM). La siguiente figura muestra una señal de banda base s(t) y las formas de onda de AM y FM correspondientes. En AM la amplitud de la portadora varia en proporción a s(t), y en FM, la frecuencia de la portadora varia en proporción a s(t).
¿ QUE TIPOS DE MODULACIÓN EXISTEN ?
Existen básicamente dos tipos de modulación: la modulación ANALÓGICA, que se realiza a partir de señales analógicas de información, por ejemplo la voz humana, audio y video en su forma eléctrica y la modulación DIGITAL, que se lleva a cabo a partir de señales generadas por fuentes digitales, por ejemplo una computadora.
Modulación Analógica: AM, FM, PM
Modulación Digital: ASK, FSK, PSK, QAM
En este capitulo se encuentran resumidas las nociones básicas para comprender el proceso que sufre una información que se desea hacer llegar a un corresponsal a través de una señal de radio , ya sea esta un voz , una imagen o bien datos informáticos , pues todo resulta a efectos de transmisión sonido. La modulación nace de la necesidad de transportar una información a través del espacio. Este es un proceso mediante el cual dicha información (onda moduladora) se inserta a un soporte de transmisión
miércoles, 10 de junio de 2009
Maple
Maple
Maple es un programa matemático de propósito general capaz de realizar cálculos simbólicos, algebraicos y de álgebra computacional. Fue desarrollado originalmente en 1981 por el Grupo de Cálculo Simbólico en la Universidad de Waterloo en Waterloo, Ontario, Canadá.
Introducción
Maple es un lenguaje de programación interpretado. Las expresiones simbólicas son almacenadas en memoria como grafos dirigidos sin ciclos (ver Grafos, Teoría de Grafos)
Desde 1988 ha sido mejorado y vendido comercialmente por Waterloo Maple Inc. (también conocida como Maplesoft), una compañía canadiense con sede en Waterloo, Ontario. La última versión es Maple 13.
Origen del nombre
Su nombre no es una abreviatura ni un acrónimo, sino que se debe a que Maple fue hecho en Canadá, cuya bandera tiene una hoja de arce (maple en inglés).
Código de ejemplo en Maple
Las siguientes líneas de código calculan la solución exacta de una ecuación lineal diferencial ordinaria:
Sujeto a las condiciones iniciales:
dsolve( {diff(y(x),x, x) - 3*y(x) = x, y(0)=0, D(y)(0)=2}, y(x) );
Raíz cuadrada del número 2 hasta 20 cifras decimales:
> sqrt(2) = evalf (sqrt(2), 21);
Simplificación de fracciones:
> simplify (35/42 - 5/30);
Solución de ecuaciones cuadráticas:
> solve (3*x^2 + b*x = 7, x);
Solución de ecuaciones diferenciales simbólicas:
> f:= x -> tan(x)*sqrt(x):
> D(f)(x);
Funciones integrales, solución simbólica, y solución numérica:
> Int (sin(x)^2, x);
> value (%);
> int (sin(x)^2, x = 0..Pi/2);
Evaluación de ecuaciones diferenciales lineales en forma simbólica y numérica:
> DGL:= diff (y(x),x, x) - 3*y(x) = x:
> DGL;
> dsolve ({DGL, y(0)=1, D(y)(0)=2}, y(x));
Historial de Versiones
Maple 13: Abril, 2009
Maple 12: Junio, 2008
Maple 11: Febrero, 2007
Maple 10: Mayo, 2005
Maple 9.5: Abril, 2004
Maple 9: Junio, 2003
Maple 8: Abril, 2002
Maple 7: Julio, 2001
Maple 6: Diciembre, 1999
Maple V R5: Noviembre, 1997
Maple V R4: Enero, 1996
Maple V R3: Marzo], 1994
Maple V R2: Noviembre 1992
Maple V: Agosto, 1990
Maple 4.3: Marzo, 1989
Maple 4.2: Diciembre, 1987
Maple 4.1: Mayo, 1987
Maple 4.0: Abril, 1986
Maple 3.3: Marzo, 1985 (primera versión disponible públicamente)
Maple 3.2: Abril, 1984
Maple 3.1: Octubre, 1983
Maple 3.0: Mayo, 1983
Maple 2.2: Diciembre, 1982
Maple 2.15: Agosto, 1982
Maple 2.1: Junio, 1982
Maple 2.0: Mayo, 1982
Maple 1.1: Enero, 1982
Maple 1.0: Enero, 1982
Desde 1994, MathCad ha incluido un motor de álgebra derivado de Maple, Núcleo Mathsoft de Maple MKN por sus siglas en inglés (MKN, Mathsoft Kernel Maple).
Versiones disponibles
Maplesoft vende Maple tanto en versiones profesionales como de estudiantes. (en EE. UU. desde US$99 para estudiantes, hasta US$1995 en versiones profesionales)
Desde la versión 6 y más recientes, las versiones para estudiantes no tienen limitaciones en poder de cómputo, pero sí vienen con menos documentación impresa. La situación es bastante similar para el programa Mathematica.
En versiones anteriores a la 6, la versión de estudiante tenía las siguientes limitaciones:
Un máximo de uso de 100 dígitos en punto flotante para cálculos
Un tamaño máximo de 8.000 para cualquier objeto algebraico (8.000 en objetos o largo de palabras máquina)
Un máximo de 3 para los arreglos vectoriales (arrays)
MATLAB
MATLAB
(abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Apple Mac OS X.
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques (blocksets).
Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la de programar directamente procesadores digitales de señal o crear código VHDL.
Historia
Fue creado por The MathWorks en 1984, surgiendo la primera versión con la idea de emplear paquetes de subrutinas escritas en Fortran en los cursos de álgebra lineal y análisis numérico, sin necesidad de escribir programas en dicho lenguaje. El lenguaje de programación M fue creado en 1970 para proporcionar un sencillo acceso al software de matrices LINPACK y EISPACK sin tener que usar Fortran.
En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en ámbitos académicos y empresariales.[2]
Sintaxis
MATLAB es un programa de cálculo numérico orientado a matrices. Por tanto, será más eficiente si se diseñan los algoritmos en términos de matrices y vectores.
Ejemplos
Hello World
Éste es el tradicional programa Hello World hecho con el lenguaje de MATLAB:>> disp('Hola mundo'); % Muestra el mensaje.Hola mundo
Diseño de filtros digitales
En este ejemplo se diseña un filtro digital paso bajo de Butterworth y se muestra el módulo de su espectro:close all
% Cierra todas las ventanas.clear all % Borra todas las variables del espacio de trabajo.clc % Limpia la pantalla. Fc=200; % Frecuencia de corte.Fm=1000; % Frecuencia de muestreo.BT=100; % Banda de transición.Rs=40; % Ganancias.rs=10^(-Rs/20);Rp=2;rp=(10^(Rp/20)-1)/(10^(Rp/20)+1); [n1b,wn1]=buttord(2*Fc/Fm,2*(Fc+BT)/Fm,Rp,Rs); % Orden del filtro (función buttord).[B1,A1]=butter(n1b,wn1); % Coeficientes del filtro (función butter).h1=freqz(B1,A1); % Respuesta en frecuencia (función freqz).plot(abs(h1)) % Representación de la respuesta.
Cajas de herramientas y Paquetes de bloques
Las funcionalidades de Matlab se agrupan en más de 35 cajas de herramientas y paquetes de bloques (para Simulink), clasificadas en las siguientes categorías:
MATLAB (Cajas de herramientas)
Simulink
Matemáticas y Optimización
Modelado de punto fijo
Estadística y Análisis de datos
Modelado basado en eventos
Diseño de sistemas de control y análisis
Modelado físico
Procesado de señal y comunicaciones
Gráficos de simulación
Procesado de imagen
Diseño de sistemas de control y análisis
Pruebas y medidas
Procesado de señal y comunicaciones
Biología computacional
Generación de código
Modelado y análisis financiero
Prototipos de control rápido y SW/HW HIL
Desarrollo de aplicaciones
Tarjetas integradas
Informes y conexión a bases de datos
Verificación, validación y comprobación
Limitaciones y alternativas
Durante mucho tiempo hubo críticas porque MATLAB es un producto propietario de The Mathworks, ya que los usuarios están sujetos a un vendor lock-in. Recientemente se ha proporcionado una herramienta adicional llamada MATLAB Builder bajo la sección de herramientas Application Deployment para utilizar funciones MATLAB como archivos de biblioteca que pueden ser usados con ambientes de construcción de aplicación .NET o Java. Pero la desventaja es que el computador donde la aplicación tiene que ser utilizada necesita MCR(MATLAB Component Runtime) para que los archivos MATLAB funcionen correctamente. MCR puede ser distribuido libremente con archivos de biblioteca generados por el compilador MATLAB.
LabVIEW
GNU Octave
SAS
Scilab
Mathcad
SciPy & Numerical Python
Lenguaje R
Álgebra computacional:
Véase Anexo:Programas de álgebra computacional
Llamar funciones C y Fortran
MATLAB puede llamar funciones y subrutinas escritas en C o Fortran. Se crea una función envoltorio que permite que sean pasados y devueltos tipos de datos de MATLAB. Los archivos objeto dinámicamente cargables creados compilando esas funciones se denominan "MEX-files", aunque la extensión de nombre de archivo depende del sistema operativo y del procesador.function [fa,dfa]=funcion_y_derivada(x)fa=0;n=1;h=1;dfa=0;while (n <= (10*(x-(1/2))^2) + 10) fa=fa+(((-x^2)^n)/factorial(2*n)); h=h/2; dfa=dfa+(((((-(x+h)^2)^n)/factorial(2*n))-(((-x^2)^n)/factorial(2*n)))/h); n=n+1;endfunction v=aproxima_derivada2(funci,a)syms x;i=1;h=1;v(i)=(subs(funci,a+h)+subs(funci,a-h)-(2*subs(funci,a)))/(h^2);error=1;while(error>1e-10) h=h/2; i=i+1; v(i)=(subs(funci,a+h)+subs(funci,a-h)-(2*subs(funci,a)))/(h^2); error= abs(v(i)-v(i-1));end
¿Qué es MATLAB?
MATLAB = 'MATrix LABoratory' (LABORATORIO DE MATRICES).
MATLAB es un medio computacional técnico, con un gran desempeño para el cálculo numérico computacional y de visualización.
MATLAB integra análisis numérico, matrices, procesamiento de señales y gráficas, todo esto en un ambiente donde los problemas y soluciones son expresados tal como se escriben matemáticamente.
Escrito inicialmente como auxiliar en la programación de cálculo con matrices.
MATLAB fue escrito originalmente en fortran, actualmente está escrito en lenguaje C.
MATLAB es un lenguaje de programación amigable al usuario con características más avanzadas y mucho más fáciles de usar que los lenguajes de programación como basic, pascal o C.
Actualmente van en la versión 5.2.
MATLAB cuenta con paquetes de funciones especializadas llamadas toolboxes.
Toolboxes de MATLAB
Control system Toolbox, Robust Control Toolbox
Frequency Domain System Identification Toolbox
Fuzzy Logic Toolbox
Higher Order Spectral Analisys Toolbox
Image Processing Toolbox
Model Predective Control Toolbox
Mu Analisis and Synthesis Toolbox
NAG Foundation Toolbox
Neural Network Toolbox
Nonlinear Control Design Toolbox
Optimization Toolbox
Quantitative Feedback Theory Toolbox
Signal Processing Toolbox
SIMULINK, SIMULINK Real Time Workshop
Spline Toolbox
Statistics Toolbox
Symbolic Math Toolbox
System Identification Toolbox.
Inicio de MATLAB
MATLAB se inicia directamente desde Windows.
Al invocarse MATLAB aparecerá la pantalla de comandos, algunas sugerencias y el símbolo >> , el cual indica la entrada de instrucciones para ser evaluadas.
>>
>> Comando o instrucción a evaluar <>
Para hacer la suma de dos números, escribimos :
>> 5 + 5 <> Presionamos la tecla entrar.
ans =
10
El resultado es desplegado y se guarda en la variable ans (answer).
NOTA : En este tutorial el símbolo >> desaparecerá, y será reemplazado por un par de corchetes con la instrucción dentro de ellos. [ 5 + 5 ]. La instrucción aparecerá en color verde.
Para poder ver ejecutarse la instrucción, debemos ponernos en el renglón donde está la instrucción o marcarla con el ratón y presionar al mismo tiempo las teclas.
Otra forma de evaluar una instrucción, es poner el apuntador del ratón entre los corchetes de la instrucción y presionar el botón derecho del ratón; aparecerá un menú del cual se tiene que escoger evaluar celda.
Hagamos la prueba con el renglón inmediato.
La respuesta es desplegada en color azul y entre corchetes.
Help
El comando help proporciona una lista de todos los tópicos que MATLAB puede proporcionar ayuda.
help 'comando' proporciona ayuda sobre el comando especificado.
help sqrt
proporciona ayuda sobre la instrucción sqrt. Ejemplo:
» help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.
See also SQRTM
¿Cómo funciona MATLAB?
MATLAB puede almacenar información en variables tales como :
a = 100 "
Cada vez que capturamos información en MATLAB y presionamos
Por ejemplo :
Si se quiere saber el valor de alguna variable capturada sólo se tiene que poner el nombre de la variable y
Las variables son sensibles a las mayúsculas, por lo que las siguientes variables son diferentes :
Variable = 1
variable = 1
Las variables pueden contener hasta 19 caracteres. Éstas deben empezar con una letra, seguida por cualquier número de letras, dígitos o guiones de subrayado.
Los caracteres de puntuación no son permitidos en las variables.
Cuando se trabaja con muchas variables estas son difícil de recodar.
El comando who muestra un desplegado de todas aquellas variables que se han estado utilizando.
who
whos Muestra las variables con información adicional.
Caracteres especiales
[ ] Son usados para formar vectores y matrices [ 1 2 3 ; 4 5 6 ]
( ) Usados para expresiones matemáticas. sqrt(2)
= Usado para hacer asignaciones. x = 5
' Transpuesta de una matriz A'
Usado para separar texto 'texto'
. Punto decimal 3.1415
... Al final de una línea indican que continua 2,3,4,5,6 ....
en el siguiente renglón. 7,8,9,10 ]
, Para separar elementos [1,2,3,4]
; Para separar filas en las matrices. [ 1 2; 3 4]
Para evitar que se despliegue la información capturada. [3] ;
% Para hacer comentarios % este programa,etc.
! Para ejecutar un comando del Ms-dos !dir
Operaciones básicas
SUMA
C = a + b
RESTA
d = a - b
MULTIPLICACION
e = a * b
DIVISION
F = a / b
F = a \ b
POTENCIA
a ^ 2
Como este último cálculo no tenía variable asignada, la respuesta se guarda en la variable ans (answer ).
Borrado de variables.
Para borrar el valor de una variable simplemente ponemos
clear a Borra la variable " a "
a Checar que este borrada.
clear a b c Borra las variables " a ", " b " y " c "
" CLEAR " Borra todas las variables y no se pueden recuperar.
Funciones trigonométricas
sin ( 0.5) Seno de (0.5)
Así mismo
COS ( X ) TAN ( X )
ASIN ( X ) ACOS ( X ) ATAN ( X ) Inversa
SINH ( X ) COSH ( X ) TANH ( X ) Hiperbólica
ASINH ( X ) ACOSH ( X ) ATANH ( X ) Inversa- Hiperbólica
ATAN2 ( X,Y ) Inversa de la tangente en los cuatro cuadrantes.
LOGARITMOS
log (0.5) Logaritmo natural
LOG10 ( X ) Logaritmo decimal.
Funciones matemáticas especiales.
abs ( -3) Valor absoluto o magnitud de un número complejo
ceil ( 123.123123) Redondea hacia más infinito
FLOOR ( X ) Redondea hacia menos infinito
FIX ( X ) Redondea hacia cero
ROUND ( X ) Redondea hacia el entero más próximo
imag ( 30 - 5j ) Parte imaginaria de un número complejo
REAL ( X ) Parte real de un número complejo
ANGLE ( X ) Angulo de un número complejo
CONJ ( X ) Complejo conjugado
sign ( -5) Función signo : Devuelve el signo del argumento
(1 si es positivo, -1 si es negativo )
exp ( 1 ) Exponencial : e ( x )
REM ( X,Y ) Resto después de la división ( x / y)
sqrt (2) Raíz cuadrada
Operaciones Lógicas
En MATLAB se pueden hacer operaciones lógicas, por ejemplo.
1 <>
Como 1 es menor que 2, la respuesta es cierta por lo que obtenemos un 1.
1 <>
Obtenemos un 0, porque 1 no es menor que 1.
Como se puede observar las únicas respuestas posibles con las operaciones lógicas son :
Cierto = 1 y Falso = 0.
Operadores relaciónales :
> Mayor que
< Menor que
>= Mayor o igual a
<= Menor o igual a
== Igual a
~= No igual a
Existen tres operadores lógicos : AND &
OR
NOT ~
Para que la operación AND sea verdadera las dos relaciones deben ser verdaderas.
Recordemos AND = 0 0 0 Falso
0 1 0 Falso
1 0 0 Falso
1 1 1 Verdadero
( 1 <>Verdadero.
( 1 <>Falso.
Para la operación OR : 0 0 0
0 1 1
1 0 1
1 1 1
( 1 <>Verdadero.
Para la operación NOT : ~ 0 1
~ 1 0
~ ( 2 <>Verdadero.
La variable NaN (Not a Number)
Cuando en un lenguaje de programación como basic, pascal o C, se da una situación que el programa no pueda manejar, como una división como 0/0 el programa se detiene, marcando un error.
Cuando en MATLAB se presenta una situación similar el programa no se detiene, sólo da una pequeña advertencia de que se presentó una división entre cero. Y el resultado es un NaN, que es una variable interna no es un número).
0 / 0
Ejemplo: defina a=[1 2 0] y b=[1 2 0] ahora pida la división elemento a elemento (comando "./")
a ./ b
Solución de ecuaciones de segundo grado.
MATLAB se puede resolver fácilmente ecuaciones del tipo ax² + bx + c = 0, haciéndolo como si fuera una sola instrucción. La förmula para resolver una ecuación de segundo grado de este tipo es :
Si tenemos los siguientes valores :
a = 1, b = 2, c = 3
Escribimos la formula para x1 :
x1 = ( -b + sqrt ( b ^ 2 - 4 * a * c )) / 2 * a
Para x2 :
x2 = ( -b - sqrt ( b ^ 2 - 4 * a * c )) / 2 * a
Podemos hacer la comprobación para x1.
a * x1^ 2 + b * x1 + c Comprobación x1
Arreglos (Arrays) ó Vectores.
Si se desea calcular el seno de " 0 a 1 " con incrementos de 0.25, se pueden capturar los valores y después mandar llamar el seno de la función.
Seno de 0 a 1 con incrementos de 0.25
x = [ 0, 0.25, 0.5, 0.75, 1 ]
Se pueden omitir las comas cuando se capturan los números.
Con los números capturados, se obtiene el seno de la variable x escribiendo simplemente :
sin (x)
MATLAB opera en radianes, donde 2P = 360 grados.
Ahora se requiere obtener el coseno de cero a uno con incrementos de 0.01; lo que equivale a capturar 101 elementos.
Para evitar capturarlos a mano, MATLAB nos permite crear un vector de la siguiente manera :
Variable = ( Valor inicial : Con incrementos de : Valor final )
R = (0 : 0.01 : 1)
COS ( R ) Ahora se puede obtener el coseno de la variable R.
Hagamos el siguiente vector :
Y = ( 0 : 1 : 10)
Si queremos saber cual es el cuarto elemento del vector ponemos :
Y (4)
Si nos interesan los elementos 5 al 10 :
Y( 5 : 10 )
Otras opciones son :
Y( 1 : 2 : 9) Toma los elementos del 1 al 9 con incrementos de 2
Y([ 1, 3, 7,10]) Toma los elementos 1, 3, 7 y 10 del array
Modificaciones de los arreglos
Si el noveno elemento del array debió ser el número 20 en vez de 8, corregimos de la siguiente manera :
Y(9) = 20
Otra forma de hacer arreglos, es con linspace :
Linspace ( Valor inicial , Valor final , Número de elementos )
Regresando al ejemplo del coseno de 0 a 1 con incremento de 0.01 escribimos :
Note el uso de comas (#, #, #)
Z = linspace(0 , 10, 101)
Linspace describe una relación lineal de espaciado entre sus elementos.
Logspace describe una relación de espaciado " logarítmica ".
Logspace ( Primer exponente , Último exponente , Cantidad de valores )
Logspace (0 , 2 , 10 )
Hemos creamos un arreglo que comienza en 10 0 y termina en 10 2, conteniendo 10 valores.
Otra forma de crear arreglos es :
x1 = 1 : 5 Arreglo de 1 a 5, con incremento de 1
x2 = 10 : 5 : 100 Arreglo de 10 a 100, con incrementos de 5.
Si se quiere concatenar x1 y x2
C = [ x1 x2 ]
Matemáticas con arreglos.
a = 1 : 6 Define un vector de seis elementos con incrementos de 1
b = 1 : 2 : 12 Vector de seis elementos con incremento de 2
Arreglos con escalares
Se le puede sumar o multiplicar un número a todo el arreglo, por ejemplo
a + 10 Suma de un escalar con un arreglo
a * 10 Multiplicación de un escalar con un arreglo
Operaciones con arreglos
Para hacer la suma de los arreglos a y b, solamente escribimos :
a + b La respuesta se guarda en ans :
Se pueden hacer operaciones como :
Z = 100 - 2 * a + b
La multiplicación de arreglos se hace con ( . * ), ya que cuando se utiliza el asterisco sin punto indica multiplicación matricial, y además provoca un error.
Z = a .* b
La división también lleva un punto antes del signo, porque sino se utiliza el punto nos referimos a la división matricial que es muy diferente.
Z = a ./ b
La siguiente operación obtiene el cuadrado del arreglo " a ".
Z = a .^ 2
Orientación de arreglos
Si separamos cada elemento del arreglo con punto y coma tenemos un arreglo de una sola columna :
a = [ 1; 2; 3; 4; 5; 6 ]
Es necesario usar los corchetes, porque si no los usamos obtenemos el último valor que capturamos :
d = 1 ; 2; 30 ; 40 ; 50 ; 600 ; 1000
Para crear una columna con 20 elementos hacemos lo siguiente :
d = ( 1 : 1 : 20 )
y trasponemos el renglón a columna, es decir buscamos la transpuesta. ( ' )
e = d'
¿ Que pasa si hacemos lo siguiente : ?
e'
Matrices
Se utiliza el punto y coma ( ; ) hacer una matriz.
Para formar la matriz 1 2 3
3 2 1
2 1 3
Escribimos :
A = [ 1 2 3; 3 2 1; 2 1 3 ]
Ecuaciones Simultáneas
Con MATLAB se pueden resolver sistemas de ecuaciones simultáneas fácilmente.
Por ejemplo para resolver el siguiente sistema de ecuaciones.
2x + 0y + 5z = 100
3x + 5y + 9z = 251
1x + 5y + 7z = 301
Capturamos los valores de x, y, z ; formando una matriz.
A = [ 2 0 5; 3 5 9; 1 5 7]
Después capturamos el valor al cual están igualadas las ecuaciones en otra matriz.
b = [ 100 ; 251; 301 ]
Una forma de solucionar las ecuaciones es obteniendo el inverso de la matriz, es decir : A -1 ( menos uno )
El asterisco indica multiplicación matricial.
c = inv (A)* b
Otra forma de resolverlo, es utilizando la división matricial.
c = A \ b
Es también posible obtener la determinante de una matriz.
det ( A )
Operaciones con Matrices
Definamos las siguientes matrices ' g ' y ' h '.
g = [ 1 2 3; 4 5 6; 7 8 9]
h = [ 1 0 2 ; 11 2 3 ; 3 5 12 ]
La suma de las matrices g y h se muestra enseguida :
k = g + h
k = g * h Multiplicación de dos matrices.
[L, U ] = lu (k) Calcula la factorización LU de la matriz cuadrada k
[d,e]= qr (k) Calcula la factorización QR de la matriz k.
Calcula la descomposición en valores singulares de la matriz k.
rank(k) Devuelve el rango de la matriz k.
cond(k) Devuelve el número de condición de la matriz k.
Modificación de las matrices.
A = [ 1 2 3; 4 5 7; 7 8 9 ]
Si nos equivocamos al capturar la matriz, por ejemplo si el número 7 del segundo renglón, tercer columna debió ser 6 en vez de 7, tendríamos que capturar de nuevo la matriz.
Pero con MATLAB es posible modificarla de la siguiente manera :
A(2,3)= 6 Variable ( renglón, columna)= nuevo valor
Si tenemos la matriz identidad de 4 x 4 :
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
A = [ 1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]
Pero por algún error la matriz identidad debió de haber sido de 5 x 5.
¿ Hay que capturar de nuevo la matriz ?. La respuesta es no.
A(5,5) = 1
Agregamos un 1 en el renglón 5 columna 5, y como este no existían previamente, las columnas y renglones se completan agregando ceros.
¿ Que pasa ahora si queremos sólo una matriz identidad de 3 x 3 y tenemos capturada una de 5 x 5.
Podemos utilizar :
Matriz ("Renglón" inicio : Fin , "Columna" inicio : Fin )
B = A ( 1 : 3, 1: 3)
Ahora si queremos que la matriz identidad sea : 0 0 1
0 1 0
1 0 0
C = B ( 3 : -1 : 1 , 1 : 3 )
Poner dos puntos ( : ) indica que se deben tomar todas las columnas
(1 : 5). Esto es valido también para los renglones.
C = A ( : , [ 1 3 5 ] )
Toma todos los renglones, pero sólo toma las columnas 1, 3 y 5.
Si creamos las siguientes matrices A y B :
A = [ 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5; 1 2 3 4 5 ]
B = [ 6 7 8; 6 7 8; 6 7 8; 6 7 8 ]
Podemos construir una matriz C uniendo las dos anteriores
c = [ A B ]
A partir de la matriz A queremos tomar las columnas 1, 2 y 5, y de la matriz B queremos tomar las columnas 1 y 3, para formar una matriz D.
D = [ A(:,[ 1 2 5]) B(:, [ 1 3])]
D( :,1)=[] Elimina la columna número uno.
Matrices especiales
ones(2) Hace una matriz de unos, de 2 x 2.
zeros(5,4) Hace una matriz de ceros, de 5 x 4.
rand(3) Hace una matriz de 3 x 3,
eye(4) Hace una matriz identidad de 4 x 4.
Gráficas
En MATLAB se pueden crear gráficas tan simples como :
D = [ 1 2 3 5 4 7 6 8 9 8 6 3 1 3];plot (D)
o se pueden crear gráficas tan complejas como :
cplxroot(3,10) Superficie de una raíz cubica.
Como se vió en el primer ejemplo es posible gráficar una serie de puntos y MATLAB automáticamente ajusta los ejes donde se gráfica.
Por ejemplo, para gráficar la función seno se pueden crear un rango de valores
x = 0 : 0.1 : 20; x = vector de cero a veinte con incrementos de 0.1
y = sin(x); Seno del vector (x)
plot (x,y) Gráfica del seno
z = cos(x); Coseno del vector anterior
plot (x,z) Gráfica del coseno de x.
plot ( x,y,x,z) Gráfica del seno y coseno en la misma pantalla
plot (x,z,'*') Gráfica del coseno con los signos ' * '
Hace la gráfica en azul, y los signos ' + ', intercambiando los ejes.
plot ( z, x,'b+')
Como se ve es posible gráficar en Matlab con símbolos y además escoger el color, tal como se muestra en la tabla inferior.
Símbolo
Color
Símbolo
Estilo de línea
y
amarillo
.
punto
m
magenta
o
circulo
c
cían
x
equis
r
rojo
+
más
g
verde
*
asterisco
b
azul
-
menos
w
blanco
:
dos puntos
k
negro
- .
menos punto
- -
menos menos
Es posible agregar un cuadriculado a la gráfica, para tener más precisión, con el comando.
grid
Se pueden agregar títulos a las gráficas y etiquetas en los ejes con los comandos siguientes.
title(' Gráfica del coseno de x')
Para ponerle etiquetas a los ejes se puede utilizar los comandos
ylabel ('etiqueta')
xlabel('etiqueta')
axis off Desaparece los ejes.
Subplot
El comando subplot nos permite desplegar en pantalla varias gráficas.
subplot(m,n,a)
'm' y 'n' son una matriz que representa las cantidades de gráficas que se van desplegar; 'a' indicaría el lugar que ocuparía la gráfica en el subplot.
Hagamos la gráfica de los siguientes puntos. La desplegaremos en cuatro puntos diferentes en pantalla para ver las características de subplot.
a=[ 1 ,2 ,3 9 ,8 ,7 ,4, 5, 6, 8, 7, 5];
plot (a)
Vamos hacer una matriz de 2 x 2 para gráficar, cuatro posibles ventanas o gráficas. Y queremos que la primera gráfica ocupe el lugar (1,1) de la matriz. entonces escribimos.
subplot(2,2,1) ,plot(a)
subplot(2,2,2) , plot(a)
subplot(2,2,4), plot(a)
CLF borra todos los objetos de la gráfica.
CLF RESET Borra todo lo que hay en la gráfica y resetea todas las propiedades de la figura.
clf
Gráficas en tres dimensiones.
El comando plot se puede extender a 3 dimensiones con el comando plot3 .
El siguiente ejemplo hace una gráfica de una espiral en tres dimensiones.
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
zlabel ('etiqueta')
Se utiliza para dar etiquetas al eje z, en las gráficas en tres dimensiones.
Gráficos de malla y superficie.
z = peaks(10)
El comando peaks crea un conjunto de valores que al ser gráficados, se ven de la siguiente manera.
plot(z)
Se tomará como base la gráfica anterior para demostrar algunas funciones de graficación en tres dimensiones.
mesh(z)
contour(z,10)
surf(z)
Es posible cambiar el sentido de orientación de las gráficas con el comando view(x,y)
view(0,0)
view(90,0)
Gráficas en el plano complejo
Ahora vamos a crear un conjunto de valores para gráficar en el plano complejo, en tres dimensiones.
z= cplxgrid(5)
cplxmap(z,z)
cplxmap(z,z.^z)
cplxroot(2,10) Raíz cuadrada
Se pueden crear gráficos en coordenadas polares con el comando Polar (t,r,s) donde t es el vector en ángulos en radianes, r es el radio del vector y s es la cadena de caracteres que describe , color, símbolo del estilo del línea.
t=0:0.1:2*pi;
r = sin(2*t).*cos(2*t);
polar(t,r)
gtext( ‘ texto ’ )
Se utiliza para colocar texto en una gráfica, con la ayuda del mouse. Simplemente se ejecuta el comando y con el mouse se selecciona la coordenada deseada y se presiona el botón derecho del mouse, quedando fijo el texto en la pantalla.
Copiar una gráfica
Cuando se quiera realizar algún reporte formal en un procesador de palabras como en este caso Word, es posible copiar las gráficas hechas en Matlab por medio de la orden copy to bitmap.
El procedimiento sería :
· En Matlab, en el menú de la ventana principal de la gráfica, se escoge el menú ‘edit’ y de este se escoge copy to ‘bitmap’;
· Se minimiza Matlab y se pasa al procesador de palabras escogido
· Se localiza la posición en la cual estará la gráfica, y del menú edit se escoge ‘paste o pegar’.
La gráfica aparecerá en el procesador de palabras.
Existe un pequeño inconveniente ya que la gráfica aparecerá sobre un fondo de color negro que Matlab tiene por default, si se imprime este documento obviamente la gráfica aparecerá sobre un fondo negro lo cual hará que la impresora gaste tinta en exceso.
Para remediar esto se puede cambiar el color de fondo de las gráficas a blanco con el comando.
Whitebg
después se hace procedimiento mencionado anteriormente.
Imprimir una gráfica.
Se puede imprimir una gráfica directamente desde el menú de la ventana de la gráfica, seleccionando la opción print.
Otros comandos
· What :Listado de todos los archivos *.m en el directorio actual
· dir : Lista todos los archivos en el directorio actual
· type nombre_archivo : Lista el programa, (Programas con terminación *.M).
· Which nombre_archivo : Da el path en el cual esta el archivo.
Se pueden utilizar comandos de Unix tales como Ls, pwd.
Como hacer un programa en MATLAB
Es posible realizar un programa en Matlab tal como se hace en otros lenguajes como el basic, pascal o el lenguaje C. Es necesario utilizar un editor para escribir el código.
· Para cargar un editor, se puede hacer desde la ventana options, escogiendo editor preference, y cargando el editor que se desee utilizar.
· Para escribir código, requerimos crear un archivo *.M. Para esto necesitamos abrir new M.file en la ventana file.
· Ahora escribimos el código y salvamos el archivo utilizando la terminación archivo.M.
· Se puede correr el programa desde Matlab simplemente escribiendo el nombre del archivo que fue creado.
· Es posible abrir programas con la terminación *.M desde Matlab, en el menú file, open M.file.
Bucles For
Tal como en otros programas de programación en Matlab es posible crear programas con estructura con ciclos for.
For x = Número incial : número final
Instrucción
End.
for x = 1 : 10
x = x + 1
end
También se pueden hacer operaciones como la siguiente :
matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]
for x = matriz
x = n(1)*n(2)*n(3)*n(4)
end
Bucles while
While permite que ciertas instrucciones sean repetidas un número indefinido de veces bajo el control de una condición lógica.
Por ejemplo, ¿ Cual es primer entero n para el cual n! (factorial) es un número de 100 dígitos ?.
n = 1;
while prod(1:n)<1.e100,n=n+1;end>
n
IF ELSE END
Se pueden utilizar estructuras como:
If expresión (verdadero)
acción
End.
If expresión (verdadero)
acción 1
else (Falso)
acción 2
End.
If expresión (verdadero)
acción 1
elseif expresión (verdadero)
acción 2
. . .
else (Falso)
acción "n"
End
Análisis de datos.
En Matlab podemos hacer análisis de datos estadísticamente o probabilisticamente. Entre estos análisis están cálculos de medias, máximos, mínimos, desviaciones estándar, etc.
Inventemos un conjunto de datos, los cuales podremos análizar.
x =[ 9 1 ;23 34; 16 28 ;12 33 ;5 7; 9 4 ;12 34 ;5 14 ;43 6 ;3 6 ;12 9; 2 30 ;3 2; 2 4]
plot (x) La representación gráfica de los puntos anteriores.
A continuación se hace una análisis de los datos presentados, habrá dos respuestas porque tenemos dos columnas.
media=mean(x) Obtención de la media
max(x) El máximo de los valores.
min(x) El mínimo de los todos los valores
std(x) La desviación estándar
hist(x) Histograma.
Interpolación
Matlab tiene varios comandos que nos permiten hacer interpolaciones, uno de los métodos es por medio de mínimos cuadrados.
Mínimos cuadrados
Se crean varios puntos.
x = [ 0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 ];
y =[ 0.09 .12 .24 .27 .4 .45 .61 .67 .71 .63 .59];
se muestra los puntos a los cuales se les va a interpolar
plot (x,y,'*')
Se utiliza una aproximación de segundo orden, porque la función es no lineal.
n=2 ; Segundo orden.
p=polyfit(x,y,n) Crea los elementos del polinomio que hará la interpolación.
El polinomio es del tipo ax2 + bx + c = 0
f=linspace(0, 1, 100); Formamos una serie de puntos para gráficar.
z=polyval(p,f); Evaluación polinomial.
plot(x,y,'*',x,y,f,z,':') Hacemos la gráfica de la interpolación.
Podemos ver que la interpolación es pobre. Ahora tratemos de hacerla con un polinomio de quinto grado, el procedimiento es el mismo que el anterior.
n = 5 ;
p = polyfit(x,y,n)
z = polyval(p,f);
plot(x,y,'*',x,y,f,z,':')
Otra forma de interpolar, es con el comando interp1.
g=interp1(x,y,f)
Se puede observar en la gráfica resultante, que parece como una aproximación lineal entre cada punto.
plot(x,y,'*',f,g)
Para una aproximación más suave es recomendable usar el comando spline, que hace una interpolación tipo cubic spline.
g=spline(x,y,f)
plot(x,y,'*',f,g)
Polinomios
MATLAB puede sacar ls raíces de un polinomio. Para capturar el polinomio de abajo, solamente ponemos el valor de cada variable, respetando su lugar. Como no hay termino x1 ,de todos modos se captura como cero.
X3 + 5x2 - 2
p = [1 5 0 -2]
Para sacar las raíces escribimos.
r=roots(p)
Tips de memoria.
Para obtener la máxima velocidad en Matlab debemos tratar de vectorizar los algoritmos, por ejemplo :
a = 0
for a = 0:.0.1:10
a = a + 1;
y(a)=sin(t)
end
La versión vectorizada sería :
t= 0:0.01:10;
y = sin(t)
El primer ejemplo en MATLAB toma aproximadamente 15 segundos, mientras que el segundo toma sólo 0.6 segundos.
Se recomienda ver los tutoriales propios de MATLAB como el intro, expo, el manual de MATLAB y otros libros de consulta.
Suscribirse a:
Entradas (Atom)