Vous êtes sur la page 1sur 5

C. RESPUESTA DE UN SISTEMA LTI.

2. Analice cada instrucción y ejecute el programa de §C.1. en una función. Consigne los resultados.
function [b,a] = filtro(h)
b=input('Ingrese el valor de numerador = ');
a=input('Ingrese el valor de denominador = ');
nm=65; % Numero de muestras
ceros(1:nm-1)=0; % Seal impulso
impulso=[1 ceros];
h= filter(b,a,impulso);
subplot(2,1,1); stem(impulso);
xlabel('Instantes de muestreo');
title('Señal de entrada')
ylabel('Impulso');
subplot(2,1,2);
stem(h); %Visualizacion salida
xlabel('Instantes de muestreo');
title('Respuesta al impulso');
ylabel('h(n)');

para la function se establece las variables de entrada como lo son el numerador y el denominador
de función de transferencia, también se deja fija la cantidad de muestras a evaluar.
%b=[1]; Coeficientes del numerador
%a=[1 0.8]; Coeficientes del denominador.

3. Interprete los resultados del programa anterior. ¿Como se puede calcular la frecuencia de
corte teórica en Hertz a partir de h(n)?

si se desea expresar esta frecuencia en Hertz, se debe antes definir una frecuencia de muestreo, es
decir, una relación de muestras en unidad de tiempo, para así a partir de la frecuencia normalizada,
obtener una frecuencia angular expresada en rad/s tal.

Ws = WcXπrad/muestra * fs

Ejemplo:
 Fs la frecuencia de muestreo elegida en unidades de muestre0/s.
 Wc es la frecuencia angular normalizada.

Wc=0,9287
De manera que si elegimos una frecuencia de muestro de Fs=1000, tenemos que:
Ws= (0,9287)Xπrad/muestra X1000 muestra/s
Ws=3074,676 rad/s
En frecuencia tenemos:
f=(3076,676rad/s)/2π
f=464,35Hz
4. Repita los numerales §C.1 a §C.3, para la siguiente función de transferencia H(z) = 1/ (1 − 0.8z).

Wc=0,7385 De manera que si elegimos una frecuencia de muestro de Fs=1000, tenemos que:
Ws= (0,7385)Xπrad/muestra X1000 muestra/s
Ws=2363 rad/s
En frecuencia tenemos:
f=(2363rad/s)/2π
f=376Hz

5. Con base en el programa de §1, implemente una función en Matlab que permita visualizar en
una misma ventana la señal de entrada, x(n), y de salida, y(n), del filtro en rango de muestras
indicado por el usuario (menor o igual al número máximo de las muestras que presenta la señal de
entrada). La función debe permitir obtener la respuesta para cualquier tipo de señal discreta.
option = input('Escoja el numero correspondiente al vector señal X(n) que
desea ingresar al sistema:\n1.)Representación Secuencial\n2.)Impulso
Unitario\n3.)Escalón Unitario\n4.)Exponencial\n');

if ( option == 1)
%Ingreso secuencia de la entrada
p=input('Ingrese el vector secuencial de entrada x(n): ');
xo=input('Ingrese el instante cero del la entrada x(n): ');
max=length(p);
p==xo;
pos_x=find(p==xo);
x= [ p(1,(pos_x -1)),pos_x, p(1,(pos_x+1:max))];
n_max=[1-pos_x:max-pos_x];

end

if (option==2)
%Entrada impulso unitario
n_max=input('Ingrese el numero de muestras que desea: ');
x = [ zeros(1,n_max),1,zeros(1,n_max)];

end

if (option==3)
%Entrada Escalon Unitario
n_max=input('Ingrese el valor del numero de muestras: ');%aqui se debe
llenar con los valores de m
A=input('Ingrese valor de amplitud: ');% aqui se debe llenar con los
valores de A
k=input('Ingrese el valor del desplazamiento en el eje del tiempo
discreto: ');%aqui se debe llenar con los valores de k
n = -n_max:n_max;% El rango de valores que va a tomar el eje x.
x = zeros (length(n),1);% Crea una matriz de ceros MxN donde el valor de
M esta dado por el comando length el cual determina el rango del vector.
yi = max(k-(-n_max)+1,1);% determina la posicion minima en la cual Y no
ca a ser 0.
yf = min(length(n),n_max-(-n_max)+1);% determina la pocicion maxima de de
los valores de Y.
c=(yf-yi);% constante que ayuda al posicionamiento del cambio en la señal
de salida indicando el numero de posiciones las cuales debe variar.
x(yi:yf) = A.*ones(1+c,1);% determina los valores en los cuales la señal
de salida ya no es 0.se usa la ecuacion del impulso.

end

if (option==4)
%Entrada Exponencial
n_max=input('Ingrese el valor del numero de muestras: ');%aquí se debe
llenar con los valores de m
A=input('Ingrese valor de amplitud: ');% aquí se debe llenar con los
valores de A
k=input('Ingrese el valor del desplazamiento en el eje del tiempo
discreto: ');%aqui se debe llenar con los valores de k
v=input('Ingrese el valor de la base exponencial: ');% aquí se debe
llenar con los valores de b
n = -n_max:n_max;% El rango de valores que va a tomar el eje x.
x = zeros (length(n),1);% Crea una matriz de ceros MxN donde el valor de
M esta dado por el comando length el cual determina el rango del vector.
yi = max(k-(-n_max)+1,1);% determina la posicion minima en la cual Y no
va a ser 0.
yf = min(length(n),n_max-(-n_max)+1);% determina la pocicion maxima de de
los valores de Y.
c=(yf-yi);% constante que ayuda al posicionamiento del cambio en la señal
de salida indicando el numero de posiciones las cuales debe variar.
x(yi:yf) = A.*(v.^([0:c]));% determina los valores en los cuales la señal
de salida ya no es 0. se uso la ecuacion de la funcion exponencial.

end

if (option > 4)
disp('Ha escogido una opcion Incorrecta');
return

end

b = input('Ingrese el vector de coeficientes de X(n) pertenecientes a la


ecdd: '); %Ingreso de los coeficientes de X(n) en la ecuación
nb = length(b); %numero de muestras que conforman la segunda señal de
entrada

a = input('Ingrese los coeficientes correspondientes a Y(n) en la


ecuacion: ');% Ingreso de los coeficientes de Y(n)

yo = input('Ingrese las condiciones iniciales del sistema: ');%vector


que contiene las condiciones iniciales

if ( option == 2 | option ==3 | option==4 )


eqdif_rec(b,a,x,yo,n_max);
end
if (option == 1)
eqdif_recc(b,a,x,yo,n_max);
end

Vous aimerez peut-être aussi