Monografias.com > Física
Descargar Imprimir Comentar Ver trabajos relacionados

Prácticas de DSP. Procesadores digitales de señales




Enviado por davidsavall



    Procesadores digitales de
    señales

    1. Práctica 1. Sistemas LTI y
      análisis de Fourier.
    2. Práctica 2.
      Muestreo.
    3. Práctica 3 La
      Transformada Z.
    4. Práctica 4. La DFT y la FFT.
      y Práctca 5.Diseño de filtros
      digitales.

    Nota: Para la realización de
    esta memoria se ha
    utilizado el procesador de
    textos "Microsoft Word
    2002 XP"

    PRACTICA 1. Sistemas LTI y
    análisis de Fourier.

    >> help conv

    La función
    conv(x,y) sirve para calcular la convolucion de x e y. El vector
    que resulta es de longitud Length(a)+length(b)-1. Si A y B son
    vectores de
    coeficientes polinómicos, la convolución es
    equivalente a multiplicar los dos polinómios.

    CONV Convolution and polynomial
    multiplication.

    C = CONV(A, B) convolves vectors A and
    B. The resulting

    vector is length
    LENGTH(A)+LENGTH(B)-1.

    If A and B are vectors of polynomial
    coefficients, convolving

    them is equivalent to multiplying the
    two polynomials.

    See also DECONV, CONV2, CONVN, FILTER
    and, in the Signal

    Processing Toolbox, XCORR,
    CONVMTX.

    >> help filter

    La función filter() permite
    calcular la salida de un sistema LTI
    causal cuando éste es definido mediante una
    ecuación en diferencias de coeficientes
    constantes.

    Si x es un vector con la secuencia de
    entrada y a y b son vectores con los coeficientes
    de la ecuación , la expression y=filter(b,a,x) devuelve un
    vector y con la respuesta del sistema LTI
    causal.

    FILTER One-dimensional digital filter.

    Y = FILTER(B,A,X) filters the data in vector X with
    the

    filter described by vectors A and B to create the
    filtered

    data Y. The filter is a "Direct Form II
    Transposed"

    implementation of the standard difference
    equation:

    a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + … +
    b(nb+1)*x(n-nb)

    – a(2)*y(n-1) – … – a(na+1)*y(n-na)

    If a(1) is not equal to 1, FILTER normalizes the
    filter

    coefficients by a(1).

    FILTER always operates along the first non-singleton
    dimension,

    namely dimension 1 for column vectors and non-trivial
    matrices,

    and dimension 2 for row vectors.

    [Y,Zf] = FILTER(B,A,X,Zi) gives access to
    initial and final

    conditions, Zi and Zf, of the delays. Zi is a vector of
    length

    MAX(LENGTH(A),LENGTH(B))-1 or an array of such vectors,
    one for

    each column of X.

    FILTER(B,A,X,[],DIM) or FILTER(B,A,X,Zi,DIM) operates
    along the

    dimension DIM.

    See also FILTER2 and, in the Signal Processing Toolbox,
    FILTFILT.

    Ejercicio 1.2 La función
    "conv"

    c=1; % Control

    if c==1

    x=ones(1,6); % Secuencia

    y=conv(x,x); % Convolución x*x

    Nx=0; % Indices

    Mx=5;

    Ny=Nx+Nx;

    My=Mx+Mx;

    ny=Ny:My;

    figure % Nueva figura

    stem(ny,y); % Resultados

    title('Figura 1.1')

    end

    Ejercicio 1.2.1 Promediador
    Móvil

    c=1; % Control

    if c==1

    n=-30:30; % Tiempo
    discreto

    h=1/7*ones(1,7); % Respuesta impulsional

    x=sin(2*pi*n/13); % Secuencia

    y=conv(h,x); % Convolución

    V=zeros(1,81); % Vector de ceros

    Nh=-3; % Indices h[n]

    Mh=3;

    Nx=-33; % Indices x[n]

    Mx=33;

    Ny=Nx+Nx; % Indices y[n]

    My=Mx+Mx;

    ny=Ny:My;

    V(8:8+66)=y; % Salida ajustada

    nV=-40:40; % Tiempo discreto

    figure % Nueva figura

    stem(nV,V); % Resultados

    title('Figura 1.2')

    end

    Ejercicio 1.3 La Función Filter

    c=1; % Control

    if c==1

    a=[1 2]; % Coeficientes y[n]

    b=[1 -3]; % Coeficientes x[n]

    n=0:5; % Tiempo discreto

    x=n; % Secuencia x[n]

    y=filter(b,a,x); % Filtrado de x[n]

    figure % Nueva figura

    stem(x,y); % Resultados

    title('Figura 1.3')

    end

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Ejercicio 1.3.1

    c=1; % Control

    if c==1

    %— Punto 1

    % Coeficientes y[n]

    a=[1 (-1.8*cos(pi/16)) 0.81];

    b=[1 1/2]; % Coeficientes x[n]

    n=0:50; % Tiempo discreto

    x=zeros(1,51); % Vector de ceros

    x(1)=1;

    y=filter(b,a,x); % Filtrado de x[n]

    figure % Nueva figura

    stem(n,y); % Resultados

    title('Figura 1.4')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %—

    n=-10:50; % Tiempo discreto

    x=zeros(1,61); % Vector de ceros

    x(11)=1;

    y=filter(b,a,x); % Filtrado de x[n]

    figure % Nueva figura

    stem(n,y); % Resultados

    title('Figura 1.4 Modificada la x[n]')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %— Punto 2

    n=-10:50; % Tiempo discreto

    x=zeros(1,61); % Vector de ceros

    x(11:61)=1;

    y=filter(b,a,x); % Filtrado de x[n]

    figure % Nueva figura

    stem(n,y); % Resultados

    title('Figura 1.5')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %—

    n=-10:50; % Tiempo discreto

    x=zeros(1,61); % Vector de ceros

    x(11:61)=1;

    y=filter(b,a,x); % Filtrado de x[n]

    yc=cumsum(y,1); % "Filtrado" de y[n]

    figure % Nueva figura

    stem(n,yc); % Resultados

    title('Figura 1.5 con Cumsum')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %—

    n=-10:50; % Tiempo discreto

    x=zeros(1,61); % Vector de ceros

    x(11:61)=1;

    y=filter(b,a,x); % Filtrado de x[n]

    y1=diff(y); % Recuperación

    n1=-9:50; % Nuevo intervalo

    figure % Nueva figura

    stem(n1,y1); % Resultados

    title('Respuesta al impulso con diff')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %— Punto 3

    a=[1]; % Coeficientes y[n]

    b=1/7*ones(1,7); % Coeficientes x[n]

    n=-30:30; % Tiempo discreto

    x=sin(2*pi*n/13); % Secuencia

    y=filter(b,a,x); % Filtrado de x[n]

    figure % Nueva figura

    stem(n,y); % Resultados

    title('Figura 1.2 con función filter')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    end

    Ejercicio 1.4 Cancelación de
    ecos

    c=1; % Control

    if c==1

    % Lectura
    WAV

    [voz,fs]=wavread('ho1.wav');

    sound(voz,fs) % Reproducción

    % [voz fs]=loadw16('ho1.wav');

    pause % Control de
    reproducción

    %– Reproducción con ecos 1.4.1

    N=1000; % Retardo

    alfa=0.5; % Factor de atenuación

    % Sistema

    b=[1 zeros(1,999) alfa];

    % Filtrado

    ve=filter(b,1,voz);

    sound(ve,fs) % Reproducción con eco

    %—

    figure % Nueva figura

    stem(b); % Resultados

    title('Figura 1.6')

    pause % Control de reproducción

    %– Sistema inverso 1.4.2

    % Coeficientes y[n]

    a=[1 zeros(1,999) alfa];

    b=[1]; % Coeficientes x[n]

    y=filter(b,a,ve); % Señal sin ecos

    sound(y,fs) % Reproducción sin eco

    %— Cálculo del sistema
    inverso

    n=0:4000; % Intervalo discreto

    a=[1 zeros(1,999) alfa]; % Coeficientes de
    y[n]

    b=1; % Coeficientes de x[n]

    x=zeros(1,4000); % Secuencia impulso

    x(1)=1;

    hi=filter(b,a,x); % Filtrado

    figure % Nueva figura

    subplot(211)

    plot(n,hi) % Respuesta al impulso

    title('Respuesta al impulso nuevo sistema')

    b=[1 zeros(1,999) alfa]; % Sistema con eco

    he=filter(b,1,x); % Filtrado

    ht=conv(hi,he); % Convolución

    subplot(212)

    plot(n,ht) % Respuesta al impulso

    title('Convolución sistema inverso y con
    eco')

    end

    Ejercicio 1.5.1 Señales
    de duración finita

    c=1; % Control

    if c==1

    p=ones(1,15); % Pulso de duración 15

    ep=fft(p,256); % Espectro del pulso

    figure % Nueva figura

    subplot(221)

    plot(abs(ep)) % Módulo del espectro

    title('Espectro del pulso ( 0 y 1 )')

    ep=fftshift(ep); % Espectro del pulso

    % Frecuencia

    f=linspace(-0.5,0.5-(1/256),256);

    subplot(222)

    plot(f,abs(ep)) % Módulo del espectro

    title('Espectro del pulso ( -0.5 y 0.5 )')

    subplot(223)

    plot(f,ep) % Módulo y fase del
    espectro

    title('Módulo y Fase del espectro')

    subplot(224)

    plot(f,imag(ep)) % Módulo y fase del
    espectro

    title('Fase del espectro')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    ep=ep.*exp(j*2*pi*f*7);

    figure % Nueva figura

    subplot(211)

    plot(f,real(ep)) % Módulo del
    espectro

    title('Módulo del espectro')

    subplot(212)

    plot(f,imag(ep)) % Módulo del
    espectro

    title('Fase del espectro')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    Ejercicio 1.5.2 Ecuaciones en
    diferencia

    c=1; % Control

    if c==1

    % Espectro señal exponencial

    [H,W]=freqz(1,[1 -0.9],256);

    figure % Nueva figura

    subplot(221)

    plot(W/(2*pi),abs(H)) % Módulo del espectro

    title('Módulo del espectro ( 0 y pi )')

    % Espectro señal exponencial

    [H,W]=freqz(1,[1 -0.9],256,'whole');

    subplot(222)

    plot(W/(2*pi),abs(H)) % Módulo del espectro

    title('Módulo del espectro ( 0 y 2*pi )')

    W=W-pi; % Espectro entre -0.5 y 0.5

    H=fftshift(H);

    subplot(223)

    plot(W/(2*pi),abs(H)) % Módulo del espectro

    title('Módulo del espectro ( -0.5 y 0.5 )')

    subplot(224)

    plot(W/(2*pi),angle(H)) % Fase del espectro

    title('Fase del espectro ( -0.5 y 0.5 )')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    end

    PRACTICA 2.
    Muestreo.

    >> help fftshift

    FFTSHIFT es útil para visualizar
    la Transformada de Fourier con la componente de la frecuencia
    cero en el centro del espectro. Por vectores, FFTSHIFT(X)
    intercambia las mitades izquierdas y derechas de X. Por matrices,
    FFTSHIFT(X) intercambia los primeros y terceros cuadrantes y los
    segundos y cuartos cuadrantes.

    FFTSHIFT Shift zero-frequency component
    to center of spectrum.

    For vectors, FFTSHIFT(X) swaps the left
    and right halves of

    X. For matrices, FFTSHIFT(X) swaps the
    first and third

    quadrants and the second and fourth
    quadrants. For N-D

    arrays, FFTSHIFT(X) swaps "half-spaces"
    of X along each

    dimension.

    FFTSHIFT(X,DIM) applies the FFTSHIFT
    operation along the

    dimension DIM.

    FFTSHIFT is useful for visualizing the
    Fourier transform with

    the zero-frequency component in the
    middle of the spectrum.

    See also IFFTSHIFT, FFT, FFT2,
    FFTN.

    Ejercicio 2.2 SEÑALES
    SINUSOIDALES

    c=1; % Control

    if c==1

    fs=8000; % Frecuencia de muestreo

    T=1/fs; % Período de muestreo

    f0=1000; % Frecuencia señal sinusoidal

    n=0:7999; % Tiempo discreto

    x=sin(2*pi*f0*n*T); % Secuencia x[n]

    sound(x,fs) % Reproducción de x[n]

    figure % Nueva figura

    t=n*T; % Intervalo temporal

    % Visualiza resultados

    subplot(211), stem(n(1:20),x(1:20))

    title('Señal sinusoidal x[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    subplot(212), plot(t(1:20),x(1:20))

    title('Señal sinusoidal x(t)'), grid

    xlabel('Tiempo (seg)'), ylabel('Unidades Lineales')

     figure % Nueva figura

    N=length(x); % Longitud de x[n]

    % Espectro de x[n]

    X=fftshift(fft(x,N))/N;

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/N),N);

    % Visualiza resultados

    subplot(211), plot(f,abs(X))

    title('Espectro discreto de x[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades Lineales')

    subplot(212), plot(f*fs,abs(X))

    title('Espectro continuo de x[n]'), grid

    xlabel('Frecuencia (Hz)'), ylabel('Unidades
    Lineales')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    end

    Ejercicio 2.3 SEÑAL CHIRP

    c=1; % Control

    if c==1

    fs=8000; % Frecuencia de muestreo

    T=1/fs; % Período de muestreo

    f0=3000; % Frecuencia señal
    sinusoidal

    beta=2000; % Beta

    n=0:1*(7999); % Tiempo discreto

    % Secuencia x[n]

    x=sin(2*pi*f0*n*T+0.5*beta*(n*T).^2);

    sound(x,fs) % Reproducción de x[n]

    figure % Nueva figura

    t=n*T; % Intervalo temporal

    % Visualiza resultados

    subplot(211), stem(n(1:100),x(1:100))

    title('Señal chirp x[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    subplot(212), plot(t(1:100),x(1:100))

    title('Señal chirp x(t)'), grid

    xlabel('Tiempo (seg)'), ylabel('Unidades
    Lineales')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    figure % Nueva figura

    N=length(x); % Longitud de x[n]

    % Espectro de x[n]

    X=fftshift(fft(x,N))/N;

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/N),N);

    % Visualiza resultados

    subplot(211), plot(f,abs(X))

    title('Espectro discreto de x[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    subplot(212), plot(f*fs,abs(X))

    title('Espectro continuo de x[n]'), grid

    xlabel('Frecuencia (Hz)'), ylabel('Unidades
    Lineales')

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    end

    Ejercicio 2.4 CAMBIO DE LA
    FRECUENCIA DE MUESTREO

    Ejercicio 2.4.1 Diezmado

    c=1; % Control

    if c==1

    n=0:124; % Tiempo discreto

    x1=0.4*(n-62); % Secuencia x1[n]

    x1=(sinc(x1)).^2;

    x2=0.2*(n-62); % Secuencia x2[n]

    x2=(sinc(x2)).^2;

    figure % Nueva figura

    % Visualiza resultados

    subplot(211), plot(n,x1)

    title('Secuencia x1[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    subplot(212), plot(n,x2)

    title('Secuencia x2[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    % Espectro de x1[n]

    X1=fftshift(fft(x1,2048));

    % Espectro de x2[n]

    X2=fftshift(fft(x2,2048));

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/2048),2048);

    % Visualiza resultados

    subplot(211), plot(f,abs(X1))

    title('Espectro discreto de x1[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    subplot(212), plot(f,abs(X2))

    title('Espectro discreto de x2[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    %— Diezmado por un factor M

    % Secuencia diezmada xd1[n]

    xd1=x1(1:2:length(x1));

    % Secuencia diezmada xd2[n]

    xd2=x2(1:2:length(x2));

    figure % Nueva figura

    % Visualiza resultados

    subplot(211), plot(xd1)

    title('Secuencia diezmada xd1[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    subplot(212), plot(xd2)

    title('Secuencia diezmada xd2[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    % Espectro de x1[n]

    Xd1=fftshift(fft(xd1,2048));

    % Espectro de x2[n]

    Xd2=fftshift(fft(xd2,2048));

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/2048),2048);

    % Visualiza resultados

    subplot(211), plot(f,abs(Xd1))

    title('Espectro discreto de xd1[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    subplot(212), plot(f,abs(Xd2))

    title('Espectro discreto de xd2[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    %— Filtro antialiasing

    fc=0.25; % Frecuencia de corte 0.5/M

    % Respuesta al impulso del filtro

    h=2*fc*sinc(2*fc*(-32:32)).*(hamming(65)');

    figure % Nueva figura

    freqz(h,1) % Visualiza resultados

    %— Filtrando x1[n]

    xf1=conv(h,x1); % Secuencia filtrada xf2[n]

    % Secuencia filtrada diezmada xfd2[n]

    xfd1=xf1(1:2:length(xf1));

    figure % Nueva figura

    % Espectro de xfd2[n]

    Xfd1=fftshift(fft(xfd1,2048));

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/2048),2048);

    % Visualiza resultados

    plot(f,abs(Xfd1))

    title('Espectro discreto de xfd1[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    end

    Ejercicio 2.4.2 Interpolación

    c=1; % Control

    if c==1

    n=0:124; % Tiempo discreto

    x1=0.4*(n-62); % Secuencia x1[n]

    x1=(sinc(x1)).^2;

    x2=0.2*(n-62); % Secuencia x2[n]

    x2=(sinc(x2)).^2;

    %— Interpolando por un factor L

    figure % Nueva figura

    % Visualiza resultados

    stem(x1(52:72))

    title('Secuencia x1[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    stem(x2(52:72))

    title('Secuencia x2[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    % Secuencia interpolada xe1[n]

    xe1=zeros(1,3*length(x1));

    xe1(1:3:length(xe1))=x1;

    % Secuencia interpolada xe2[n]

    xe2=zeros(1,3*length(x2));

    xe2(1:3:length(xe2))=x2;

    figure % Nueva figura

    % Visualiza resultados

    stem(xe1(177:197))

    title('Secuencia interpolada xe1[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    stem(xe2(177:197))

    title('Secuencia interpolada xe2[n]'), grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    % Espectro de xe1[n]

    Xe1=fftshift(fft(xe1,2048));

    % Espectro de xe2[n]

    Xe2=fftshift(fft(xe2,2048));

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/2048),2048);

    % Visualiza resultados

    subplot(211), plot(f,abs(Xe1))

    title('Espectro discreto de xe1[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    subplot(212), plot(f,abs(Xe2))

    title('Espectro discreto de xe2[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    %— Filtro interpolador

    fc=0.16; % Frecuencia de corte 0.5/L

    % Respuesta al impulso del filtro

    h=(2*fc*sinc(2*fc*(-32:32)).*(hamming(65)'))*3;

    figure % Nueva figura

    freqz(h,1) % Visualiza resultados

    %— Filtrando xe1[n] y xe2[n]

    % Xfe1=conv(h,xe1); % Secuencia filtrada
    xfe1[n]

    % xfe2=conv(h,xe2); % Secuencia filtrada
    xfe2[n]

    xfe1=filter(h,1,xe1); % Secuencia filtrada
    xfe1[n]

    xfe2=filter(h,1,xe2); % Secuencia filtrada
    xfe2[n]

    figure % Nueva figura

    % Visualiza resultados

    stem(xfe1(209:229))

    title('Secuencia interpolada filtrada xfe1[n]'),
    grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    stem(xfe2(209:229))

    title('Secuencia interpolada filtrada xfe2[n]'),
    grid

    xlabel('n'), ylabel('Unidades Lineales')

    figure % Nueva figura

    % Espectro de xfe1[n]

    Xfe1=fftshift(fft(xfe1,2048));

    % Espectro de xfe2[n]

    Xfe2=fftshift(fft(xfe2,2048));

    % Frecuencia discreta

    f=linspace(-0.5,0.5-(1/2048),2048);

    % Visualiza resultados

    subplot(211), plot(f,abs(Xfe1))

    title('Espectro discreto de xfe1[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    subplot(212), plot(f,abs(Xfe2))

    title('Espectro discreto de xfe2[n]'), grid

    xlabel('fd=f/fs'), ylabel('Unidades
    Lineales')

    end

    Ejercicio 2.4.3 Cambio fs por un factor
    racional

    c=1; % Control

    if c==0

    % Carga archivo de
    voz

    [voz,fs]=wavread('ho1.wav');

    % Versiones anteriores a MATLAB 5.3

    % [voz fs]=loadw16('ho1.wav');

    clc

    disp('Pausa de voz… cualquier tecla para
    continuar')

    sound(voz,fs) % Reproducción archivo de
    voz

    pause

    %— Diezmado por un factor M

    % Voz diezmada

    vozd=voz(1:3:length(voz));

    disp('Pausa de voz diezmada… cualquier tecla para
    continuar')

    sound(vozd,fs/3) % Reproducción voz
    diezmada

    pause

    %— Filtro antialiasing

    fc=0.16; % Frecuencia de corte 0.5/M

    % Respuesta al impulso del filtro

    h=2*fc*sinc(2*fc*(-32:32)).*(hamming(65)');

    %— Filtrando voz

    % Voz filtrada

    vozf=filter(h,1,voz);

    % Voz diezmada

    vozfd=vozf(1:3:length(vozf));

    disp('Pausa de voz filtrada diezmada… cualquier tecla
    para continuar')

    sound(vozfd,fs/3) % Reproducción voz filtrada
    diezmada

    pause

    %— Interpolando por un factor L

    clc

    disp('Pausa de voz… cualquier tecla para
    continuar')

    sound(voz,fs) % Reproducción archivo de
    voz

    pause

    % Voz interpolada

    voze=zeros(1,3*length(voz));

    voze(1:3:length(voze))=voz;

    disp('Pausa de voz interpolada… cualquier tecla para
    continuar')

    sound(voze,3*fs) % Reproducción voz
    interpolada

    pause

    %— Filtro interpolador

    fc=0.16; % Frecuencia de corte 0.5/L

    % Respuesta al impulso del filtro

    h=(2*fc*sinc(2*fc*(-32:32)).*(hamming(65)'))*3;

    %— Filtrando voz

    % Voz filtrada

    vozfe=filter(h,1,voze);

    disp('Pausa de voz filtrada expandida… cualquier tecla
    para continuar')

    sound(vozfe,3*fs) % Reproducción voz filtrada
    expandida

    pause

    %— Cambio de la frecuencia de muestreo
    fs'=fs*(L/M)

    %— Solución 1: L=10, M=8

    %— Solución 2: L=5, M=4

    clc % Borra la pantalla

    % Control del cambio de fs

    L=5; % Factor de interpolación

    M=4; % Factor de diezmado

    %— Interpolando por un factor L

    disp('Pausa de voz… cualquier tecla para
    continuar')

    sound(voz,fs) % Reproducción archivo de
    voz

    pause

    % Voz interpolada

    voze=zeros(1,L*length(voz));

    voze(1:L:length(voze))=voz;

    %— Filtro interpolador

    fc=0.5/L; % Frecuencia de corte 0.5/L

    % Respuesta al impulso del filtro

    h=(2*fc*sinc(2*fc*(-32:32)).*(hamming(65)'))*L;

    %— Filtrando voz

    % Voz filtrada

    vozfe=filter(h,1,voze);

    %— Diezmado por un factor M

    % Voz diezmada

    vozfed=vozfe(1:M:length(vozfe));

    % Reproducción voz filtrada, expandida y
    diezmada

    disp('Pausa de voz filtrada, expandida y diezmada…
    cualquier tecla para continuar')

    sound(vozfed,fs*(L/M))

    pause

    end

    PRACTICA 3 La
    Transformada Z.

    >> help
    polar

    La función polar() permite
    hacer diagramas en
    forma polar, es decir, dado un numero complejo, polar()
    representa su módulo y fase.

    POLAR(THETA, RHO) hace un diagrama
    usando los coordenadas polares del angulo de la THETA , en
    radianes, frente el radio
    RHO.

    POLAR Polar coordinate
    plot.

    POLAR(THETA, RHO) makes a plot
    using polar coordinates of

    the angle THETA, in radians,
    versus the radius RHO.

    POLAR(THETA,RHO,S) uses the
    linestyle specified in string S.

    See PLOT for a description of
    legal linestyles.

    See also PLOT, LOGLOG, SEMILOGX,
    SEMILOGY.

    >> help
    roots

    La función roots(C)
    encuentra las raíces polinómicas del vector C,
    donde los ceros y los polos son las raíces de los
    polinomios del numerador y del denominador de la función
    de transferencia, respectivemente.

    ROOTS Find polynomial
    roots.

    ROOTS(C) computes the roots of the
    polynomial whose coefficients

    are the elements of the vector C.
    If C has N+1 components,

    the polynomial is C(1)*X^N + … +
    C(N)*X + C(N+1).

    See also POLY, RESIDUE,
    FZERO.

    >> help
    poly

    La función poly() construye
    un polinomio a partir de sus raíces.

    POLY Convert roots to
    polynomial.

    POLY(A), when A is an N by N
    matrix, is a
    row vector with

    N+1 elements which are the
    coefficients of the

    characteristic polynomial,
    DET(lambda*EYE(SIZE(A)) – A) .

    POLY(V), when V is a vector, is a
    vector whose elements are

    the coefficients of the polynomial
    whose roots are the

    elements of V . For vectors, ROOTS
    and POLY are inverse

    functions of each other, up to
    ordering, scaling, and

    roundoff error.

    ROOTS(POLY(1:20)) generates
    Wilkinson's famous example.

    See also ROOTS, CONV, RESIDUE,
    POLYVAL.

    Ejercicio 3.2 MANEJO DE FUNCIONES DE
    TRANSFERENCIA

    Ejercicio 3.2.1 REPRESENTACION GRAFICA DE POLOS
    Y CEROS

    c=1; % Control

    if c==1

    %— Punto 1

    z=0.7*exp(j*pi/3); % Variable compleja z

    figure % Nueva figura

    % Visualiza resultados

    polar(angle(z),abs(z),'o')

    title('Variable compleja en forma polar'),
    grid

    z=0.5+j*0.5; % Variable compleja z

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    figure % Nueva figura

    % Visualiza resultados

    polar(angle(z),abs(z),'o')

    title('Variable compleja en forma cartesiana'),
    grid

     Para ver el
    gráfico seleccione la opción "Descargar" del
    menú superior

    figure % Nueva figura

    % Variables
    complejas

    z=[0.5+j*0.5 0.7*exp(j*pi/3)];

    % Visualiza resultados

    polar(angle(z),abs(z),'x')

    title('Variables complejas'), grid

    Para ver el gráfico seleccione la
    opción "Descargar" del menú superior

    %— Punto 2

    clc % Borra la pantalla

    disp('Raices del polinomio z^2-z-2')

    A=[1 -1 -2]; % Polinomio z^2-z-2

    r=roots(A) % Raices del polinomio z^2-z-2

    %— Punto 3

    disp('Polinomio asociado con las raices…')

    A=poly([-1 2]) % Polinomio asociado con las
    raices…

    %— Punto 4

    A=[1 -1 -2]; % Polinomio z^2-z-2

    figure % Nueva figura

    subplot(211)

    zplane(A); % Diagrama de ceros y polos

    title('Diagrama de ceros y polos para A,[]'),
    grid

    subplot(212)

    zplane(A'); % Diagrama de ceros y polos

    title('Diagrama de ceros y polos para A`,[]'),
    grid

    figure % Nueva figura

    zplane(A); % Diagrama de ceros y polos

    title('Diagrama de ceros y polos para A,[0]'),
    grid

    %—

    % Sistema con H1(z)

    bH1=roots([1]); % Ceros de H1(z)

    % Polos de H1(z)

    aH1=roots([1 -0.85*sqrt(2) 0.7225]);

    % Sistema con H2(z)

    % Ceros de H2(z)

    bH2=roots([1 -0.85*sqrt(2) 0.7225]);

    aH2=roots([1]); % Polos de H2(z)

    % Sistema con H3(z)

    bH3=roots([1]) % Ceros de H3(z)

    % Polos de H3(z)

    aH3=roots([1 -0.95*sqrt(2) 0.9025])

    % Sistema con H4(z)

    % Ceros de H4(z)

    bH4=roots([1 -0.95*sqrt(2) 0.9025]);

    aH4=roots([1]) % Polos de H4(z)

    figure % Nueva figura

    subplot(223)

    zplane(bH1,aH1); % Diagrama de ceros y polos

    title('Sistema con H1(z)'), grid

    subplot(221)

    zplane(bH2,aH2); % Diagrama de ceros y polos

    title('Sistema con H2(z)'), grid

    subplot(224)

    zplane(bH3,aH3); % Diagrama de ceros y polos

    title('Sistema con H3(z)'), grid

    subplot(222)

    zplane(bH4,aH4); % Diagrama de ceros y polos

    title('Sistema con H4(z)'), grid

    end

    Ejercicio 3.2.2 RESPUESTA EN FRECUENCIA A PARTIR DE
    LA TZ

    c=1; % Control

    if c==1

    %— Punto 1

    clc % Borra la pantalla

    disp('Evaluación
    del polinomio z^2-z-2 en z=-1')

    A=[1 -1 -2]; % Polinomio z^2-z-2

    z=-1; % Evaluación en z=-1

    polyval(A,z) % Evaluación delpolinomio z^2-z-2
    en z=-1

    %—

    disp('Evaluación [H(0), H(0.5)]…')

    % Sistema con H1(z)

    cH1=[1]; % Ceros de H1(z)

    % Polos de H1(z)

    pH1=[1 -0.85*sqrt(2) 0.7225];

    z=1; % H(0)

    H1=(polyval(cH1,z))/(polyval(pH1,z));

    z=-1; % H(0.5)

    H1=[H1 (polyval(cH1,z))/(polyval(pH1,z))];

    % Sistema con H2(z)

    % Ceros de H2(z)

    cH2=[1 -0.85*sqrt(2) 0.7225];

    pH2=[1]; % Polos de H2(z)

    z=1; % H(0)

    H2=(polyval(cH2,z))/(polyval(pH2,z));

    z=-1; % H(0.5)

    H2=[H2 (polyval(cH2,z))/(polyval(pH2,z))];

    % Sistema con H3(z)

    cH3=[1]; % Ceros de H3(z)

    % Polos de H3(z)

    pH3=[1 -0.95*sqrt(2) 0.9025];

    z=1; % H(0)

    H3=(polyval(cH3,z))/(polyval(pH3,z));

    z=-1; % H(0.5)

    H3=[H3 (polyval(cH3,z))/(polyval(pH3,z))];

    % Sistema con H4(z)

    % Ceros de H4(z)

    cH4=[1 -0.95*sqrt(2) 0.9025];

    pH4=[1]; % Polos de H4(z)

    z=1; % H(0)

    H4=(polyval(cH4,z))/(polyval(pH4,z));

    z=-1; % H(0.5)

    H4=[H4 (polyval(cH4,z))/(polyval(pH4,z))];

    H1, H2, H3, H4 % Evaluación de H1, H2, H3 y
    H4

    %— Punto 2

    % Respuesta en frecuencia

    [H,W]=freqz([1 -1 -2],1,512,'whole');

    figure % Nueva figura

    subplot(211)

    % Módulo respuesta en frecuencia

    plot(W/(2*pi),abs(H))

    title('Módulo de la respuesta en frecuencia'),
    grid

    ylabel('Unidades Lineales')

    subplot(212)

    % Fase respuesta en frecuencia

    plot(W/(2*pi),angle(H))

    title('Fase de la respuesta en frecuencia'),
    grid

    ylabel('Unidades Lineales')

    %—

    % Sistema con H1(z)

    bH1=[1]; % Coeficientes b

    % Coeficientes a

    aH1=[1 -0.85*sqrt(2) 0.7225];

    % Respuesta en frecuencia

    [H1,W1]=freqz(bH1,aH1,512,'whole');

    % Sistema con H2(z)

    % Coeficientes b

    bH2=[1 -0.85*sqrt(2) 0.7225];

    aH2=[1]; % Coeficientes a

    % Respuesta en frecuencia

    [H2,W2]=freqz(bH2,aH2,512,'whole');

    % Sistema con H3(z)

    bH3=[1]; % Coeficientes b

    % Coeficientes a

    aH3=[1 -0.95*sqrt(2) 0.9025];

    % Respuesta en frecuencia

    [H3,W3]=freqz(bH3,aH3,512,'whole');

    % Sistema con H4(z)

    % Coeficientes b

    bH4=[1 -0.95*sqrt(2) 0.9025];

    aH4=[1]; % Coeficientes a

    % Respuesta en frecuencia

    [H4,W4]=freqz(bH4,aH4,512,'whole');

    figure % Nueva figura

    subplot(221)

    % Módulo respuesta en frecuencia

    plot(W1/(2*pi),abs(H1))

    title('Módulo de H1'), grid

    ylabel('Unidades Lineales')

    subplot(223)

    % Fase respuesta en frecuencia

    plot(W1/(2*pi),angle(H1))

    title('Fase de H1'), grid

    ylabel('Unidades Lineales')

    subplot(222)

    % Módulo respuesta en frecuencia

    plot(W2/(2*pi),abs(H2))

    title('Módulo de H2'), grid

    ylabel('Unidades Lineales')

    subplot(224)

    % Fase respuesta en frecuencia

    plot(W2/(2*pi),angle(H2))

    title('Fase de H2'), grid

    ylabel('Unidades Lineales')

    figure % Nueva figura

    subplot(221)

    % Módulo respuesta en frecuencia

    plot(W3/(2*pi),abs(H3))

    title('Módulo de H3'), grid

    ylabel('Unidades Lineales')

    subplot(223)

    % Fase respuesta en frecuencia

    plot(W3/(2*pi),angle(H3))

    title('Fase de H3'), grid

    ylabel('Unidades Lineales')

    subplot(222)

    % Módulo respuesta en frecuencia

    plot(W4/(2*pi),abs(H4))

    title('Módulo de H4'), grid

    ylabel('Unidades Lineales')

    subplot(224)

    % Fase respuesta en frecuencia

    plot(W4/(2*pi),angle(H4))

    title('Fase de H4'), grid

    ylabel('Unidades Lineales')

    end

    Ejercicio 3.2.3 RESPUESTA AL IMPULSO

    Para ver el ejercicio y el
    gráfico seleccione la opción "Descargar" del
    menú superior

    Ejercicio 3.2.4 DESCOMPOSICION EN FRACCIONES
    SIMPLES

    c=1; % Control

    if c==1

    %— Punto 1

    a=[6 -5 1]; % Coeficientes a de y[n]

    b=[1 -1]; % Coeficientes b de x[n]

    [h,t]=impz(b,a,11); % h[n]

    figure % Nueva figura

    stem(t,h) % Respuesta al impulso del sistema

    title('Respuesta al impulso del sistema'), grid

    ylabel('Unidades Lineales')

    %— Punto 2

    clc % Borra la pantalla

    disp('Expansión en fracciones simples…')

    % Expansión en fracciones simples

    [r,p,k]=residue(b,a)

    %— Punto 3

    n=0:10; % Tiempo discreto

    % h[n]

    h=-0.5*(0.5).^n+0.6667*(0.3333).^n;

    figure % Nueva figura

    stem(n,h) % Respuesta al impulso del sistema

    title('Respuesta al impulso del sistema por fracciones
    simples'), grid

    ylabel('Unidades Lineales')

    end

    Ejercicio 3.3 PROPIEDADES EN EL DOMINIO
    TRANSFORMADO

    Ejercicio 3.3.1 FASE LINEAL

    Para ver el
    ejercicio y el gráfico seleccione la opción
    "Descargar" del menú superior

    PRACTICA 4. La DFT y la FFT.
    y PRACTCA 5.Diseño
    de filtros digitales.

    >> help
    fft

    FFT(X) calcula la
    Transformada de Fourier discreta (DFT) del vector
    X.

    FFT Discrete
    Fourier transform.

    FFT(X) is the
    discrete Fourier transform (DFT) of vector X.
    For

    matrices, the FFT
    operation is applied to each column. For N-D

    arrays, the FFT
    operation operates on the first non-singleton

    dimension.

    FFT(X,N) is the
    N-point FFT, padded with zeros if X has less

    than N points and
    truncated if it has more.

    FFT(X,[],DIM) or
    FFT(X,N,DIM) applies the FFT operation across
    the

    dimension
    DIM.

    For length N input
    vector x, the DFT is a length N vector X,

    with
    elements

    N

    X(k) = sum
    x(n)*exp(-j*2*pi*(k-1)*(n-1)/N), 1 <= k <=
    N.

    n=1

    The inverse DFT
    (computed by IFFT) is given by

    N

    x(n) = (1/N) sum
    X(k)*exp( j*2*pi*(k-1)*(n-1)/N), 1 <= n <=
    N.

    k=1

    The relationship
    between the DFT and the Fourier coefficients a and b
    in

    N/2

    x(n) = a0 + sum
    a(k)*cos(2*pi*k*t(n)/(N*dt))+b(k)*sin(2*pi*k*t(n)/(N*dt))

    k=1

    is

    a0 = X(1)/N, a(k)
    = 2*real(X(k+1))/N, b(k) = -2*imag(X(k+1))/N,

    where x is a
    length N discrete signal sampled at times t with spacing
    dt.

    See also IFFT,
    FFT2, IFFT2, FFTSHIFT.

    >> help
    fftshift

    Calcula la
    componente de la frecuencia cero en el centro del
    espectro.

    FFTSHIFT Shift
    zero-frequency component to center of spectrum.

    For vectors,
    FFTSHIFT(X) swaps the left and right halves of

    X. For matrices,
    FFTSHIFT(X) swaps the first and third

    quadrants and the
    second and fourth quadrants. For N-D

    arrays,
    FFTSHIFT(X) swaps "half-spaces" of X along each

    dimension.

    FFTSHIFT(X,DIM)
    applies the FFTSHIFT operation along the

    dimension
    DIM.

    FFTSHIFT is useful
    for visualizing the Fourier transform with

    the zero-frequency
    component in the middle of the spectrum.

    See also
    IFFTSHIFT, FFT, FFT2, FFTN.

    >> help
    angle

    La función
    angle calcula la fase , en radianes, de una matriz
    compleja.

    ANGLE Phase
    angle.

    ANGLE(H) returns
    the phase angles, in radians, of a matrix with

    complex
    elements.

    See also ABS,
    UNWRAP.

    >> help
    freqz

    FREQZ Z calcula la
    transformada de la respuesta en frecuencia digital del
    filtro.

    FREQZ Z-transform
    digital filter frequency response. When N is an

    integer, [H,W] =
    FREQZ(B,A,N) returns the N-point frequency

    vector W and the
    N-point complex frequency response vector G

    of the filter
    B/A:

    -1
    -nb

    jw B(z) b(1) +
    b(2)z + …. + b(nb+1)z

    H(e) = —- =
    —————————-

    -1
    -na

    A(z) 1 + a(2)z +
    …. + a(na+1)z

    given numerator
    and denominator coefficients in vectors B and

    A. The frequency
    response is evaluated at N points equally

    spaced around the
    upper half of the unit circle. To plot

    magnitude and
    phase of a filter:

    [h,w] =
    freqz(b,a,n);

    mag = abs(h);
    phase = angle(h);

    semilogy(w,mag),
    plot(w,phase)

    FREQZ(B,A,N,'whole') uses N points around the whole
    unit circle.

    FREQZ(B,A,W)
    returns the frequency response at frequencies

    designated in
    vector W, normally between 0 and pi. (See

    LOGSPACE to
    generate W). See also YULEWALK, FILTER, FFT,

    INVFREQZ, and
    FREQS.

    >> help
    fir1

    B = FIR1(N, Wn)
    diseña un filtro digital de los "paso-bajo" de orden N y
    devuelve los coeficientes del filtro en el vector B de longitud
    N+1. La frecuencia de atajo Wn debe estar entre 0 < Wn <
    1,0, donde 1,0 corresponde a la mitad del rango de la muestra. El
    filtro B es real y tiene fase lineal. El aumento normalizado del
    filtro en Wn es de -6 dB.

    FIR1 FIR filter
    design using the window method.

    B = FIR1(N,Wn)
    designs an N'th order lowpass FIR digital
    filter

    and returns the
    filter coefficients in length N+1 vector B.

    The cut-off
    frequency Wn must be between 0 < Wn < 1.0, with
    1.0

    corresponding to
    half the sample rate. The filter B is real and

    has linear phase.
    The normalized gain of the filter at Wn is

    -6
    dB.

    >> help
    Kaiser

    La función
    Kaiser() devuelve el número de elementos de la ventana
    Kaiser.

    KAISER
    KAISER(N,beta) returns the BETA-valued N-point Kaiser
    window.

    Ejercicio 3.3 PROPIEDADES EN EL
    DOMINIO TRANSFORMADO

    Ejercicio 3.3.2
    ESTABILDAD

    Para ver el
    ejercicio y el gráfico seleccione la opción
    "Descargar" del menú superior

    Ejercicio 3.3.3 SISTEMA PASO
    TODO

    Para ver el
    ejercicio y el gráfico seleccione la opción
    "Descargar" del menú superior

    Ejercicio 3.4.2 RESPUESTA EN
    FRECUENCIA DE POLOS

    Para ver el
    ejercicio y el gráfico seleccione la opción
    "Descargar" del menú superior

    Ejercicio 3.4.3 APLICACION:
    DISEÑO DE FILTROS EN HENDIDURA

    Para ver el
    ejercicio y el gráfico seleccione la opción
    "Descargar" del menú superior

    David Savall
    Climent

    20 de mayo de
    2003

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter