Vous êtes sur la page 1sur 9

Unidad 2 

Análisis de circuitos eléctricos y electrónicos con MATLAB 
 

2.1 Manejo de números complejos 
Matlab permite números complejos en la mayoría de sus operacones y funciones. Hay tres formas de introducir 
matrices complejas: 

>> B=[1 2 ; 3 4]+i*[5 6 ; 7 8]

B =

1.0000 + 5.0000i 2.0000 + 6.0000i


3.0000 + 7.0000i 4.0000 + 8.0000i

>> B = [1+5i 2+6i ; 3+7i 4+8i]

B =

1.0000 + 5.0000i 2.0000 + 6.0000i


3.0000 + 7.0000i 4.0000 + 8.0000i
 
>> B = complex([1 2 ; 3 4] , [5 6 ; 7 8])

B =

1.0000 + 5.0000i 2.0000 + 6.0000i


3.0000 + 7.0000i 4.0000 + 8.0000i

La i o la j pueden ser usadas como unidad imaginaria: i = √  ,   j = √ .  Si se usa la i o la j como variable y se 


sobrescriben sus valores, se puede generar una unidad imaginaria con, por ejemplo, ii = sqrt(‐1). También se 
puede usar 1i o 1j, los cuales no pueden ser reasignados y siempre son iguales a la unidad imaginaria. 
 
Así, B = [1  2 ; 3  4]+1i*[5  6 ; 7  8]  genera la misma matriz B, aún si i ha sido reasignada 

Ejemplo de introducción de un vector columna complejo: 

>> a = [1;2;3;4];
b = [2;2;7;7];
c = complex(a,b)

c =

1.0000 + 2.0000i
2.0000 + 2.0000i
3.0000 + 7.0000i
4.0000 + 7.0000i


 
abs(X) 
Devuelve un arreglo Y donde cada elemento es el valor absoluto del elemento correspondiente en X.  Si X es 
complejo, abs(X) devuelve el módulo o magnitud del complejo, que es lo mismo que 

sqrt(real(X).^2 + imag(X).^2)

Ejemplos: 

abs(-5)
ans =
5

abs(3+4i)
ans =
5
 
abs([1+3i, -3+6i, 0+9i])
ans =
3.1623 6.7082 9.0000
 
angle(Z) 
Devuelve el ángulo de fase, en radianes,  de cada complejo del arreglo Z. Los ángulos están entre   ±π. 
Para un Z complejo, la magnitud R y el ángulo de fase teta están dados por: 
 
R = abs(Z)
teta = angle(Z)

y la sentencia 
 
Z = R.*exp(i*teta)

Hace la conversion inversa al Z complejo original. 
 
Ejemplos: 
 
Z = [ 1 - 1i 2 + 1i 3 - 1i 4 + 1i
1 + 2i 2 - 2i 3 + 2i 4 - 2i
1 - 3i 2 + 3i 3 - 3i 4 + 3i
1 + 4i 2 - 4i 3 + 4i 4 - 4i ];

P = angle(Z)

P =
-0.7854 0.4636 -0.3218 0.2450
1.1071 -0.7854 0.5880 -0.4636
-1.2490 0.9828 -0.7854 0.6435
1.3258 -1.1071 0.9273 -0.7854

 

 
Fasores de voltaje de un sistema trifásico balanceado 
 

>> x=[1 -0.5 -0.5];


>> y=[0 -sqrt(3)/2 sqrt(3)/2];
>> v=complex(x,y)

v =
1.0000 -0.5000 - 0.8660i -0.5000 + 0.8660i

>> magnitud=abs(v)

magnitud =
1.0000 1.0000 1.0000

>> angulo=angle(v)*180/pi

angulo =
0 -120.0000 120.0000

>> v=magnitud .* exp(j*angulo*pi/180)

v =
1.0000 -0.5000 - 0.8660i -0.5000 + 0.8660i

 
sign(X) 
Devuelve un arreglo Y del mismo tamaño que X, donde cada elemento de Y es: 
 
• 1  si el elemento correspondiente de X es mayor que 0. 
• 0  si el elemento correspondiente de X es igual a 0. 
• ‐1  si el elemento correspondiente de X es menor que 0. 
 
Para un complejo X que no es cero,   sign(X) = X./abs(X)

>> c=(1-3i);
>> sign(c)
ans =
0.3162 - 0.9487i

imag(Z) 
Devuelve la parte imaginaria de los elementos del arreglo Z. 
 
Ejemplo: 
 
>> imag([2+3i, 3-5i])
ans =
3 -5 

 
real(Z) 
Devuelve la parte real de los elementos del arreglo Z. 
 
Ejemplo: 
 
>> real([2+3i, 3-5i])
ans =
2 3 
 
