Documente Academic
Documente Profesional
Documente Cultură
DE SEÑALES
EXPERIENCIA 2
PROPIEDADES DE LAS SEÑALES
Comando Descripción
acker Calcula la matriz K para ubicar los polos de A-BK, vea también place
axis Corrige la escala del gráfico actual, vea también plot, figure
dimpulse Respuesta al impulso de sistemas lineales de tiempo discreto, vea también dstep
Diseño de reguladores LQR lineales cuadráticos para sistemas de tiempo discreto, vea
dlqr
también lqr
dlsim Simulación de sistemas lineales de tiempo discreto, vea también lsim
dstep Respuesta al escalón de sistemas lineales de tiempo discreto, vea también stairs
figura Crea una nueva figura o redefine la figura actual , vea también subplot, axis
help Ayuda
impulse Respuesta al impulso de sistemas lineales de tiempo continuo, vea también step, lsim, dlsim
lqr Diseño de reguladores lineales cuadráticos LQR para sistemas continuos, vea también dlqr
margin Devuelve margen de ganancia, margen de fase, y frecuencias de cruce, vea también bode
Grafica el diagrama de Nyquist, vea también lnyquist1. Note que este comando reemplaza al
nyquist1
comando nyquist para obtener diagramas de Nyquist más precisos.
place Calcula la matriz K para ubicar los polos de A-BK, vea también acker
rscale Encuentra el factor de escala para un sistema con realimentación completa de estados
Genera grilla de razón de amortiguación (zeta) y frecuencia natural (Wn) constantes , vea
sgrid
también jgrid, sigrid, zgrid
sigrid Genera grilla de tiempo de establecimiento (sigma) constante, vea también jgrid, sgrid, zgrid
Crea modelos en espacio de estado o convierte modelos LTI a espacio de estado, vea también
ss
tf
stairs Gráfico tipo escalera para respuesta discreta, vea también dstep
text Agrega texto al gráfico actual, vea también title, xlabel, ylabel, gtext
Agrega una identificación al eje horizontal/vertical del gráfico actual, vea también title, text,
xlabel/ylabel
gtext
funciones útiles:
Comando Descripción
square Genera una onda cuadrada con período 2π para los elementos de la matriz de tiempo t.
Genera una onda de diente de sierra u onda triangular con período 2π para los elementos de la matriz de
sawtooth tiempo t con picos de -1 y 1 y aumenta linealmente con el tiempo con una pendiente de 1 / π en cualquier
otro momento .
n3=n1-n_a;
x3=x1;
subplot(3,1,3);
stem(n3,x3);
title('Señal con adelanto x(n+n_a)');
n=-1:2;%[-1 0 1 2]
x=[3 1 -2 -4];
subplot(3,1,1)
stem(n,x);
axis([-3 3 -5 5]);
title('Señal x(n)');
y=fliplr(-n);
subplot(3,1,3);
stem(y,c);
title('Señal invertida en el tiempo x(-n)');
%x2(t)=x1(2*t)
longitud_t1=length(t1)
t=t1/2;
t2=t(1:2:longitud_t1);
longitud_t2=length(t2); %Nuevo vector de tiempo, comprimido
x2=x1(1:2:longitud_t1); %Nueva secuencia, comprimida
subplot(2,1,2);
stem(t2,x2);
axis([-10 10 0 10]);
%x2(t)=x1(t/2);
longitud_t1=length(t1);
Inicial_t1=t1(1);
Final_t1=t1(longitud_t1);
t2=(2*Inicial_t1:1:2*Final_t1) %Nuevo tiempo, al doble de duración
longitud_t2=length(t2)
for i=1:longitud_t2
if mod(i,2)==0
x2(i)=x1(i/2); %Nueva secuencia, comprimida
else
x2(i)=0;
end
end
subplot(2,1,2);
stem(t2,x2);
axis([-20 20 0 10]);
Elaboramos en el editor:
%funcion seq_adv
%adelanto de secuencia
function [x2,n2] = seq_adv(x1,n1,adelanto)
%n_a=input('Entre adelanto n_a: ')
n_a=adelanto;
n2= n1-n_a; %Dominio de la secuencia con
retraso
x2=x1; %La misma secuencia solo cambia
su dominio
mint=min(n1);
maxt=max(n1);
minx=min(x1);
maxx=max(x1);
if mint>min(n2)
mint=min(n2)
end
if maxt<max(n2)
maxt=max(n2)
end
if minx>min(x2)
minx=min(x2)
end
if maxx<max(x2)
maxx=max(x2)
end
if minx>0
minx=0;
elseif maxx<0
maxx=0;
end
subplot(2,1,1);
stem(n1,x1);
axis([mint maxt minx maxx]);
subplot(2,1,2);
stem(n2,x2);
axis([mint maxt minx maxx]);
end
Elaboramos en el editor
%funcion seq_del
%funcion retardo de secuencia
function [x2,n2] = seq_del(x1,n1,retardo)
%n_a=input('Entre retardo n_a: ')
n_a=retardo;
n2= n1+n_a; %Dominio de la secuencia con
retraso
x2=x1; %La misma secuencia solo cambia su
dominio
mint=min(n1);
maxt=max(n1);
minx=min(x1);
maxx=max(x1);
if mint>min(n2)
mint=min(n2)
end
if maxt<max(n2)
maxt=max(n2)
end
if minx>min(x2)
minx=min(x2)
end
if maxx<max(x2)
maxx=max(x2)
end
if minx>0
minx=0;
elseif maxx<0
maxx=0;
end
subplot(2,1,1);
stem(n1,x1);
axis([mint maxt minx maxx]);
subplot(2,1,2);
stem(n2,x2);
axis([mint maxt minx maxx]);
end
mint=min(n1);
maxt=max(n1);
minx=min(x1);
maxx=max(x1);
if mint>min(n2)
mint=min(n2)
end
if maxt<max(n2)
maxt=max(n2)
end
if minx>min(x2)
minx=min(x2)
end
if maxx<max(x2)
maxx=max(x2)
end
if minx>0
minx=0;
elseif maxx<0
maxx=0;
end
subplot(2,1,1);
stem(n1,x1);
axis([mint maxt minx maxx]);
subplot(2,1,2);
stem(n2,x2);
axis([mint maxt minx maxx]);
end
%funcion seq_cpm
%comprension de secuencia
function [x2,n2] = seq_cpm(x1,n1,compres)
%longitud_n1=input('Comprension longitud_n1: ')
longitud_n1=length(n1);
n2=n1/compres;
x2=x1;
j=1;
for i=1:(length(n2)-1)
%escoger el valor redondeado
nn2=round(n2(i));
if nn2<n2(i)
nn2=nn2+1;
end
if nn2< n2(i+1)
nc(j)=nn2;
delta=((x2(i+1)-x2(i)))/(n2(i+1)-n2(i))*(nn2-n2(i));
%delta=0;
xc(j)=x2(i)+delta;
j=j+1;
end
end
%x1=x2;
%n1=n2;
n2=nc;
x2=xc;
mint=min(n1);
maxt=max(n1);
minx=min(x1);
maxx=max(x1);
if mint>min(n2)
mint=min(n2)
end
if maxt<max(n2)
maxt=max(n2)
end
if minx>min(x2)
minx=min(x2)
end
if maxx<max(x2)
maxx=max(x2)
end
if minx>0
minx=0;
elseif maxx<0
maxx=0;
end
subplot(2,1,1);
stem(n1,x1);
axis([mint maxt minx maxx]);
subplot(2,1,2);
stem(n2,x2);
axis([mint maxt minx maxx]);
end
n1=ancho*t1;
t2=n1(1);
x2=x1(1);
for i=1:(length(n1)-1)
auxt=t1(i+1)-t1(i);
t2=[t2 (n1(i)+auxt): auxt: n1(i+1)]
auxx=(x1(i+1)-x1(i))/ancho;
%%solucion cuando el valor x1(i)=x1(i+1) ":auxx:" se vuelve
ambiguo
if auxx~=0
x2=[x2 (x1(i)+auxx): auxx: x1(i+1)];
else
xx2=ones(1,ancho);
xx2=xx2*x1(i);
x2=[x2 xx2]
end
%%con redondeo:
x2=round(x2);
% for j=1:ancho
% x2=[x2 auxx];
% %x2=[x2 (x1(i)+auxx): auxx: x1(i+1)];
% end
%x2=[x2 x2(i+1)];
end
mint=min(t1);
maxt=max(t1);
minx=min(x1);
maxx=max(x1);
if mint>min(t2)
mint=min(t2)
end
if maxt<max(t2)
maxt=max(t2)
end
if minx>min(x2)
minx=min(x2)
end
if maxx<max(x2)
maxx=max(x2)
end
if minx>0
minx=0;
elseif maxx<0
maxx=0;
end
subplot(2,1,1);
stem(t1,x1);
axis([mint maxt minx maxx]);
subplot(2,1,2);
stem(t2,x2);
axis([mint maxt minx maxx]);
end
02 – Empleando las funciones creadas
Determine/grafique:
- x1[n], x2[n] y x3[n]
- x1[2n] - x2[-n] + x3[-n+4]
- x1[0.5n] - x2[2n] + x3[-n-2]
- x1[n/a] - x2[b*n] + x3[-n+c] (asuma a, b y c)
Solución 2a.
%Lab2_03_propuesto2.m
%PROBLEMAS PROPUESTOS
%02 empleando las funciones creadas :
%a
T=0.1;
n1=[-5:1:5];
x1=[6 2 3 7 5 5 5 7 3 2 6];
%%llamamosa la funcion inversor
figure(1)
[x2,n2] = seq_inv(x1,n1);
if x2==x1
title('es funcion par')
elseif x2==-x1
title('es funcion impar')
end
%%falta componentes: PAR E IMPAR PREGUNTA 03-02
%% x[-n]
x1=[6 2 3 7 5 5 5 2 3 -1 -2];
figure(2)
[x3,n3] = seq_inv(x1,n1);
%% x[3n]
figure(3)
[x4,t4] = seq_wid(x1,n1,3);
%% x[n/3]+(-x[-n+1])
figure(4)
[x5,n5]=seq_cpm(x1,n1,3); %%comprimimos x[n/3]
[x6,n6]=seq_inv(x1,n1); %%invertimos x[-n]
[x6,n6]=seq_del(-x6,n6,1); %%hacemos un retardo x[-n+1] luego (-
x[-n+1])
[x7,n7]=seq_sum(x5,n5,x6,n6);
%A% x1[2n]-x2[-n]+x3[-n+4]
figure(2)
[ax1,an1] = seq_wid(x1,n1,2);
[ax2,an2] = seq_inv(-x2,n2);
[ax3,an3] = seq_inv(x3,n3);
[ax3,an3] = seq_del(-ax3,an3,1);
[ax,an]=seq_sum(ax1,an1,ax2,an2);
[ax,an]=seq_sum(ax,an,ax3,an3);
stem4(ax1,an1,ax2,an2,ax3,an3,ax,an);
%B% x1[n/2]-x2[2n]+x3[-n-2]
figure(3)
[ax1,an1] = seq_cpm(x1,n1,2);
[ax2,an2] = seq_wid(-x2,n2,2);
[ax3,an3] = seq_inv(x3,n3);
[ax3,an3] = seq_adv(x3,n3,2);
stem4(ax1,an1,ax2,an2,ax3,an3,ax,an);
%C% x1[n/a]-x2[b*n]+x3[-n+c]
a=2;
b=2;
c=3;
figure(4)
[ax1,an1] = seq_cpm(x1,n1,a);
[ax2,an2] = seq_wid(-x2,n2,b);
[ax3,an3] = seq_inv(x3,n3);
[ax3,an3] = seq_adv(x3,n3,c);
stem4(ax1,an1,ax2,an2,ax3,an3,ax,an);
Gráfica de las tres funciones definidas para los ejercicios
x1[n], x2[n] y x3[n]
(figure1)
Resultado de x1[2n] +(- x2[-n]) + x3[-n+4]
Figure(2)
Resultado de graficar x1[0.5n] - x2[2n] + x3[-n-2]
Figure(3)
Resultado de Graficar: x1[n/a] - x2[b*n] + x3[-n+c] ( a=2, b=2 y c=3)
Figure(4)
03 – Para el caso de ensanchamiento de secuencia, modificar la función
creada tal que para los índices donde no existan valores definidos en la
secuencia original se considere como valor el promedio entero
(redondeado) de los valores contiguos de la secuencia original (en lugar
de ceros).
SOLUCION 3
%Lab2_03_propuesto2_b.m
%PROBLEMAS PROPUESTOS
%03 correcion de ensanchamiento:
n1=[-10:1:10];
x1=[1 2 3 4 5 6 7 8 9 10 10 10 9 8 7 6 5 4 3 2 1];
[x2,t2] = seq_wid(x1,n1,2);
Resultado de aplicar el script corregido y además como se indico en el ejercicio
también rellenamos los ceros con valores medios entre cada valor vecino y
tomando como valor correcto su número redondeado.
V. OBSERVACIONES Y CONCLUCIONES: