Documente Academic
Documente Profesional
Documente Cultură
Thomas A. Edison
ANALGICOS Y DIGITALES
Toda seal est compuesta por un rango de frecuencias: desde una Fmin hasta una Fmax. Se lo conoce como ANCHO DE BANDA.
Ejemplo: si analizamos la voz humana con un analizador de espectros, veramos que las componentes de frecuencia van hasta los 35 Khz????
??????????
Observacin 1: Existen personas con capacidades de generar frecuencias ms altas y ms bajas de lo normal: soprano, , tenor, etc (ver tabla). Observacin 2: de todas estas frecuencias, el odo humano solo escucha en un rango aproximado desde 20 Hz hasta 20 KHz. Observacin 3: la inteligibilidad (que se entiende lo que dice) se encuentra en las frecuencias bajas, por ello el canal telefnico restringe el AB de la voz desde 30 Hz hasta 3000 Hz. Veamos una comparacin de rango audible entre el humano y otros animales:
LA FORMACIN TRADICIONAL QUE TENEMOS SOLO NOS PERMITE SER CONSUMIDORES DE CONOCIMIENTO. DEBEMOS SER GENERADORES DE CONOCIMIENTO (INVESTIGACIN).
CMO LO HACEMOS?
RESPUESTA:
MEDIANTE EL CONOCIMIENTO DE PROCESAMIENTO DIGITAL DE SEALES Y EL USO DE HERRAMIENTAS DE SIMULACIN.
Seal analgica
Seal discreta
1. Cada cuanto tiempo debo tomar las muestras de modo que pueda ver qu componentes de frecuencia tiene la seal? Teorema de muestreo: Fs debe ser mayor o igual a 2* Fmax 2. Cada cuanto tiempo debo tomar las muestras de modo que pueda recuperar la forma de onda que tuvo la seal? Teorema de muestreo: Fs debe ser mucho mayor que 2 * Fmax (10* Fmax)
Si es una seal estocstica y no conocemos su Fmax, nosotros debemos limitar dicha Fmax por medio de un
filtro (denominado antialiassing). Se ver luego de ver filtros digitales. 2. Frecuencia de muestreo (Fs) :
3.
3. 4. 5.
Grfico temporal: plot ( t , y) o stem para no olvidar que estamos trabajando con seales discretas. Escuchar el vector Y como sonido generado a una Fs: sound (vector, Fs): sound (y, Fs)
Zoom:
Ejemplo 2: Emplear los conocimientos anteriores para analizar su rango personal de audicin. Verificar todo con osciloscopio un analizador de espectros.
% 1. Anlisis en las frecuencias bajas: % Ejemplo: barrido de frecuencias desde 1 Hz hasta % 20 Hz en pasos de 2 Hz. % Hacer que cada tono dure 2 segundos close all; clear all; clc % Frecuencia mxima: for i=100:100:1000 Fmax = i; % No nos interesa visualizarla pues consume recursos % y se ralentiza el programa. Entonces: Fs= 2*Fmax; % para buena visualizacin de la seal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Seal a generar: y = 2*sin(2*pi*i*t); % Escucha la seal: sound (y, Fs) disp(i) pause % mientras no demos ENTER, no avanza el % programa. end % 2. Anlisis en las frecuencias altas: % Ejemplo: barrido de frecuencias desde 1000 Hz % hasta 20000Hz en pasos de 2000 Hz. % Hacer que cada tono dure 2 segundos close all; clear all; clc for i=1000:100:2500 Fmax = i; % No nos interesa visualizarla pues consume recursos % y se ralentiza el programa. Entonces: Fs= 10*Fmax; % para buena visualizacin de la seal %Base de tiempos: (tiempo inicial : 1 / Fs : tiempo final) t = (0:1/Fs:2); %Seal a generar: y = 1*sin(2*pi*i*t); % % priemro graficamos pero sin escuchar: % figure % plot(t,y) % Escucha la seal pero sin graficar: disp(i) sound (y, Fs) end
BARRIDO EN FRECUENCIAS:
Similar al barrido que realizamos con el lazo FOR, tenemos una funcin que lo realiza automticamente: la funcin CHIRP.
x = sawtooth(2*pi*Fmax*t);
plot(t,x), axis([0 0.2 -1 1])
% Seal SINC:
x = linspace(-5,5); y = sinc(x); plot(x,y)
e introduciremos algunos
efectos que seran tal vez imposibles con una seal analgica. - Ver programas (cool edit y DJ) - Hacer efectos en matlab (amplitud, eco, velocidad, desvanecimiento, ruido)
1. Efecto Eco:
3. Efecto: Reversa
%3. Sonar en Reversa: canal_izquierdo_original_reversa= flipud (canal_izquierdo_original); figure subplot(2,1,1) plot (canal_izquierdo_original) title('canal izquierdo original') subplot(2,1,2) plot (canal_izquierdo_original_reversa) title('canal izquierdo en reversa')
%sound(canal_izquierdo_original_reversa, Fs)
CONCLUSIN:
EL TRATAMIENTO Y MANIPULACIN DE SEALES DIGITALES ES MUCHO MS FCIL y POTENTE QUE CON SEALES ANALGICAS ( A VECES PUEDE SER IMPOSIBLE), PUES PERMITE LA UTILIZACIN DE ALGORITMOS DE PROCESAMIENTO DIGITAL DE SEALES.
El resultado es un vector continuo y complejo pues la frecuencia w llamada frecuencia digital es una variable continua que est medida en radianes.
IMPLICACIONES: basta ver la funcin en (0, 2*pi) en (-pi, pi), etc y no necesitamos verlo en (- infinito, infinito).
IMPLICACIONES: para saber cmo es basta considerar solo medio perodo. Se suele utilizar
INGLS: DFT
Para una sola muestra X (k): Deberemos hacer N multiplicaciones complejas y (N-1) sumas complejas. Como k vara desde 0 hasta N-1, todos los valores de X (k) requieren: N2 multiplicaciones complejas N(N-1) casi es N2 sumas complejas. Sera un clculo numrico muy ineficiente. SOLUCIN: Entonces se ide un grupo de algoritmos llamados Transformada Rpida de Fourier (FFT).
PERIODOGRAMA
1. Fijamos el nmero de muestras del espectro terico (funcin continua con perodo 2pi) que queremos obtener (nFFT), mediante la FFT. Normalmente se escoge 512, 1024 (potencias de 2) 2. Calculamos dichas muestras mediante la FFT: Y=fft(X,nFFT). Este es un vector complejo que tiene mdulo y ngulo. Nos interesa el mdulo: 3. El mdulo lo podemos calcular mediante la multiplicacin del vector por su conjugada: P1=Y.*conj(Y)/nFFT 4. Fijamos el eje de frecuencias de modo que solamente visualicemos la mitad del espectro ya que la otra mitad es simtrica: f=0:Fmax/(length(P1)/2):Fmax, donde Fmax es la frecuencia mxima de la seal que estamos analizando. Si es una seal estocstica, dicha Fmax ser establecida mediante un filtro antialiasing. 5. Graficamos el mdulo del espectro vs la frecuencia ya sea en escala lineal o en escala logartmica.
plot(f,P1(1:length(f))); xlabel('Hz') ylabel('P1( f )') title('Densidad Espectral de Potencias: escala lineal') plot(f,20*log10(abs(P1(1:length(f)))),'k'); xlabel('Hz') ylabel('P1( f )') title('Densidad Espectral de Potencias en escala de dB)')
Ejemplo: Generar una seal compuesta por dos tonos ( de 50 y 120 Hz) a la cual se le aade ruido con una FDP de tipo normal o gaussiano y que dure 5 seg. Verificar, mediante el periodograma, que dichos tonos estn presentes.
close all; clear all; clc; % Seal contaminada con ruido es una seal estocstica y por tanto no % podemos garantizar que tenga una frecuencia mxima determinada. % Para poder realizar el procedimiento conocido, debemos poner un % filtro antialiasing que s nos permita garantizar una frecuencia % mxima, por ejemplo de 200 Hz: Fmax= 150; % frecuencia maxima de la seal deseada Fs = 2*Fmax; % frequencia de muestreo t = 0:1/Fs:5; % eje de tiempo: la seal dura 5 seg. xn = sin(2*pi*50*t) + sin(2*pi*120*t) + randn(size(t)); plot(t,xn) % FILTRO ANTI-ALIASING: la Fcorte deber ser inferior a la Fmax Fcorte=140; WcN=Fcorte/(Fmax); [b,a]=butter(2,WcN); x_filt=filter(b,a,xn); % Clculo del espectro de potencia: nFFT= 1024; % El numero de muestras de la DTFT que queremos calcular Y=fft(xn,nFFT); % La transformada de Fourier: es vector complejo P1=Y.*conj(Y)/nFFT; % El periodograma es el modulo del vector complejo % Fijamos el eje de frecuencias de modo que solamente visualicemos la mitad del % espectro ya que la otra mitad es simtrica: f=0:Fmax/(length(P1)/2):Fmax;
% Visualizacin la mitad del espectro de potencia, la otra % mitad es simetrica: figure subplot(2,1,1) plot(f,P1(1:length(f))); xlabel('Hz') ylabel('P1( f )') title('DEP: escala lineal)')
RESULTADOS:.
Observacin: si bien los dos tonos tienen el mismo tamao en el tiempo, en frecuencia tienen distinta potencia debido a la seal randmica aadida. Cada vez que corra el programa, esto cambiar.
Con filtro
Sin filtro
Conclusin importante: todo algoritmo que estemos probando, siempre deber ser sometido a distintas condiciones de ruido de forma controlada:
RELACIN
SEAL A RUIDO
Consideraremos ruido gaussiano blanco:
Ejemplos:
10 dB: valor RMS de la seal es 10 veces el valor RMS del ruido -10 dB: valor RMS de la seal fue 1/10 del valor RMS del ruido.
(10 10/10 )
ES VISIBLE
ALGO VISIBLE
YA NO ES VISIBLE
ANALIZANDO UNA SEAL GRABADA DESDE EL EXTERIOR Y QUE ES TOTALMENTE DESCONOCIDA: En este caso, tampoco conocemos la Fmax y por tanto para evitar aliasing, debemos poner un filtro que me garantice una frecuencia mxima. Solo entonces podremos estar seguros de que el anlisis espectral que realicemos est mostrando los resultados correctos. Procedimiento de anlisis de seales externas:
1.
2.
3. 4.
5.
Ejemplo: Leer la seal externa llamada signal_1.mat, que fue muestreada a 100Hz. Analizar las componentes de frecuencia que contiene hasta 50 Hz. Se sabe que esta seal tiene muchos artefactos en la zona de bajas frecuencias inferiores a 4 Hz. Adems calcular la frecuencia donde se da el mximo del espectro de potencias.
% Periodograma aplicado a una seal externa: % Analizar la seal hasta 50 Hz clear all; close all; clc; Fs=100; Fmax= Fs/2 % Frecuencia de muestreo conocida % Frecuencia mxima de la seal
% CLCULO DEL ESPECTRO DE POTENCIA: nFFT=2048; Y=fft(x_filt,nFFT); P=Y.*conj(Y)/(L/2)^2; %Eje de frecuencias: f=0:fmax/(length(P)/2):fmax; % eje de frecuencias: queremos la mitad de lo que devuelve FFT % Averiguamos la frecuencia mxima del espectro: [Max,Indice] = max(P) % Entrega el max y el ndice del max. F_max=f(Indice)
% Cargar seal 1: load signal_1.mat x=A; % FILTRO PASO BANDA (4-40)Hz: WcN=[4 40]/Fmax; [b,a]=butter(2,WcN); x_filt=filter(b,a,x); % VISUALIZACIN de la seal en el tiempo: Tm=1/Fs; % Perodo de muestreo L=length(x_filt); t=0:Tm:Tm*(L-1); % Para que tenga el mismo nmero de elementos que x_filt: L plot(t,x_filt);
%Graficamos el espectro de potencias: figure plot(f,P(1:length(f))); xlabel('Hz') ylabel('DSP') title('Densidad Espectral de Potencia')
Resultados: Se puede ver que la seal fue adquirida un tiempo de 300 segundos.
Vemos que no tiende a cero cuando N tiende a infinito y adems para N grande, es independiente de la frecuencia.
Sin embargo de todas estas desventajas, el periodograma es muy utilizado para tener una idea rpida de la DENSIDAD ESPECTRAL DE POTENCIAS DE LA SEAL ANALIZADA.
MTODOS DE WELCH: 1) Divisin en varias porciones. 2) Uso de ventanas diferentes a la rectangular: Hamming, Hanning, Blackmann, etc.
% Usando la funcin pwelch: Fs = 1000; t = 0:1/Fs:1; xn = sin(2*pi*50*t) + 2*sin(2*pi*120*t) + randn(size(t)); nfft = 256; % length of FFT window = hanning(256); noverlap = 128; % numero de muestras de traslape [Pxx,f] = pwelch(xn,window,noverlap,nfft,Fs); plot(f,10*log10(Pxx)) title('usando la funcin pwelch') OBSERVACIN: El pico en 50 Hz est 6dB por debajo del pico en 120 Hz. Entonces, se verifica que el segundo pico es el doble en amplitud que el primero.
Resultados:
Comentarios: Se puede ver que con el Periodograma hay demasiada variabilidad a tal punto que se puede pensar que existen ms tonos presentes pero esta duda queda resuelta con el mtodo de Welch que indica claramente solamente dos tonos (hay muy poca variabilidad).
Resultados:
LongVentana=100; Solapamiento=50; LongVentana=1000; Solapamiento=500;
FILTROS DIGITALES
FILTER:
Dados A, B y X: Obtiene la salida Y
FILTROS IIR
Tenemos dos tipos de filtros IIR: a) Analgicos y b) Digitales.
Los filtro IIR pueden ser diseados en dos fases: Fase 1: determinacin de los coeficientes del filtro (funcin yulewalk): [b,a] = yulewalk(n,f,m); % YuleWalker IIR Filter
Fase 2: aplicacin de los parmetros anteriores al clculo de la salida del filtro (funciones filter y filfilt): x_filt=filter(b,a,x); % x: la seal a filtrar ; (b,a): los coeficientes del filtro
Clculo de coeficientes:
Obtiene los coef. A y B al resolver las ecuaciones modificadas de Yule-Walker n: orden del filtro F: vector [fo f1 f2 ... Fmax] / Fmax; Fmax = fs / 2 M: vector [mo m1 m2 ... m] (ganancia)
FREQZ:
Da la respuesta en frecuencia evaluada en N puntos (defecto:512) equiespaciados de la mitad superior del crculo unidad
Fs: frec. muestreo Freqz (B, A, N, Fs): Grafica el (mdulo y la fase) vs frecuencia
Ejercicio:
Disee un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.
Resolucin:
Disee un filtro multibanda con yulewalk y grafique la respuesta de frecuencia deseada y real.
m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [b,a] = yulewalk(10,f,m); [h,w] = freqz(b,a,128); plot(f,m,w/pi,abs(h)) title('Respuestas ideal y real (magnitud: escala lineal)') Figure
Diagrama de Bode:
Ejemplo:
clear all;close all;clc;
Fmax=140; fs=2.1*Fmax; t=0:1/fs:5; x=sin(2*pi*t*100)+sin(2*pi*t*120)+sin(2*pi*t*140);
%espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_uno,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,2) plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 2. Filtrado del segundo tono: f1=[0 110 115 120 125 130 140]/Fmax; m1=[0 0 1 1 1 0 0]; [b1,a1]=yulewalk(orden,f1,m1); senial_filtrada_dos=filter(b1,a1,x); %espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_dos,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,3) plot(F_welch_BB_filt,P_welch_BB_filt,'r') % 3. Filtrado del tercer tono: f1=[0 110 115 120 125 130 140]/Fmax; m1=[0 0 0 0 0 1 1]; [b1,a1]=yulewalk(orden,f1,m1); senial_filtrada_tres=filter(b1,a1,x); %espectro senal filtrada: [P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_tres,LongVentana,Solapamiento,nFFT,f s); subplot(4,1,4) plot(F_welch_BB_filt,P_welch_BB_filt,'r')
Resultados:
Magnitude:
Lowpass Bessel filter: H(s) = 1/BN(s) where BN(s) = Sk=0N aksk is the Nth-order Bessel polynomial.
77
CHEBYSHEV TIPO I y II: (rizado solo en una de las bandas) solo magnitud Frequency response of lowpass Type I Chebyshev filter |H(W)|2 = 1/[1 + e2TN2(W/Wp)]
78
Los filtros IIR analgicos, pueden ser diseados en tres fases: Fase 1: determinacin del orden del filtro requerido segn condiciones de diseo (rizados, frecuencias de corte, etc). Fase 2: determinacin de los coeficientes del filtro (funciones segn el filtro a utilizar (butter, etc)).
Fase 3: aplicacin de los parmetros anteriores al clculo de la salida del filtro (funciones filter y filfilt).
SIN FASE 1:
% Example: sin fase 1: % Plot the frequency response curves % (in db) obtained from % an 8th-order lowpass filter using the Butterworth, %Chebyshev Type I and II, and % elliptic filters. Use a cutoff frequency of 200 Hz and % assume a sampling frequency % of 2 kHz. For all filters, the passband ripple should % be less than 3 db % and the minimum stopband attenuation should be 60 db. % Frequency response of four 8th-order lowpass filters % N = 256; % Spectrum number of points fs = 2000; % Sampling filter n = 8; % Filter order wn = 200/fs/2; % Filter cutoff frequency rp = 3; % Maximum passband ripple in db rs = 60; % Stopband attenuation in db % % %Butterworth [b,a] = butter(n,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,1); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Butterworth'); %
%Chebyshev Type I [b,a] = cheby1(n,rp,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,2); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visibility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev I'); % % Chebyshev Type II [b,a] = cheby2(n,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,3); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Chebyshev II'); % Elliptic [b,a] = ellip(n,rp,rs,wn); % Determine filter coefficients [h,f] = freqz(b,a,N,fs); % Determine filter spectrum subplot(2,2,4); h = 20*log10(abs(h)); % Convert to db semilogx(f,h,'k'); % Plot on semilog scale %axis([100 1000 -80 10]); % Adjust axis for better visi% bility xlabel('Frequency (Hz)'); ylabel('X(f)(db)'); title('Elliptic');
FIR:
Filtro digital (solo desde fase 2): Fase 1: se conoce ya el orden del filtro (n) Fase 2: clculo de los coeficientes: utilizar las siguientes posiblidades segn el caso:
b = fir1 (n, wn, type, ventana);
% n = orden del filtro; wn= vector de frecuencias normalizado, type= high (pasa alta), stop (elimina banda) % ventana = blackman, hamming, hanning, etc) b = fir2 (n, f, A, ventana); % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias b = remez (n, f, A); % CASI SIMILAR AL FIR2 % n = orden del filtro; f = vector normalizado de frecuencias; A = vector normalizado de ganancias
x_filt=filter(b,1,x);
% Plot modulo de h: [h,freq] = freqz(b,1,512,100); figure plot(freq,abs(h),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f)'); figure plot(freq,20*log10(abs(h)),'k'); xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB');
% EJEMPLO FILTROS FIR: usando FIR2 close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; b1 = fir2(n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title('FIR utilizando FIR2') legend('ideal','FIR')
Clculo de coeficientes:
FASE 1
close all; clear all; n = 12; % orden f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia m = [0 0 1 1 0 0]; [b,a] = yulewalk(n,f,m); % YuleWalker IIR Filter h = freqz(b,a,256); b1 = fir2(n,f,m); % FIR rectangular window filter h1 = freqz(b1,1,256); plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h),'--b'); % Plot: Yule-Walker filter hold on plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title(Comparacin entre IIR y FIR del mismo orden') legend('ideal','IIR','FIR') %CONCLUSIN:
APLICACIONES A ECUALIZACIN
1. Investigacin de: - AB suficiente para no alterar la percepcin del odo. - Amplificar en la zona alta del espectro y comprobar si mejora la seal.
clear all; close all; clc; %archivo original: [y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal'); % sound(y_original,Fs) Fs Nbits Format %extraemos 1 solo canal canal_izquierdo_original=y_original(:,1); %sound(canal_izquierdo_original,Fs) % si reproduce
% Investigacin del AB suficiente para escuchar la cancin sin alteraciones: % Banda base: BB = canal_izquierdo_original; % Filtramos para evitar posibles complicaciones en aliassing: Fmax=Fs/2; orden = 40; wn = 5000/ Fmax; % al variar, dio 5000 que nos deja oir sin alteraciones b = FIR1(orden,wn,'low'); figure freqz(b,1,128) BB_filt=filter(b,1,BB); sound(BB_filt,Fs) % si reproduce sin alteraciones perceptibles
Al ir subiendo la f corte del filtro pasa bajas desde 1000, se encontr que en 5000 ya no se nota una alteracin perceptible y es prcticamente es igual al sonido original.
Telefnica
8,000 Hz
1 x 8 bits (mono)
Calidad Radio AM
11,025 Hz
1 x 8 bits (mono)
Calidad Radio FM
22,050 Hz
1 x 16 bits (mono)
CD estreo
44,100 Hz
2 x 16 bits (estreo)
Calidad DAT
48,000 Hz
2 x 16 bits (estreo)
ECUALIZACIN:
Ya que el aporte de informacin auditiva de la zona entre (2000 y 7000) es de vital importancia, entonces que tal si por medio de ecualizacin amplificamos esa zona??????
Realizacin:
% IDEA INNOVADORA: % Ya que el aporte de informacin auditiva de la zona entre (2000 y 7000) % es de vital importancia, entonces que tal si por medio de ecualizacin % amplificamos esa zona unas 10 veces ??????? % Observacin: no estamos amplificando todo, simplemente estamos % amplificando la zona de altas frecuencias que contienen informacin % auditiva importante. clear all; close all; clc; %archivo original:
[y_original,Fs,Nbits,Format] = wavread('ArjonaOriginal'); figure freqz(b,1,256); x_filt=filter(b,1,canal_izquierdo_original); % x_filt=x_filt-mean(x_filt); %sound(x_filt,Fs) % si reproduce % -----------------------------------%Espectro de potencias: nFFT=1024; LongVentana= nFFT/2; Solapamiento =LongVentana/2; % LA FUNCIN DE MATLAB pwelch: [P_welch_original,F_welch_original] = pwelch(canal_izquierdo_original,LongVentana,Solapamiento,nFFT,Fs); [P_welch_filt,F_welch_filt] = pwelch(x_filt,LongVentana,Solapamiento,nFFT,Fs); % -----------------------------------figure plot(F_welch_original,P_welch_original,'b') hold on plot(F_welch_filt,P_welch_filt,'r') legend('original', 'ecualizado') title(' espectros original y ecualizado') %axis([0 7000 0 max(P_welch_original)]) grid on
% ------------------------------------
%extraemos 1 solo canal canal_izquierdo_original=y_original(:,1); %sound(canal_izquierdo_original,Fs) % si reproduce % --------------------------% Filtro ECUALIZADOR: Fmax=Fs/2; orden = 40;
f = [0 500 1000 1200 1500 12000 15000 Fmax]/Fmax; % respuesta de frecuencia m = [0.3 0.3 0.3 1 5 25 35 35];
b = fir2(orden,f,m); % FIR rectangular window filter h1 = freqz(b,1,256); figure plot(f,m,'k'); % Plot: respuesta ideal hold on w = (1:256)/256; plot(w,abs(h1),':r'); % Plot: FIR filter xlabel(' Frequencia Relativa'); title('FIR utilizando FIR2')
legend('ideal','FIR', 'Location','SE')
2. Investigacin de una seal con reverberacin (habitac. Cerrada): - Leer archivos original y con reverberacin puesta con un programa comercial. - Comparar los espectros de potencia de ambos para ver en qu se diferencian. - Aplicar un ecualizador para ver si as eliminamos el efectos de la reverberacin.
ESTE ENTRENEMIENTO GARANTIZA QUE MANEJEMOS LAS SEALES DE COMUNICACIONES DE FORMA CORRECTA.