conj(Z) 
Devuelve el complejo conjugado de los elementos de Z. 

Si Z es un arreglo complejo: 

conj(Z) = real(Z) – i*imag(Z)

Ejemplo: 

>> conj([2+3i, 3-5i])


ans =
2.0000 - 3.0000i 3.0000 + 5.0000i

 
isreal(A) 
Devuelve un lógico 1 (true) si A no tiene una parte imaginaria. En caso contrario devuelve un lógico 0 (false). 
 
Ejemplo 1: 

Si un cálculo resulta en un componente con parte imaginaria cero, isreal devuelve true. 

x=3+4i;
y=5-4i;
isreal(x+y)

ans =

1
 

Ejemplo 2: 

Estos ejemplos usan isreal para detectar la presencia o ausencia de números imaginarios en un arreglo. 
Haga  

x = magic(3);
y = complex(x);


 
isreal(x) devuelve true porque ningún elemento de x tiene un componente imaginario. 

isreal(x)
ans =
1

isreal(y) devuelve false, porque cada elemento de x tiene un componente imaginario, aún cuando el valor 
del componente imaginario es 0. 

isreal(y)
ans =
0

La  siguiente  expresión  detecta  estrictamente  arreglos  reales,  es  decir,  los  elementos  con 
componentes imaginarios de valor 0 son tratados como reales. 

~any(imag(y(:)))
ans =
1

 
Ejemplo 3: 
Dadas las siguientes celdas de arreglo, 
 
C{1} = pi; % double
C{2} = 'John Doe'; % char array
C{3} = 2 + 4i; % complex double
C{4} = ispc; % logical
C{5} = magic(3); % double array
C{6} = complex(5,0) % complex double

C =
[3.1416] 'John Doe' [2.0000+ 4.0000i] [1] [3x3 double] [5]

isreal muestra que todas, excepto C{1,3} y  C{1,6} son arreglos reales. 

for k = 1:6
x(k) = isreal(C{k});
end

x =
1 1 0 1 1 0

 
 
 
 
 
 
 

 
CONVERSIONES DE RECTANGULAR-POLAR Y POLAR-RECTANGULAR EN
MATLAB

USAR [ANGULO,MAG] = cart2pol(X,Y) PARA CONVETIR DE RECTANGULAR A POLAR

(Ojo.- el valor del ANGULO lo da en radianes)

USAR [X,Y] = pol2cart(ANGULO,MAG) PARA CONVERTIR DE POLAR A RECTANGULAR

(Ojo.- el valor del ANGULO se tiene que insertar en radianes)

NOTA: LAS VARIABLES ANGULO, MAG, X y Y PUEDEN TENER OTROS NOMBRES.

Ejemplo:

Convertir(3+4i), a su forma polar:


Solución:
[ANGULO,MAG] = cart2pol(3,4)

ANGULO =

0.9273 (% está en Radianes)

MAG =

>> ANGULO_G=0.9273*180/pi ( pasamos a grados)

ANGULO_G=

53.1304
Ejemplo: Convertir 5 ∟53.13034

Solución:

Primero convertimos los 53.13034 a radianes:

ANGULO_R= 53.13034*pi/180

ANGULO _R=

0.9273

[X,Y] = pol2cart(0.9273,5) o también podemos poner [X,Y] = pol2cart(ANGULO_R,5)

>> [X,Y] = pol2cart(0.9273,5)

X=

3.0000

Y=

4.0000

O también;

>> [X,Y] = pol2cart(53.1304*pi/180,5)

X=

3.0000

Y=

4.0000
Otra manera de convertir de POLAR A RECTANGULAR es:

Ejemplo: 15 ángulo de 60°, sería:

15*exp(j*60*pi/180) % el pi/180 es para convertir los 60 a radianes.

ans =

7.5000 +12.9904i

Y para convertir de RECTANGULAR A POLAR:

Guardamos en una variable el número en RECTANGULAR:

Ejemplo: Va_rec=7.5000 +12.9904i

Va_polar= [abs(Va_rec), angle(Va_rec)*180/pi]

Va_polar =

15.0000 60.0000

OTRO MANERA SERÍA

Puedes hacer una función que los convierta, basándote en trigonometría.

Las entradas son la magnitud y el ángulo en grados.


Las salidas son los valores de x e y.

function [x,y]= polar2cart (mag, ang_in_deg)


x = mag * cos(ang_in_deg*pi/180);
y = j * mag * sin(ang_in_deg*pi/180);
OTRA MANERA ES:

z = x + y*i ; DE RECTANGULAR A POLAR

r = sqrt(x^2+y^2);
theta = atan2(y,x);

z = r*exp(i*theta);

r = abs(z);

theta = angle(z);