codigo

Páginas: 10 (2261 palabras) Publicado: 12 de junio de 2014
%% Procesamiento de una señal de audio usando MATLAB inicio filtrado.m
%% Crear señal de audio
% Frecuencia fundamental
f0=1e3; % 1KHz
% Amplitud
a=4; % V=4
% Frecuencia de muestreo
fs=44.1e3; % Frecuencia de una señal de audio
% Tiempo de duración en segundos
T=4;
L = round(T*fs); % Número de muestras
% Frecuencia normalizada
fn=f0/fs;
y =a*sin(2*pi*fn*(0:L-1))+0.5*a*sin(2*pi*2*fn*(0:L-1));
% Graficar la señal original
subplot(411)
plot((0:L-1)/fs,y)
title('SEÑAL ORIGINAL')% Título
xlabel('Tiempo (s)') % Etiqueta del eje X
ylabel('Amplitud (V)') % Etiqueta del eje Y
xlim([0 10/1000]) % Límite de la señal
%% Grabar y reproducir la señal de audio
%wavwrite(y,fs,'audio')
% wavplay(y,fs)
%% FFT de la señal
subplot(412)
% Llamado a lafunción que calcula la FFT
fft_signal(y,fs);title('ESPECTRO DE LA SEÑAL ORIGINAL')
xlim([0 2500])
%% Filtrado de la señal
% Frecuencia normalizada
fNorm = 1500 / (fs/2);
% Cálculo de los coeficientes del filtro (filtro pasa bajas)
[b,a] = butter(10, fNorm, 'low');
% Filtrado de la señal
y_Low = filtfilt(b, a, y);
% Graficación de la señal en el tiempo
subplot(413)
plot((0:L-1)/fs,y_Low)title('SEÑAL FILTRADA')
xlabel('Tiempo (s)')
ylabel('Amplitud (V)')
xlim([0 10/1000])
% Graficación de la señal en frecuencia
subplot(414)
% Llamado a la función que calcula la FFT
fft_signal(y_Low,fs);title('ESPECTRO DE LA SEÑAL FILTRADA')
xlim([0 2500])
%% Gráficas del filtro
% Respuesta en frecuencia del filtro
[H,w]=freqz(b,a,512,1);
figure(2)
%Trazado de la respuesta en Magnitudsubplot(221)
plot(w,20*log10(abs(H)));
grid on;
title ('Filtro pasa-altos, Respuesta en magnitud');
xlabel('frecuencia');
ylabel('H(f) db')
xlim([0 0.4])
% Respuesta en fase
subplot(222)
plot(w,angle(H));
grid on;
title ('Filtro pasa-altos, Respuesta en fase');
xlabel('frecuencia')
ylabel('ángulo de H rad')
xlim([0 0.4])

%Respuesta al impulso
subplot(223)
[y_eje,t]= impz(b,a,60);stem(t,y_eje);
title ('Filtro pasa-altos, Respuesta al impulso');

%Ploteo de los polos y ceros
z= roots(b); % Ceros
p = roots(a); % Polos
subplot(224)
zplane(z,p)
title('Polos y ceros')
legend('Ceros','Polos')
%% Reproducción de audio de entrada y salida
pause(2)
disp('Audio de entrada')
wavplay(0.5*y,fs)
disp('Audio de salida (señal filtrada)')
wavplay(0.5*y_Low,fs)%% Procesamiento de una señal de audio usando MATLAB inicio filtrado_2
%% Selección del tipo de filtrado
% 1 -> Pasa bajo
% 2 -> Pasa alto
% 3 -> Pasa banda
tipo=3
%% Crear señal de audio
% Frecuencia fundamental
f0=1e3; % 1KHz
% Amplitud
a=2; % V=4
% Frecuencia de muestreo
fs=44.1e3; % Frecuencia deuna señal de audio CD
% Tiempo de duración en segundos
T=2;
% Vector de tiempo
t=linspace(0,T,T*fs);
% Creación de la señal
% Primer señal (tono 1)
s1=a*sin(2*pi*f0*t);
% Segunda señal (tono 2)
s2=0.75*a*sin(2*pi*(1.5*f0)*t);
% Tercera señal (tono 3)
s3=0.5*a*sin(2*pi*(2*f0)*t);
% Señal compuesta (suma de dos tonos)
y = s1 + s2 + s3;
% Graficar la señal original
subplot(411)plot(t,y)
title('SEÑAL ORIGINAL')% Título
xlabel('Tiempo (s)') % Etiqueta del eje X
ylabel('Amplitud (V)') % Etiqueta del eje Y
xlim([0 20/1000]) % Límite de la señal
%% Grabar y reproducir la señal de audio
% wavwrite(0.1*y,fs,'audio')
% wavplay(0.1*y,fs)
%% FFT de la señal
subplot(412)
% Llamado a la función que calcula la FFT
fft_signal(y,fs);title('ESPECTRO DE LASEÑAL ORIGINAL')
xlim([0 2500])
%% Filtrado de la señal
switch tipo
case 1
% Cálculo de los coeficientes del filtro (filtro pasa bajas)
% Este filtrado deja solo la señal de 1000 Hz
% Frecuencia normalizada
titutlo='FILTRO PASA BAJAS';
fNorm = 1200 / (fs/2);
[b,a] = butter(10, fNorm, 'low');
case 2
%- - - - - - - - - - -...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Codigos
  • Codigo
  • Codigos
  • codigo
  • Codigo
  • Codigo
  • Codigo
  • Codigo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS