Professional Documents
Culture Documents
>> A=[1 2 3; 4 5 6; 7 8 9]
>> A’
>> B=A'
>> B*A
>> B=inv(A)
>> B*A
>> x+y
>> x+y'
MATLAB puede operar con matrices por medio de operadores y por medio de funciones. Se han visto ya
los operadores suma (+), producto (*) y traspuesta ('), así como la función invertir inv( ). Los operadores
matriciales de MATLAB son los siguientes:
+ adición o suma
– sustracción o resta
• multiplicación
' traspuesta
^ potenciación
\ división-izquierda
/ división-derecha
.* producto elemento a elemento
./ y .\ división elemento a elemento
.^ elevar a una potencia elemento a elemento
Los operadores anteriores se pueden aplicar también de modo mixto, es decir con un operando escalar y
otro matricial. En este caso la operación con el escalar se aplica a cada uno de los elementos de la
matriz.
>> A=[1 2; 3 4]
>> A*2
>> A-4
>> [1 2 3 4]^2
>> [1 2 3 4].^2
Una de las aplicaciones más importantes de las variables lógicas es para separar o extraer los
elementos de una matriz o vector que cumplen cierta condición, y operar luego selectivamente sobre
dichos elementos.
>> A=magic(4)
>> j=A>10
>> A(j)=-10
En muchos cálculos matriciales los datos y/o los resultados no son reales sino complejos, con parte
real y parte imaginaria. MATLAB trabaja sin ninguna dificultad con números complejos. Para ver
como se representan por defecto los números complejos, ejecútense los siguientes comandos:
a=sqrt(-4)
>> 3 + 4j
>> A(j)=-10
Existen en MATLAB varias funciones orientadas a definir con gran facilidad matrices de tipos
particulares.
eye(4)
zeros(3,5)
ones(3)
rand(3)
ones(2,4)
rand(2,5)
n=length(A)
[m,n]=size(A)
>> x=1:10
>> x=1:2:10
>> x=1:1.5:10
>> x=10:-1:1
>> x=[0.0:pi/50:2*pi]';
>> y=sin(x); z=cos(x);
>> [x y z]
>> A=magic(6)
>> A(2,3)
>> A(3, :)
>> A(end, :)
>> A(3:5,:)
>> x=rand(1,5)
>> x=x(5:-1:1)
>> A~=B
xor(A,B) realiza un "or exclusivo", es decir, devuelve 0 en el caso en que ambos sean 1 ó
ambos sean 0.
Estas funciones, que comprenden las funciones matemáticas trascendentales y otras funciones básicas,
cuando se aplican a una matriz actúan sobre cada elemento de la matriz como si se tratase de un
escalar. Por tanto, se aplican de la misma forma a escalares, vectores y matrices. Algunas de
lasfunciones de este grupo son las siguientes:
sin(x) seno
cos(x) coseno
tan(x) tangente
asin(x) arco seno
acos(x) arco coseno
atan(x) arco tangente (devuelve un ángulo entre -π/2 y +π/2)
atan2(x) arco tangente (devuelve un ángulo entre -π y +π); se le pasan 2 argumentos,
proporcionales al seno y al coseno
sinh(x) seno hiperbólico
cosh(x) coseno hiperbólico
tanh(x) tangente hiperbólica
asinh(x)arco seno hiperbólico
acosh(x) arco coseno hiperbólico
atanh(x) arco tangente hiperbólica
log(x) logaritmo natural
log10(x) logaritmo decimal
exp(x) función exponencial
sqrt(x) raíz cuadrada
sign(x) devuelve -1 si <0, 0 si =0 y 1 si >0. Aplicada a un número complejo, devuelve
un vector unitario en la misma dirección
rem(x,y) resto de la división (2 argumentos que no tienen que ser enteros)
mod(x,y) similar a rem (Ver diferencias con el Help)
round(x) redondeo hacia el entero más próximo
fix(x) redondea hacia el entero más próximo a 0
floor(x) valor entero más próximo hacia -∞
ceil(x) valor entero más próximo hacia +∞
gcd(x) máximo común divisor
lcm(x) mínimo común múltiplo
real(x) partes reales
imag(x) partes imaginarias
abs(x) valores absolutos
angle(x) ángulos de fase
Las siguientes funciones sólo actúan sobre vectores (no sobre matrices, ni sobre escalares):
SENTENCIA IF
En su forma más simple, la sentencia if se escribe en la forma siguiente (obsérvese que –a diferen-
cia de C/C++/Java– la condición no va entre paréntesis, aunque se pueden poner si se desea):
if condicion
sentencias
end
Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como se
desee, y que tiene la forma:
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % opción por defecto para cuando no se cumplan las condiciones 1,2,3
bloque4
end
SENTENCIA SWITCH
La sentencia switch realiza una función análoga a un conjunto de if...elseif concatenados. Su forma
general es la siguiente:
switch switch_expresion
case case_expr1,
bloque1
case {case_expr2, case_expr3, case_expr4,...}
bloque2
...
otherwise,
% opción por defecto
bloque3
end
SENTENCIA FOR
for i=vectorValores
sentencias
end
En eleditor de matlab (FILENEWM-FILE) ingrese los siguientes comandos útiles, y guarde el archivo como
“test1.m” dentro de la carpeta de C:\matlab\work
t=0:0.5:10
Y=sin(2*pi*t);
Y2=sin(2/3*pi*t);
figure
plot(Y);
figure
stem(Y);
figure
plot(Y2);
figure
stem(Y2);
Y3=Y’ * Y2;
Y4=Y2’ * Y;
figure
subplot(2,1,1)
plot(Y3);
subplot(2,1,2)
plot(Y4);
Una vez que el programa haya sido salvado, para ejecutarlo deberá regresar a la ventana de comandos y colocar el
nombre del programa adelante del prompt seguido de la tecla enter.
>> test
NORMALIZACION
La normalización es un proceso útil en el tratamiento de señales que permite homologar los rangos de cada patrón
llevándolos a intervalos de [0,1] o bien [-1,1], el entrenamiento de redes neuronales con patrones normalizados
permite una convergencia más rápida y eficiente.
Se identifican los valores máximos y mínimos por cada magnitud o rasgo (columna)
Una vez que se han identificado los valores máximos y mínimos se procede a dividir cada elemento de la matriz de
conocimiento de acuerdo al siguiente protocolo:
PROGRAMA NORMALIZACIÓN
load data_A.txt
a continuación diseñe un programa en matlab (NORMALIZACION.M) que obtenga los valores normalizados de una
matriz de datos a partir de este archivo externo de acuerdo al proceso descrito en el ejemplo.