Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I. OBJETIVOS:
Analizar y comprobar las diversas propiedades de las señales discretas
empleando Matlab.
Inversión en el tiempo
II. MATERIALES:
Computador con MATLAB/Octave
Input: Pide al usuario ingresar valores con el teclado, además visualiza un texto con lo
que se pide ingresar.
Find: Encuentra los índices y valores de los elementos que no son ceros.
Script 1
Script 2
El siguiente script nos permite graficar una señal con retardo y adelanto.
n_d = input('Entre retardo: ') % Nos pide ingresar el retardo
n_a = input('Entre adelanto: ') % Nos pide ingresar el adelanto
Análisis
Para graficar una señal con adelanto o retraso en Matlab solo es necesario alterar el
dominio y mantener la misma función.
En el caso del retardo desplazamos el dominio hacia la derecha, aumentando cada
valor del dominio por el valor del retardo.
En el caso del adelanto desplazamos el dominio hacia la izquierda, disminuyendo cada
valor del dominio por el valor del adelanto.
INVERSIÓN EN EL TIEMPO
Analice y compruebe los siguientes scripts para invertir señales en el tiempo.
Script 1
Script 2
Script 1
Análisis
Para graficar una señal comprimida definimos un nuevo dominio cuyos valores son los valores
del dominio original pero divididos por el factor de compresión, tomando solo los valores
enteros.
Luego creamos la señal comprimida con los valores de la señal original donde solo tomamos los
elementos correspondientes a las posiciones del nuevo dominio.
Notamos que de esta manera perdemos datos.
Script 2
subplot(2, 1, 2);
stem(t2, x2); % Grafica la señal ensanchada x2
axis([-20 20 0 10]); % Declaramos los límites de los ejes de la gráfica
end
Análisis
Para graficar una señal ensanchada debemos encontrar la primera y la última posición del
dominio y multiplicarlas por el factor de ensanchamiento, para luego crear un nuevo dominio
con esos extremos.
Luego debemos iterar desde un valor igual al factor de ensanchamiento hasta la longitud del
nuevo dominio expandido y llenar con los valores correspondientes de las posiciones divisibles
entre el factor de ensanchamiento de la señal original. Las posiciones que no cumplen dicha
condición serán llenadas con ceros.
PROBLEMAS PROPUESTOS
RETARDO DE SECUENCIA
function seq_del(x,n,ax,nd)
subplot(2, 1, 1), stem(n, x)
axis(ax) %VALORES DE LIMITES X e Y
title('Senal x[n]')
n = n + nd;
subplot(2, 1, 2), stem(n, x)
title('Senal x[n] con retardo')
axis(ax) %VALORES DE LIMITES X e Y
end
INVERSIÓN DE SECUENCIA
function x_inv = seq_inv(x,n,ax)
subplot(2, 1, 1);
stem(n, x);
title('Senal x[n]')
axis(ax) %VALORES DE LIMITES X e Y
n = -n;
longitud = length(n);
n = n(longitud:-1:1);
x_inv = x(longitud:-1:1);
subplot(2, 1, 2);
stem(n, x_inv);
title('Senal x[-n]')
axis(ax) %VALORES DE LIMITES X e Y
end
COMPRESIÓN DE SECUENCIA
function x_cmp = seq_cmp(x, n, nc, ax)
subplot(2, 1, 1);
stem(n, x);
title('Senal x[n]')
axis(ax);
longitud_n = length(n);
for(i=1:1:longitud_n)
if mod(n(i), nc) == 0
n = n / nc;
n1 = n(i:nc:longitud_n);
longitud_x = length(x);
x_cmp = x(i:nc:longitud_x);
break;
end
end
subplot(2, 1, 2);
stem(n1, x_cmp);
title('Senal x[n] comprimida')
axis(ax);
end
ENSANCHAMIENTO DE SECUENCIA
function x_wid=seq_wid(x, n, nw, ax)
subplot(2, 1, 1);
stem(n, x);
axis(ax);
longitud_n = length(n);
Inicial_n = n(1);
Final_n = n(longitud_n);
n1 = [nw * Inicial_n:1:nw * Final_n];
longitud_n1 = length(n1);
for j=1:1:longitud_n1
if(mod(j,nw))==0
for i = j:1:longitud_n1 + (j-1)
if mod(i, nw) == 0
x_wid(i - (j-1)) = x(i / nw);
else
x_wid(i - (j-1)) = 0;
end
end
break
end
end
subplot(2, 1, 2);
stem(n1, x_wid);
axis(ax);
end
end
x1; % x[-n]
[x2,n1] =seq_cmp(x, n, 3, ax) % x[3n]
[x3,na] =seq_wid(x,n,3,ax) % x[n/3]
x4 = seq_inv(x,n,ax) % x[-n]
n4 = n+1; % x[-n+1]
xnegative=-1.*x4; %invertimos la funcion para la resta
end
n1=[-5:1:5];
x1=[-1 -1 -1 -1 -1 1 1 1 1 1 1];
n2=[-2 -1 0 1 2 3 4 5 6 7];
x2=[1 2 3 0 0 0 0 0 0 1];
n3=[-4 -3 -2 -1 0 1 2 3];
x3=[-1 2 2 1 1 2 1 -1];
ax=[-10 10 -5 5];
%para el primer termino
[x11,n11]=seq_cmp(x1,n1,2,ax);
%GRAFICAMOS
subplot(3,1,1),stem(n1,x1) %graficamos x[n]
title('x1[n]');
grid minor;
n1=[-5:1:5];
x1=[-1 -1 -1 -1 -1 1 1 1 1 1 1];
n2=[-2 -1 0 1 2 3 4 5 6 7];
x2=[1 2 3 0 0 0 0 0 0 1];
n3=[-4 -3 -2 -1 0 1 2 3];
x3=[-1 2 2 1 1 2 1 -1];
ax=[-10 10 -5 5];
%para el primer termino
[x11,n11]=seq_wid(x1,n1,2,ax);
%GRAFICAMOS
subplot(3,1,1),stem(n1,x1) %graficamos x[n]
title('x1[n]');
grid minor;
longitud_n = length(n);
Inicial_n = n(1);
Final_n = n(longitud_n);
n1 = [nw * Inicial_n:1:nw * Final_n];
longitud_n1 = length(n1);
for j=1:1:longitud_n1
if(mod(j,nw))==0
for i = j:1:longitud_n1 + (j-1)
if mod(i, nw) == 0
x_wid(i - (j-1)) = x(i / nw);
else
try
x_wid(i - 1) = (x((i-1)/nw)+x((i+1)/nw))/2;
catch exception
x_wid(i - 1) = 0;
end
end
end
break
end
end
subplot(2, 1, 2);
stem(n1, x_wid);
axis(ax);
end
longitud_n = length(n);
Inicial_n = n(1);
Final_n = n(longitud_n);
n1 = [nw * Inicial_n:1:nw * Final_n];
longitud_n1 = length(n1);
for j=1:1:longitud_n1
if(mod(j,nw))==0
for i = j:1:longitud_n1 + (j-1)
if mod(i, nw) == 0
x_wid(i - (j-1)) = x(i / nw);
try
valor1 = x(i / nw);
valor2 = x(i / nw + 1);
for k = 1:nw - 1
x_wid(i - (j-1) + k) = x_wid(i - (j-1) + k -1) + (valor2 - valor1) / nw;
end
catch
end
end
end
break
end
end
subplot(2, 1, 2);
stem(n1, x_wid);
axis(ax);
end
Para un ensanchamiento de 3
>> x=[1 2 3 4 5 5 5 4 3 2 1];
>> n=[-5:1:5];>> ax=[-20 20 0 5];
>> seq_wid_promedio(x,n,3,ax)
V. CONCLUSIONES:
En esta experiencia se aprendió a crear funciones en MATLAB en scripts de
tal manera que se puedan usarse de manera general con cualquier señal.
Los métodos usados de escalamiento, inversión, retraso, etc, son usados sin
necesidad de modificar toda la función principal.
Para el ensanchamiento se puede llenar las posiciones vacías con ceros o
con el promedio de los valores adyacentes.
Siempre se debe tener en cuenta los dominios de las funciones al
programar.
VI. REFERENCIAS:
https://www.mathworks.com/help/matlab/ref/numel.html?searchHighlight=num
el&s_tid=doc_srchtitle
https://www.mathworks.com/help/signal/ref/sawtooth.html?searchHighlight=sa
wtooth&s_tid=doc_srchtitle
https://www.mathworks.com/help/signal/ref/square.html?searchHighlight=squar
e&s_tid=doc_srchtitle