Manual de Matlab FIEE-UNCP

Embed Size (px)

DESCRIPTION

MANUAL DE MATLAB - PROGRAMACION IIMATLAB Ing. Aquiles Aquino Rivera y alumnos del segundo semestre 2010 - IManual completo de Matlab para el curso de programación II diseñado por los alumnos de la facultad de ingeniería electrica y electrónica de la UNCP, abarca las aplicaciones de Matlab asi como las herramientas con didácticos ejemplos y la teoría básica pero necesaria para el diseño de proyectos en Matlab.

Citation preview

UNIVERSIDAD NACIONAL DEL CENTRO DEL PERFACULTAD DE INGENIERIA ELECTRICA Y ELECTRONICA

DEPARTAMENTO ACADEMICO DE ELECTRICIDAD Y ELECTRONICA

MANUAL DE PROGRAMACION II

MATLAB Ing. Aquiles Aquino Rivera

C.U., Octubre del 2010

INTRODUCCIN.MATLAB MATriz LABoratory. Es un programa que abarca muchos aspectos, siendo uno de ellos para realizar clculos numricos con vectores y matrices, en el cual se puede trabajar con nmeros escalares (tanto reales como complejos), con cadenas de caracteres y con otras estructuras de informacin ms complejas. Matlab es un lenguaje de alto rendimiento para clculos tcnicos, asi como tambin es til para programar y resolver problemas iterativos mediante comandos. Uno de sus puntos fuertes es que permite construir nuestras propias herramientas reutilizables. Se puede crear fcilmente funciones y programas especiales (conocidos como M-archivos) en cdigo Matlab, los cuales se pueden agrupar en Toolbox (tambin llamadas libreras): coleccin especializada de M-archivos para trabajar en clases particulares de problemas. Matlab, a parte del clculo matricial y lgebra lineal, tambin puede manejar polinomios, funciones, ecuaciones diferenciales ordinarias, grficos en 2D y 3D.

ESPACIO DE TRABAJO DE MATLABPara iniciar el trabajo en Matlab (haciendo un clic en el icono que aparece en el escritorio o en su defecto en Inicio->Todos los programas) aparece en pantalla:

Todas las sentencias que se va a utilizar trabajar se da en la ventana Command Window (ventana de comandos). Es la ventana de mayor tamao.

Si se quiere informacin acerca de las variables con las cuales se esta trabajando se utiliza la ventana Workspace (espacio de trabajo) o en todo caso se digita: who: Para obtener la lista de las variables (no de sus valores) whos: Para obtener la lista de las variables e informacin del tamao, tipo y atributos.

Para conocer el valor que tiene una variable lo determinamos escribiendo el nombre de la variable y pulsando Intro. Con el Command History se visualiza las rdenes previas, se utiliza las flechas del teclado y .

MATEMTICA SENCILLAEn Matlab se puede trabajar con las siguientes operaciones bsicas: OPERACION suma resta multiplicacin divisin potencia EXPRESION EN MATLAB g+b g-b g*b g/b g^ b

Orden de precedencia de operaciones: Primero: ^. Segundo: * /. Y tercero:

+ -.

El punto y coma (;) se utiliza para que Matlab evale la lnea pero que no presenta la respuesta. al final de la sentencia. Si la sentencia es demasiado larga para que quepa en una sola lnea se digita tres puntos () seguido de la tecla Intro para indicar que contina en la lnea siguiente. Ejemplos: >> a = 7 a =7 >> b = 4; >> a + b ans =11 >> a / b ans =1.7500 >> a ^ b ans =2401 >> 5 * a ans =35 >> who % presenta una lista de los nombres de las variables utilizadas. Your variables are: a ans b >> whos % da una lista de las variables usadas ms completa que la anterior. Name Size Bytes Class Attributes a 1x1 8 double ans 1x1 8 double b 1x1 8 double % da valor a la variable a y la presenta en pantalla % no presenta el valor de b por el (;) al final. % realiza la suma de dos variables y guarda la solucin en la variable ans. (ya que no se dio una variable a la respuesta).

ALMACENAR Y RECUPERAR DATOS.Matlab permite guardar y cargar datos de los archivos del computador. En el men File, la opcin Save Workspace as guarda todas las variables actuales e Import Data carga variables de un espacio de trabajo guardado previamente. Otra forma sera guardar el estado de una sesin de trabajo con el comando save antes de salir: >> save Al teclear, automticamente se crea un fichero llamado matlab.mat. Puede recuperarse la siguiente vez que se arranque el programa con el comando load: >> load.

FORMATOS DE VISUALIZACIN DE NMEROS.Matlab no cambia la representacin interna de un nmero cuando se escogen distintos formatos, slo se modifica la forma de visualizarlo. Ejemplo: >> pi format short, Formato que trabaja con 4 dgitos. 3.1416 format long, Formato que trabaja con 14 o 15 dgitos 3.14159265358979 format short e Formato que trabaja con 4 dgitos despus 3.1416e+000 format long e Formato coma flotante con 14 o 15 dgitos despus de la coma 3.141592653589793e+000 format short g La mejor entre coma fija o flotante con 4 dgitos despus de la coma 3.1416 format short eng Notacin cientfica con 4 dgitos despus de la coma y un exponente de 3 3.1416e+000 format long eng Notacin cientfica con 16 dgitos. format bank: Formato que trabaja con 2 dgitos. format hex Hexadecimal 400921fb54442d18 format rat Aproximacin racional 355/113

ACERCA DE LAS VARIABLESMatlab almacena el ltimo resultado obtenido en la variable ans. Las variables son sensibles a las maysculas, deben comenzar siempre con una letra, no pueden contener espacios en blanco y pueden nombrarse hasta con 63 caracteres. Algunas variables especiales de Matlab: Ans: Variable usada por defecto para almacenar el ltimo resultado ? ? ? Pi: Razn de una circunferencia a su dimetro 3.1416 Inf: Infinito Inf Nan: Magnitud no numrica NaN i o j: i = j = 1 0 + 1.0000i realmin: El nmero real positivo ms pequeo que es utilizable 2.2251e-308 realmax: El nmero real positivo ms grande que es utilizable 1.7977e+308 clear: Para borrar todas las variables del espacio de trabajo, pero no borra lo de las dems ventanas. clc: Borra lo que hay en la ventana de comandos pero no borra las variables de la memoria del espacio de trabajo. Algunos comandos de Matlab nos facilitan informacin sobre la fecha, como clock, date o calendar. >> clock; >> date % (enter) ans =

04-Apr-2010 >> calendar % (enter). mes actual Apr 2010 S M Tu W Th F S 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 0 0 0 0 0 0 0 0

Los comentarios se escriben despus del smbolo de tanto por ciento (%), de este modo todo lo que se escriba no ser ledo por Matlab. Se puede colocar varias rdenes en una lnea si se separan correctamente, puede ser: por comas (,) que hace que se visualicen los resultados o puntos y comas (;) que suprimen la impresin en pantalla

OTRAS CARACTERSTICAS BSICAS.-

AYUDA EN LNEAMatlab proporciona asistencia de varios modos. Si se quiere consultar un comando determinado se solicita informacin escribiendo en la ventana de comandos help , o simplemente help. Tambin se puede abrir la ventana de ayuda con el ratn o con la tecla F1. Una vez abierta esta ventana podemos buscar por contenidos, palabras concretas, demostraciones, etc. Adems con la orden lookfor , busca en todas las primeras lneas de las ayudas de los temas de Matlab y devuelve aquellos que contienen la palabra clave que se busaca.

APROXIMACIONES EN MATEMATICAS.Se tiene el siguiente ejemplo x = 4.92 ceil (x) redondea hacia infinito 5 fix (x) redondea hacia cero 4 floor (x) redondea hacia menos infinito 4 round (x) redondea hacia el entero ms prximo 5 (con x escalar, vector o matriz, se redondeara en cada caso los elemento individualmente) Ejemplo: >> round ( [19.54646 13.656 -2.1565 0.78] ) ans = 20 14 -2 1

TRIGONOMETRA.Sea (x) funcin trigonomtrica con el ngulo expresado en radianes sin (x) cos (x) tan (x)

Sea d (x) funcin trigonomtrica con el ngulo expresado en grados sexagesimales sind (x) seno (grados) Sea h (x) funcin trigonomtrica hiperblica con el ngulo expresado en radianes sinh (x) seno hiperblico (radianes). asind (x) Ejemplos: >> sin (pi/2) ans = 1 >> sind (-90) ans = -1 >> cosd (60) ans = 0.5000 >> asind (1) ans = 90

ALGUNAS OPERACIONES.Como ejemplo se tiene: abs (x) valor absoluto o magnitud de un nmero complejo. sign (x) signo del argumento si x es un valor real (-1 si es negativo, 0 si es cero, 1 si es positivo). exp (x) exponencial gcd (m,n) mximo comn divisor lcm (m,n) mnimo comn mltiplo log (x) logaritmo neperiano o natural log2 (x) logaritmo en base 2 log10 (x) logaritmo decimal mod(x,y) mdulo despus de la divisin rem (x,y) resto de la divisin entera sqrt (x) raz cuadrada nthroot (x,n) raz n-sima de x (x e y cualquier escalar, m y n enteros). Ejemplos: >> abs (-5) % valor absoluto de -5 ans = 5 >> sign (18) % signo del nmero 18 ans = 1 >> gcd (9,12) % mximo comn divisor entre 9 y 12 ans = 3

>> lcm (10,25) % mnimo comn mltiplo ans = 50 >> mod (-12,5) % mdulo de la divisin de -12 entre 5 ans = 3 > rem (13,5) % resto de la divisin de 13 entre 5 ans = 3 >> nthroot (8,3) % raz cbica de 8 ans = 2

LIMITES.Ejemplos: 1.- syms m limit((4*m^3+4*m-2)/(2*m^3-6),inf) 2.- syms d >> limit (((2+d)/(d^2))^(1/2),inf) 3.- syms n >> limit((n-1)/(sqrt(n)-1),1) Resultado:2 resultado:0 resultado:2

DERIVADAS.diff ('f') derivada de la funcin respecto a x diff ('f',t) derivada parcial de la funcin respecto a t diff ('f',n) derivada n-sima de la funcin respecto a x feval ('f',a) evala la funcin en a. Ejemplos: 1.> diff ('sin (7*x) ') % derivada respecto a x ans = 7*cos(7*x) 2.>> diff ('(exp (x) * cos (3*x*y))','y') % derivada parcial respecto a y ans = -3*exp(x)*sin(3*x*y)*x 3.>> diff ('(sin (x^2))',2) % segunda derivada respecto a x ans = -4*sin(x^2)*x^2+2*cos(x^2) 4.- Sea la funcin: f=sin(y*x)+y^3-4*x^2; syms x y >> f=sin(y*x)+y^3-4*x^2; >> diff(diff(f,y),x) ans = -sin(y*x)*y*x+cos(y*x)

POLINOMIOS.MATLAB contiene comandos para realizar las operaciones estndar con polinomios. Tales como determinar sus races, evaluacin, diferencia, interpolacin y ajuste. Ejemplos: Dado los polinomios: P1(y)= 2y^4-7y^3+4y^2+2; P2(y)=-3y^3+4y-5 p1=[2 -7 3 0 2] p1 = 2 -7 3 0 2 p2=[3 0 4 -5] p2 = 3 0 4 -5

RACES DEL POLINOMIO 1.- raiz1=roots(p1) raiz1 = 2.9533 1.0000 -0.2266 + 0.5360i -0.2266 - 0.5360i 2.- raiz2=roots(p2) raiz2 = -0.4133 + 1.3586i -0.4133 - 1.3586i 0.8265 3.- Sea el polinomio: roots(s) s=[1 0 -2 -5]; Determinacin de las races del polinomio p2

ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i DADO LAS RACES SE OBTIENE EL POLINOMIO (En su forma simplificada): poly(raiz1) ans = 1.0000 -3.5000 1.5000 0.0000 1.0000 (x2)

4.- r=[2.0946;-1.0473 + 1.1359i;-1.0473 - 1.1359i]; p=poly(r) p= 1.0000 0 -2.0002 -5.0000

Otras Caractersticas:

conv (p,q) multiplica los dos polinomios p y q deconv (c,q) divide el polinomio c entre q polyder (p) calcula la derivada del polinomio p polyder (p,q) calcula la derivada del producto de los polinomios p y q polyval (p,A) evala el polinomio p en todos los valores de la matriz A Matlab no tiene incorporada una funcin para sumar polinomios.PRODUCTO DE POLINOMIOS. p3=conv(p1,p2) p3 = 6 -21 17 -38 53 -15 8 -10

DIVISIN DE POLINOMIOS. p3=deconv(p1,p2) p3 = 6 -21 17 -38 53 -15 8 -10

Otra manera: 2.- d=[4 1 -3 2]; e=[1 3 4]; [c r]=deconv(d,e) c= r= 4 -11 0 0 14 46

O tambin: 3.- [cociente,residuo]=deconv(p1,p2) cociente = residuo = 0.6667 -2.3333 0 0.0000 0.3333 12.6667 -9.6667

DERIVADA DE UN POLINOMIO. polyder(p1) ans = 1.- polyder(p2) ans = 9 0 4 8 -21 6 0

2.- t=[2 -1 3 5 9]; polyder(t) ans = 8 -3 6 5

DERIVADA DE UN PRODUCTO DE POLINOMIOS: p=[1 -5 9]; o=[1 2 3]; polyder(p,o) ans = 4 -9 4 3

DERIVADA DE UN COCIENTE DE POLINOMIOS: p=[1 -5 9];

o=[1 5]; [n d]=polyder(p,o) n= d= 1 1 10 -34 10 25

AJUSTE POLINOMICO DE CURVAS.Matlab utiliza el mtodo de los mnimos cuadrados, para realizar el ajuste de curvas a travs de un polinomio, para ello toma un conjunto de datos: X Y 0 1 1 1 2 7 4 61 Ejemplo:

x=[0 1 2 4]; y=[1 1 7 61]; polyfit(x,y,3) ans = 1.0000 0.0000 -1.0000 1.0000 (x^3-x+1)

(polyfit=ajuste de curva), (3=grado del polinomio a ajustar) FUNCIONES SIMBLICAS PARA LA INTEGRACIN.1.- syms x f=tan(x)-x^2; int(f,x) ans = -log(cos(x))-1/3*x^3 Calcule: (y^3-sec(x))dxdy Sea f(x)=tan x x^2, Calcule la integral definida de f: f(x)dx

2.- syms x y f=y^3-sec(x);

int(int(f,x),y) ans = 1/4*y^4*x-log(sec(x)+tan(x))*y Calcular: (xy^3-tan(x))

3.- syms x y f=x*y^3-tan(x); int(int(f,y),x) ans = 1/8*y^4*x^2+log(cos(x))*y Integral triple

4.- syms x y z f=6*x^2*y-z*cos(y); int(int(int(f,x),y),z) ans =

x^3*y^2*z-1/2*sin(y)*z^2*x Integral con valores de frontera:

5.- syms x a b f=exp(x)-x^2; int(f,x,a,b) ans =

exp(b)-1/3*b^3-exp(a)+1/3*a^3

Adems: 1.Calcule la integral r entre 0 y 2 por el mtodo de Simpson. quad(inline (f,a,b) >> r=quad(inline ('1./(x.^3-2*x-5)'),0,2) r = -0.4605

2.-

Calcule la integral doble en el campo de variacin de (x,y) dblquad(inline(f,xmin,xmax,ymin,ymax)

>> =dblquad(inline('y*sin(x)+x*cos(y)'),pi,2*pi,0,pi) p = -9.8696

ESTADSTICA DESCRIPTIVA.-

1.- Media.- Es el resultado de la suma de todos los valores de una variable dividida entre el numero total de datos. Ejemplo Edades:25,56,48,15,47,74,28,60,59,33,54 x=[25,56,48,15,47,74,28,60,59,33,54]; media=mean(x) media = 45.3636

x=[25,56,48,15,47,74,28,60,59,33,54]; media=mean(x); bar(x) (Presenta datos en grafico de barras).

2.- Mediana.- Es la medida de tendencia central equidistante de los extremos. x=[25,56,48,15,47,74,28,60,59,33,54]; Mediana=median(x) Mediana = 48

Medidas de dispersin.1.- Varianza.- Medida de los cuadrados de los diferenciados entre cada valor de la variable y la media aritmtica. Ejemplo: Varianza=var(x,1) Varianza = 291.6860

2.- Desviacin tpica.- Es la raz cuadrada de la varianza. 1.- Desviacion=std(x,1) Desviacion = 17.0788 2.- Desviacin=std(x) (Considera como denominador n-1) (considera como denominador n)

Desviacin = 17.9124 Observacin: Para resolver un sistema de ecuaciones especial: >>[x]=solve('3^x+3^(x-1)+3^(x-2)+3^(x-3)+3^(x-4)=363')) >>x=5 NMEROS COMPLEJOS El trabajo en el campo de los nmeros complejos esta implementado en MATLAB, siendo la convencin de que todas las funciones empiezan con minscula, donde una i o una j representan el numero imaginario. Sobre los nmeros complejos pueden ser aplicados las operaciones habituales presentando lo resultados de modo exacto. Los nmeros complejos se expresan en la forma: a+bi o a+bj. Ejemplos: 1.- Obtener la raz cuadrada de -13 sqrt(-13) ans = 0 + 3.6056i

Observacin. Cuando se trabaja con complejos conviene no utilizar la i, como variable ordinaria. Conviene hacer antes: clear i para que i no este definida. 2.- z1=3+5j z1 = 3.0000 + 5.0000i 3.- z4=1-2i z4 = 1.0000 - 2.0000i Para obtener la Raz cuadrada de un numero complejo. sqrt(4+5i) ans = 2.2807 + 1.0962i

1.- Suma de nmeros complejos. z1+z4 ans = 4.0000 + 3.0000i

2.- Multiplicacin y divisin de nmeros complejos. z1*z4 ans = 13.0000 -1.0000i

3.- >> r=(1-5i)*(1-i)/(-1+2i) r = -1.6000 + 2.8000i Otra manera: >> format rat >> r=(1-5i)*(1-i)/(-1+2i) r= -8/5 + 14/5i (Presenta la respuesta en fracciones)

Funciones con argumentos complejos: - Funciones trigonomtricas - Funciones hiperblicas - Funciones exponenciales y logartmicas Ejemplo: >> format short >> log(z1) ans = 1.7632 + 1.0304i

Funciones especificas para la parte real e imaginaria.abs(Z) angle(Z) : : Modulo del complejo z Argumento del complejo z

conj(Z) real(Z) imag(Z) Ejemplos: 1.- >> real(i^i) ans = 0.2079

: : :

Conjugado del complejo z Parte real del complejo z Parte imaginaria.

2.- Para determinar el ngulo y modulo se tiene: z=4i/(1+i) z = 2.0000 + 2.0000i f1=angle(z)*180/pi f1 = 45 , (f1=angulo en sexagesimales)

modulo=abs(z) modulo = 2.8284

3.- Sea: u=(3+2j)/(1-j); real(u),imag(u),angle(u),abs(u) ans = ans = ans = 0.5000 2.5000 1.3734 (En radianes) (Modulo)

ans = 2.5495

Ejemplos adicionales: >> B=[7 8 9;4 5 6],E=[1+2i 3+i;4-i i] B= 7 4 8 5 9 6

E = 1.0000 + 2.0000i 3.0000 + 1.0000i 4.0000 - 1.0000i 0 + 1.0000i

>> sin(B) ans = 0.6570 0.9894 0.4121

-0.7568 -0.9589 -0.2794 >> sin(E) ans = 3.1658 + 1.9596i 0.2178 - 1.1634i -1.1678 + 0.7682i >> exp(E) ans = -1.1312 + 2.4717i 10.8523 +16.9014i 29.4995 -45.9428i 0.5403 + 0.8415i >> log10(E) ans = 0.3495 + 0.4808i 0.5000 + 0.1397i 0.6152 - 0.1064i Problemas.Calcular la parte real, imaginaria, modulo y argumento de: 0 + 1.1752i

i3+i

, (1+3i)1-i

,

ii

FUNCIONES PARA REALIZAR CONVERSIONES DE COORDENADAS MATLAB permite trabajar distintos sistemas de coordenadas e implementar funciones para realizar conversiones de coordenadas de un sistemas a otro. 1.Cilndricas a rectangulares: x=r*cos y=r*sen z=z 2.Rectangulares a cilndricas: r2=x2+y2 =arctan(y/x) z=z 3.Esfricas a rectangulares: x=*sen*cos y= *sen*sen

z= *cos 4.Rectangulares a esfricas: 2=x2+y2+z2 =arctan(y/x) Sintaxis de las funciones: [x,y] = pol2cart(THETA,RHO) [Angulo,Modulo]=cart2pol(x,y) [x,y,z] = sph2cart(THETA,PHI,R) [THETA,PHI,R]=cart2sph(x,y,z) : : : : Transforma polares a rectangulares. Transforma rectangulares a polares Transforma esfricas a rectangulares. Transforma cartesianas a esfricas. ** ** **

[THETA,RHO,Z]=cart2pol(x,y,z) [THETA,RHO]=cart2pol(x,y) : [x,y,z] = pol2cart(THETA,RHO,Z) Ejemplos:

:

Transforma cartesianas a cilndricas

Transforma cartesianas a polares : Transforma cilndricas a cartesianas.

1.- Convertir las coordenadas esfricas(4,pi/6,pi/4) en coordenadas rectangulares.

2.- Convertir las coordenadas rectangulares (6, 2,22) en coordenadas esfericas. >> [theta,phi,r]=cart2sph(6, 2,22) x= y= z= 3.- Transformar el punto (2, /4) de coordenadas polares a cartesianas >> [x,y]=pol2cart(2,pi/4) x= -0.3268 y= 0.7142 4.- Convertir las coordenadas cartesianas (3,4) en coordenadas polares.

VECTORES Y ARREGLOSArreglos.- Es un conjunto de nmeros ordenados en filas y columnas. Ejemplo: 1.- a=[1 2 4;0 8 2;4 7 -5] a= 1 0 4 2 8 7 4 2 -5

*Arreglos unidimensionales.- Aquellos nmeros ordenados en una sola fila o columna. Ejemplo: 1.- b=[1 -9 5 8] b= 2.- b(2) ans = b(end) ans= b(1:3) ans= 1 -9 5 (Columna) 8 -9 (para ubicar el componente final) 1 -9 5 8 (Fila)

(Para ubicar la posicin de un numero)

3.- c=[-5;0;5;4;7] c= -5 0 5 4 7

Para crear un arreglo en fila con valor inicial 2 que se incrementa en 0.7 hasta 5.6, se tiene: 4.- d=2:0.7:5.6 [v inicial:incrementos:v final]

d= 2.0000 2.7000 3.4000 4.1000 4.8000 5.5000

Arreglos bidimensionales.- Conjunto de nmeros ordenados en filas y columnas.

Ejemplo: 1.- e=[4 -8 7 5;7 0 5 -4;1 0 -2 5;7 3 6 8] e= 4 7 1 7 -8 0 0 3 7 5 -2 6 5 -4 5 8

Para visualizar la posicin: 2.- e(2,3) ans = 5

Para visualizar los componentes de la segunda fila: 3.- e(2,:) ans = 7 0 5 -4

De manera similar para la tercera columna: 4.- e(:,3) ans = 7 5 -2 6 5.- e (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1 ans = 5 7

Operadores aritmticos de arreglos.1. A=[-3 5;0 7]; C=[6 1;5 9]; (Adicin)

D=A+C D= 3 5 6 16

2.- E=C+4 E= 10 9 5 13

(Adicin de un arreglo y un numero)

3.- S=A-C S= -9 -5 4 -2

(Sustraccin)

4.- M=A.*C M= -18 0 5 63

(Multiplicacin: elemento a elemento)

5.- F=5*A F= -15 0 25 35

(Multip. de un arreglo por un numero)

6.- div=A./C div = -0.5000 0

(divisin elemento a elemento)

5.0000 0.7778

FUNCIONES PARA OPERAR CON VECTOREScross (x,y) producto vectorial entre los vectores x e y dot (x,y) producto escalar entre los vectores x e y Ejemplos: >> x = [1 2 3]; y = [4 5 6]; >> cross (x,y) % producto vectorial ans = -3 6 -3 >> dot (x,y) % producto escalar ans = 32

MATRIZ. Es un arreglo rectangular de nmeros reales o complejos, ordenados en filas y columnas. 1.- Adicin de matrices: Ejemplos: 1. B=[-1 5 -7;2 5 -6;5 0 8]; D=[1 2 4;0 8 -9;4 7 -5]; A=B+D A= 0 2 9 7 -3

13 -15 7 3

Para ubicar el componente de la 2da. fila y 3ra.columna A(2,3) 2.- Sustraccin. S=D-B S= 2 -2 -3 3 11 -3

-1

7 -13

3.- Multiplicacin.Ejemplos 3.1.- M=B*D M= -29 -11 -14 -22 37 2 -7

66 -20

3.2.- E=[3 5 -7;1 4 -2;0 8 1]; F=[2 5;8 -5;4 -6]; N=E*F N= 18 26 32 -3

68 -46 Clases de Matrices.1.- Traspuesta de una matriz. Ejemplo 1.- E=[3 5 -7;1 4 -2;0 8 1;2 5 7] E= 3 1 0 2 5 4 8 5 -7 -2 1 7 (filaxcolumna) (4x3)

2.- g=E' g=

(Transpuesta=operador apostrofe )

3 5 -7

1 4 -2

0 8 1

2 5 7 Cuando es igual a su traspuesta.

2.- Matriz simtrica.3.- Matriz identidad. Se cumple: A*I=I*A=A

Matriz triangular superior. Matriz diagonal Matriz inversa.-AC=I Ejemplo: Q=[6 -4 7;0 5 8;-2 6 7] Q= 6 0 -2 -4 5 6 7 8 7 y

, , CA=I

Matriz triangular inferior. Matriz peridica. (C es la matriz inversa de A)

Y=inv(Q) Y= -0.2321 -0.2857 1.2500 -1.1964 1.0000 -0.8571 0.5357

(La matriz debe ser cuadrada)

0.1786 -0.5000

CONSTRUCCIN DE ALGUNAS MATRICES.Al igual que pasa con los vectores, existen algunas sentencias que ayudan a crear algunas matrices que Matlab ya tiene predefinidas (m y n deben tomar valores naturales): zeros (n) crea una matriz cuadrada nde ceros. zeros (m,n) crea una matriz m x n de ceros. ones (n) crea una matriz cuadrada n de unos.

ones (m,n) crea una matriz m x n de unos. rand (n) crea una matriz cuadrada n de nmeros aleatorios con distribucin uniforme (0,1). rand (m,n) crea una matriz m x n de nmeros aleatorios con distribucin uniforme (0,1). randn (n) crea una matriz cuadrada n de nmeros aleatorios con distribucin normal (0,1). randn (m,n) crea una matriz m x n de nmeros aleatorios con distribucin normal (0,1). eye (n) crea una matriz cuadrada nde unos en la diagonal y ceros el resto. eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto. magic (n) crea una matriz cuadrada n de enteros tal que sumen lo mismo las filas, las columnas y diagonal. Ejemplos: >> zeros (2) % matriz cuadrada 3 x 3 de ceros ans = 00 00 >> zeros (2,6) % matriz 2 x 5 de ceros ans = 000000 000000 >> ones (2,4) % matriz de unos ans = 1111 1111 >> rand (2,4) % matriz de valores aleatorios entre 0 y 1 segn la uniforme (0,1) ans = 0.9355 0.4103 0.0579 0.8132 0.9169 0.8936 0.3529 0.0099 >> randn (2,5) % matriz de valores aleatorios segn la normal (0,1) ans = 0.8156 1.2902 1.1908 -0.0198 -1.6041 0.7119 0.6686 -1.2025 -0.1567 0.2573 >> eye (2) % matriz identidad o unidad

ans =

10 01

>> magic (4) % matriz mgica 4 x 4 ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

OPERACIONES BSICAS CON MATRICESA+C AC A*C A .* C A/C A ./ C A\C A .\ C A^n A .^ C A' Ejemplos: A= 12 34 D= 11 01 C= 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 1.0000i 4.0000 + 7.0000i Suma de matrices Resta de matrices Multiplicacin de matrices Multiplicacin elemento a elemento de matrices Divisin de matrices por la derecha Divisin elemento a elemento de matrices por la derecha Divisin de matrices por la izquierda Divisin elemento a elemento de matrices por la izquierda Potenciacin (n debe ser un nmero, no una matriz) Potenciacin elemento a elemento de matrices Traspuesta de unja matriz

1.->> A * D % multiplicacin de matrices ans = 13

37 2.->> A .* D % multiplicacin elemento a elemento ans = 12 04 3.->> C ' % traspuesta conjugada ans = 1.0000 - 1.0000i 3.0000 - 1.0000i 2.0000 - 2.0000i 4.0000 - 7.0000i >> C .' % traspuesta ans = 1.0000 + 1.0000i 3.0000 + 1.0000i 2.0000 + 2.0000i 4.0000 + 7.0000i >> A + 2 % si sumamos el nmero 2 a la matriz se suma ese nmero a cada elemento ans = 34 56

FUNCIONES PARA EL ANLISIS DE MATRICESdet (E) determinante diag (v) crea una matriz diagonal con el vector v sobre la diagonal diag (E) extrae la diagonal de la matriz A como un vector columna inv (E) matriz inversa rank (E) rango size (E) dimensiones trace (E) traza tril (E) matriz triangular inferior a partir de la matriz A triu (E) matriz triangular superior a partir de la matriz A (Con E matriz, v vector y n nmero natural).

Ejemplos:

>> v = [1 2 3]; >> diag (v) % crea una matriz diagonal a partir del vector v ans = 100 020 003 >> A = [1 2 3 4; 7 8 9 2; 2 4 6 8] A= 1234 7892 2468 >> diag (A) % crea un vector columna a partir de la diagonal de la matriz A ans = 1 8 6 >> size (A) % devuelve las dimensiones de la matriz como un vector fila ans = 34

>> length (A) % devuelve la mayor de las dos dimensiones de la matriz ans = 4

>> rank (A) % rango de la matriz ans = 2

>>tril(A) = 1000 7800 2460 >>triu(A) = 1234 0892 0068 (convierte en ceros todos los elementos que quedan debajo de la diagonal principal). (convierte en ceros todos los elementos que quedan encima de la diagonal principal).

OTRAS OPERACIONES CON MATRICES.-

find (A) devuelve los ndices donde las entradas de A son distinto de cero fliplr (A) intercambia la matriz de izquierda a derecha flipud (A) intercambia la matriz de arriba a abajo rot90 (A) gira la matriz 90 en sentido contrario a las agujas del reloj rot90 (A,n) gira la matriz n x 90 expm (A) matriz exponencial logm (A) matriz logartmica sqrtm (A) matriz de races cuadradas funm (A,@funcin) evala la funcin que indiquemos en la matriz A exp, log, sqrt operan elemento a elemento Ejemplos: >> A = [pi 0; pi/4 pi/3] A= 3.1416 0 0.7854 1.0472 >> find (A) % devuelve los ndices como un vector columna ans = 1 2 4 >> reshape (A,1,4) ans = 3.1416 0.7854 0 1.0472

>> rot90 (A) % gira la matriz 90 ans = 0 1.0472 3.1416 0.7854

OPERACIONES CON HIPERMATRICES

Algunas funciones para generar matrices admiten ms de dos subndices y pueden ser utilizadas para generar hipermatrices como rand, randn, zeros y ones. Tambin se pueden emplear con hipermatrices las funciones size y reshape entre otras. La funcin cat permite concatenar matrices segn las distintas dimensiones. Ejemplos: >> G = zeros (2,3); B = ones (2,3); (Se define dos matrices de las mismas dimensiones)

>> cat (1,G,B) % las concatena una debajo de la otra(con 1) ans = 000 000 111 111 >> cat (2,G,B) % las concatena una al lado de la otra (con 2) ans = 000111 000111 Respecto al resto de funciones se debe tener en cuenta que: 1. Las funciones que operan sobre escalares, como sin, cos, etc., se aplican sobre hipermatrices elemento a elemento (igual que ocurre al aplicarlas sobre vectores y matrices). 2. Las funciones que operan sobre vectores, como sum, max, etc., se aplican a matrices e hipermatrices segn la primera dimensin, resultando un array de una dimensin inferior. 3. Las funciones matriciales propias del lgebra lineal, como det, inv, etc., no se pueden aplicar a hipermatrices, para aplicarlas habra que extraer las matrices correspondientes. Grafica de Matrices: Defina el vector x = (-9,-8,,6,7) y el vector k que sea el cuadrado de cada elemento: >>x=(-9:7) ; k=x.^2; >>plot(x,k)

Programacin en Matlab.& Aspectos generales:

1.- inputComando para ingresar datos. Ejemplo: b=input (ingresa valor de b:) 2.- disp..........................................................visualiza resultados en pantalla. ejemplo: disp(producto) 3.-fprintf......................................................escribe texto con formato ejemplo: fprintf('el resultado es %3i',var1) fprintf('el resultado es %3.1f',var2) fprintf('el resultado es %s',var3) fprintf('el resultado es %c',var4) 4.-error.........................................................visualiza texto en caso de error y el ejemplo: error(no se puede ejecutar).I. Estructura secuencial.Ejemplos aplicativos: 1.%prog para calcular el area de un circulo (Se genera en el Editor) r=input('ing valor de radio:'); area=pi*r*r; disp (area);

Luego se guarda (archivo) con un nombre. ejemplo1 En el Command Windows se digita el nombre del archivo, luego enter. >> ejemplo1 ing. valor de radio: 4 50.2655 2.%prog para hallar la resistencia v=input('ing valor de voltaje:'); i=input('ing valor de intensidad de cteo:'); disp(R) ejemplo2 Al ejecutar:

>> ejemplo2 ingresa valor de voltaje: 220 ingresa valor de intensidad de cte: 50 4.4000 Al utilizar function 3.%prog para calcular el area de un circulo function area=circulo(r) area=3.14*r*r; disp(area) Se graba con nombre:area Al ejecutar: >>area(4) 50.2400 4.%prog para hallar la resistencia function resist=re(v,i) resistencia=v/i; disp(resistencia) Se graba con nombre:resist Al ejecutar: >> lune1(220,50) 4.4000 Ejercicios aplicativos: 1.- Programa para determinar la resistencia equivalente de 3 resistencias en serie y paralelo. 2.- Programa para determinar la intensidad de corriente ingresando la resistencia y el voltaje.II. Estructura condicional simple.-

Sintaxis: if (condicin) sentencias end if y end son palabras clave del lenguaje informtico. Ejemplos: Prob.1.%prog para hallar si un num es positivo n=input('ing numero:'); if (n>0) disp('num positivo'); end

Ramificaciones if / else: Dependiendo de una condicin verdadera (V) o falsa (F) el programa toma el curso adecuado. El resultado de una condicin permite tomar una decisin, si la condicin es verdadera se ejecutan determinadas condiciones y si es falso termina el programa. El diagrama de flujo es:

Existe la posibilidad de ejecutar ciertas sentencias si la condicin es verdadera, y otras diferentes si la condicin es falsa: Sintaxis: if (condicin) sentencias B else sentencias D end Ejemplo: 1.% prog si un alumno aprueba o desap una asignatura nota=input('ing nota final:'); if nota>=10.5 disp('aprobado') else disp('desaprobado'); end 2.% prog para hallar el area de un rectangulo base=input('ing base de rectangulo:'); altura=input('ing altura:'); area=(base*altura); disp(area) if area>=350

disp('area grande') else disp('area peq'); end 3.%utiliz function si aprob o desap function nota=n(n) if n>=10.5 disp('aprobado') else disp('desaprobado'); endIII. Estructura Condicional doble (if elseif).-

Si la condicin se cumple, se ejecutan las sentencias B; caso contrario, se ejecutan las sentencias D. Diagrama de flujo de una ramificacin if / else

Una vez se hayan ejecutado las sentencias que correspondan (las sentencias B si la condicin es verdadera, las sentencias D en caso contrario) el programa contina con las instrucciones que vengan despus de end. Observacin.Las ramificaciones se pueden anidar (una condicin dentro de otra: dentro de las sentencias B o de las sentencias D en el anterior diagrama de flujo). Tambin se pueden construir ramificaciones con varias posibilidades. Donde la sintaxis hace uso de las palabras clave:

if elseif elseif

...

else end.Ejemplo: 1.%prog con intervalo para saber si aprob o desap a=input('ingresa nota:'); if a>=0 && a=10.5 disp('aprobado') else disp('desaprobado'); end else disp('nota errada') end Ramificacin mltiple.- switch Otra posibilidad de ramificacin mltiple la ofrece la construccin switch. La sintaxis es:

switch variable case valor1, sentencias A case valor2, sentencias B case ... ... end

(Como antes, lo escrito en cursiva debe sustituirse por las expresiones adecuadas). Las palabras clave son switch, case, end. La ramificacin switch opera de la siguiente manera. Al llegar a la expresin switch variable, si variable tiene el valor valor1 se ejecutan las sentencias A; si variabletoma el valor valor2, las sentencias B; y as sucesivamente. Es importante notar que la variable slo debe tomar unos pocos valores: valor1, valor2, etc. para que el programa se ramifique en unas pocas ramas. No tiene sentido intentar una ramificacin switch con una variable que pueda tomar un nmero infinito de valores. Ejemplo 1.%prog donde ingresa un numero decimal y arroja en romanos numero=input('ing num cambiar en romanos multiplo de 5:'); switch numero case 5 disp('V'); case 15

disp('XV'); case 25 disp('XXV'); case 35 disp('XXV'); case 45 disp('VL') otherwise disp('ingreso num no mult de 5') end Ejemplo2.%prog donde ing una letra y arroja un num nume=input('ing letra a relacionar:'); a=1; e=2; i=3; o=4; u=5; switch nume case a disp('1'); case e disp('2'); case i disp('3'); case o disp('4'); case u disp('5') otherwise disp('ing mal') end Ejemplo 3.%programa con las condicionales a=input('ingrese los dias transcurridos:'); if a>=1&a=91&a=180&a=271&a=16&&n=13&&n=10.5&&n=7&&nmay may=nro; end end disp('el numero mayor es:'); disp(may); Ejemplo 4.%programa que selecciona y da cant de numeros positivos,negativos y neutros n=input('ingresa cantidad de numeros:'); A=[]; B=[]; C=[]; for d=1:1:n; m=input('ingrese numero:'); if 0> y=cos(x); >> plot(x,y)1 0.8

//intervalo en el eje horizontal //Funcion a graficar //comando que ordena a Matlab

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1

0

1

2

3

4

5

6

7

8

9

10

se utiliza : copy figure (copiar en otro form) Ejemplo #2.>> z=linspace(-pi,2.5*pi); >> y=sin(z); >> plot (z,y) //utilizando el linspace

Ejemplo#3.Al trabajar en el editor: x=-3:0.01:3; y=x.*exp(-x.^2); plot(x,y),grid on //activa las cuadriculas en la pantalla.0.5 0.4

0.3

0.2

0.1

0

-0.1

-0.2

-0.3

-0.4

-0.5 -3

-2

-1

0

1

2

3

Ejemplo#4.Grafica de color rojo y con asteriscos: a=0:0.01:5; b=4*a.^3; plot(a,b,'r*')

500

450

400

350

300

250

200

150

100

50

0

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

Varias graficas en una sola: x=linspace(0.2*pi,10); y=cos(x); z=sin(x*pi/3); plot(x,y,'r-',x,z,'g--'),grid on1

0.8

0.6

0.4

0.2

0

-0.2

-0.4

-0.6

-0.8

-1

0

1

2

3

4

5

6

7

8

9

10

Etiquetado de graficas.x=linspace(-3,3,500); y=exp(-x.^2); z=2*exp(-x.^2); plot(x,y,'r-',x,z,'--'),grid on; title('campana de gauss'); xlabel('eje de abscisas'); ylabel('eje de ordenandas'); legend('GRAFICOS');

campana de gauss 2 GRAFICOS 1.8

1.6

1.4

eje de ordenandas

1.2

1

0.8

0.6

0.4

0.2

0 -3

-2

-1

0 eje de abscisas

1

2

3

Observacin: Se puede utilizar el: gtext(texto,comentario) y con el Mouse ubicar el comentario donde se crea conveniente Curvas en parametricas: Ejemplo 1.t=linspace (-5,5,1000); plot((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1));2

1.5

1

0.5

0

-0.5

-1

-1.5

-2 -5

-4

-3

-2

-1

0

1

2

3

4

5

otra manera: t=linspace (-5,5,1000); comet((t.*(t.^2-1))./(t.^2+1),(2*(t.^2-1))./(t.^2+1)); ejemplo 2.t=linspace (0.2*pi,20); quiver(cos(t),sin(t),-sin(t),cos(t)),axis square Curvas en polares.tetha=linspace(-pi,pi,100);

r=2-4*cos(tetha); polar(tetha,r)90 120 6 60

4 150 2 30

180

0

210

330

240 270

300

Graficas en ejes multiples.subplot(m,n,k).- Presenta varios grficos en una sola ventana, k es la secuencia de los grficos. Ejemplo #1.t=-1.8:0.2:4; x=t.^3; v=abs(t); w=sqrt(t); tetha=linspace(-pi,pi,100); r=2-4*cos(tetha); subplot(3,2,1),plot(t,x); subplot(3,2,2),plot(t,v); subplot(3,2,3),plot(t,w); subplot(3,2,4),polar(tetha,r)1 0 0 5 0 0 5 0 2 2 1 . 5 1 0 . 5 0 2 1 0 1 2 3 4 1 5 0 1 8 0 2 1 0 2 4 0 2 7 0 3 0 0 4 3 2 1 1 0 1 2 3 4 0 2 1 0 1 9 1 0 0 6 0 5 2 3 4

1 2 0

3 0 0 3 3 0

>> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; >> plot (x,y)

Si queremos cambiar la apariencia de la grfica basta pinchar en el ltimo botn de la barra de herramientas y se abrirn unos cuadros en los laterales que nos permitirn ir haciendo los cambios deseados como darle nombre a los ejes. La funcin plot permite otras opciones como superponer grficas sobre los mismos ejes: >> x = [-2 -1 0 1 2 3]; y = [4 1 0 1 4 9]; z = [6 5 3 7 5 2]; >> plot (x,y,x,z) Tambin podemos usar distintos tipos de lneas para el dibujo de la grfica: >> plot (x,y,'*') Adems podemos colocar etiquetas o manipular la grfica: etiqueta sobre el eje X de la grfica actual: >> xlabel('texto') etiqueta sobre el eje Y de la grfica actual: >> ylabel('texto') ttulo en la cabecera de la grfica actual: >> title('texto') texto en el lugar especificado por las coordenadas: >> text(x,y, 'texto') texto, el lugar lo indicamos despus con el ratn: >> gtext('texto') dibujar una rejilla: >> grid fija valores mximo y mnimo de los ejes: >> axis( [xmin xmax ymin ymax] ) fija que la escala en los ejes sea igual: >> axis equal fija que la grfica sea un cuadrado: >> axis square desactiva axis equal y axis square: >> axis normal abre una ventana de grfico: >> hold on borra lo que hay en la ventana de grfico: >> hold off Todas estas rdenes se las podemos dar desde la propia ventana de la grfica una vez que hemos abierto las opciones con el botn indicado anteriormente. Otros comandos relacionados con las grficas son los siguientes: Orden Qu hace? Imagen area colorea el area bajo la grfica bar diagrama de barras (verticales) barh diagrama de barras (horizontales) hist histograma pie sectores rose histograma polar stairs grfico de escalera stem secuencia de datos discretos loglog como plot pero con escala logartmica en ambos ejes semilogx como plot pero escala logartmica en el eje x semilogy como plot pero escala logartmica en el eje y Para obtener una informacin ms detallada se recomienda utilizar la ayuda de Matlab: >> help Una ventana grfica se puede dividir en m particiones horizontales y en n verticales, de modo que cada subventana tiene sus propios ejes, y para hacer esto vamos a usar subplot (m,n,p) donde p indica la subdivisin que se convierte en activa. >> x = 1:360; y1 = sind (x); y2 = cosd (x); y3 = exp (x); y4 = exp (-x); >> subplot (2,2,1), plot (x,y1), title ('seno')

>> subplot (2,2,2), plot (x,y2), title ('coseno') >> subplot (2,2,3), plot (x,y3), title ('exponencial') >> subplot (2,2,4), plot (x,y4), title ('-exponencial')Manual de MATLAB Servicios Informticos U.C.M.

33 Para volver al modo por defecto basta escribir: subplot (1,1,1). Para dibujar polgonos podemos usar la funcin plot pero teniendo en cuenta que el ltimo punto de ambos vectores deben coincidir para que la grfica quede cerrada. Pero si lo que queremos es que quede coloreado todo el interior del polgono debemos usar mejor la funcin fill, tiene tres argumentos, los dos vectores que forman los puntos y un tercer argumento para indicar el color. >> x = [-2 0 2 0 -2]; y = [4 8 4 0 4]; >> plot (x,y) >> x = [-2 0 2 0 -2]; y = [4 8 4 0 4]; >> fill (x,y,'r') % dibuja el polgono, 'r' indica el color rojo. GRFICAS EN 3-D Grficos de lnea: Tambin podemos crear grficas en 3 dimensiones, se trata de extender la orden de plot (2D) a plot3 (3-D) donde el formato ser igual pero los datos estarn en tripletes:Manual de MATLAB Servicios Informticos U.C.M.

34 >> x = -720:720; y = sind (x); z = cosd (x); >> plot3 (x,y,z) Podemos hacer girar la grfica usando de la barra de herramientas el botn o hacerla ms grande o ms pequea con . Al igual que ocurra con las grficas en dos dimensiones podemos nombrar los ejes o hacer modificaciones entrando en opciones con el botn . Si queremos representar un polgono en 3 dimensiones lo haremos con la funcin fill3 de forma similar a fill pero ahora con 4 argumentos, siendo el cuarto el que indica el color. >> x = [-2 0 2 0 -2]; >> y = [4 8 4 0 4]; >> z = [3 5 10 5 3]; >> fill3 (x,y,z,'b') % dibuja en 3-D, 'b' indica el color azul Superficie de malla: La orden [X,Y]=meshgrid(x,y) crea una matriz X cuyas filas son copias del vector x y una matriz Y cuyas columnas son copias del vector y. Para generar la grfica de malla se usa la orden mesh(X,Y,Z), mesh acepta un argumento opcional para controlar los colores. Tambin puede tomar una matriz simple como argumento: mesh(Z). Ejemplo:

>> x = -10:0.5:10; y = -10:0.5:10; >> [X,Y] = meshgrid (x,y); % crea matrices para hacer la malla >> Z = sin (sqrt (X .^2 + Y .^2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1); >> mesh (X,Y,Z) % dibuja la grfica Hubiera dado igual si hubiramos escrito: >> [X,Y] = meshgrid (-10:0.5:10); >> Z = sin (sqrt (X .^2 + Y .^ 2)) ./ sqrt (X .^ 2 + Y .^ 2 + 0.1); >> mesh (X,Y,Z) Grfica de superficie: Es similar a la grfica de malla, pero aqu se rellenan los espacios entre lneas. La orden que usamos es surf con los mismos argumentos que para mesh. Ejemplo: >> surf (X,Y,Z) Las grficas de contorno en 2-D y 3-D se generan usando respectivamente las funciones contour y contour3. Ejemplo: >> contour (X,Y,Z) % dibuja las lneas de contorno La funcin pcolor transforma la altura a un conjunto de colores. Ejemplo: >> pcolor (X,Y,Z) Manipulacin de grficos: fija el ngulo de visin especificando el azimut y la elevacin: >> view(az,el) coloca su vista en un vector de coordenada cartesiana (x,y,z) en el espacio 3-D: >> view([x,y,z]) almacena en az y el los valores del azimut y de la elevacin de la vista actual: >> [az,el]=view aade etiquetas de altura a los grficos de contorno: >> clabel(C,h) aade una barra de color vertical mostrando las transformaciones: >> colorbar Ejemplos: >> surf (X,Y,Z) >> view (10,70) >> colorbar % aade la barra de color a la figura actual >> surf (X,Y,Z) >> view ( [10,-12,2] ) >> surf (X,Y,Z) >> [az,el] = view az = -37.5000 el = 30 >> [C,h] = contour (X,Y,Z); >> clabel (C,h) Comprensin de los mapas de color: Color Nombre corto Rojo/Verde/Azul Negro k [0 0 0]

Blanco w [1 1 1] Rojo r [1 0 0] Verde g [0 1 0] Azul b [0 0 1] Amarillo y [1 1 0] Magenta m [1 0 1]