El procesamiento de señales es una de las aplicaciones más poderosas y versátiles de MATLAB. Este módulo te guiará a través de los conceptos básicos y avanzados del procesamiento de señales, utilizando MATLAB como herramienta principal.

Contenido del Módulo

  1. Introducción al Procesamiento de Señales
  2. Generación y Visualización de Señales
  3. Transformada de Fourier
  4. Filtrado de Señales
  5. Análisis de Señales en el Dominio del Tiempo y la Frecuencia
  6. Ejercicios Prácticos

  1. Introducción al Procesamiento de Señales

El procesamiento de señales implica la manipulación y análisis de señales para extraer información útil, mejorar la calidad de la señal o transformarla de alguna manera. Las señales pueden ser de diferentes tipos, como señales de audio, imágenes, señales biomédicas, etc.

Conceptos Clave

  • Señal: Una función que transmite información sobre el comportamiento o las características de algún fenómeno.
  • Dominio del Tiempo: Representación de la señal en función del tiempo.
  • Dominio de la Frecuencia: Representación de la señal en función de sus componentes de frecuencia.

  1. Generación y Visualización de Señales

Generación de Señales

En MATLAB, puedes generar señales utilizando funciones predefinidas. Aquí hay algunos ejemplos:

% Señal senoidal
t = 0:0.001:1; % Tiempo de 0 a 1 segundo con incrementos de 1 ms
f = 5; % Frecuencia de 5 Hz
y = sin(2*pi*f*t); % Señal senoidal

% Señal cuadrada
y_square = square(2*pi*f*t);

% Señal de ruido blanco
y_noise = randn(size(t));

Visualización de Señales

MATLAB proporciona funciones de visualización muy potentes. Aquí hay algunos ejemplos:

% Visualización de la señal senoidal
figure;
subplot(3,1,1);
plot(t, y);
title('Señal Senoidal');
xlabel('Tiempo (s)');
ylabel('Amplitud');

% Visualización de la señal cuadrada
subplot(3,1,2);
plot(t, y_square);
title('Señal Cuadrada');
xlabel('Tiempo (s)');
ylabel('Amplitud');

% Visualización de la señal de ruido blanco
subplot(3,1,3);
plot(t, y_noise);
title('Ruido Blanco');
xlabel('Tiempo (s)');
ylabel('Amplitud');

  1. Transformada de Fourier

La Transformada de Fourier es una herramienta fundamental en el procesamiento de señales, que permite convertir una señal del dominio del tiempo al dominio de la frecuencia.

Ejemplo de Transformada de Fourier

% Transformada de Fourier de la señal senoidal
Y = fft(y);
f = (0:length(Y)-1)*1000/length(Y); % Vector de frecuencias

% Visualización de la Transformada de Fourier
figure;
plot(f, abs(Y));
title('Transformada de Fourier de la Señal Senoidal');
xlabel('Frecuencia (Hz)');
ylabel('Amplitud');

  1. Filtrado de Señales

El filtrado de señales es el proceso de eliminar componentes no deseados de una señal. MATLAB proporciona varias funciones para diseñar y aplicar filtros.

Ejemplo de Filtrado

% Diseño de un filtro pasa-bajos
fc = 10; % Frecuencia de corte de 10 Hz
[b, a] = butter(6, fc/(1000/2)); % Filtro Butterworth de 6º orden

% Aplicación del filtro
y_filtered = filter(b, a, y_noise);

% Visualización de la señal filtrada
figure;
plot(t, y_noise, t, y_filtered);
title('Filtrado de Ruido Blanco');
xlabel('Tiempo (s)');
ylabel('Amplitud');
legend('Señal Original', 'Señal Filtrada');

  1. Análisis de Señales en el Dominio del Tiempo y la Frecuencia

El análisis de señales puede realizarse tanto en el dominio del tiempo como en el dominio de la frecuencia. MATLAB proporciona herramientas para ambos tipos de análisis.

Análisis en el Dominio del Tiempo

% Análisis estadístico de la señal
mean_value = mean(y);
std_value = std(y);

Análisis en el Dominio de la Frecuencia

% Espectrograma de la señal
figure;
spectrogram(y, 256, 250, 256, 1000, 'yaxis');
title('Espectrograma de la Señal Senoidal');

  1. Ejercicios Prácticos

Ejercicio 1: Generación y Visualización de Señales

Tarea: Genera y visualiza una señal triangular y una señal de ruido rosa.

Solución:

% Señal triangular
y_triangular = sawtooth(2*pi*f*t, 0.5);

% Señal de ruido rosa
y_pink = pinknoise(length(t));

% Visualización
figure;
subplot(2,1,1);
plot(t, y_triangular);
title('Señal Triangular');
xlabel('Tiempo (s)');
ylabel('Amplitud');

subplot(2,1,2);
plot(t, y_pink);
title('Ruido Rosa');
xlabel('Tiempo (s)');
ylabel('Amplitud');

Ejercicio 2: Transformada de Fourier y Filtrado

Tarea: Aplica la Transformada de Fourier a una señal compuesta por dos frecuencias diferentes y filtra una de las frecuencias.

Solución:

% Señal compuesta
f1 = 5; % Frecuencia de 5 Hz
f2 = 20; % Frecuencia de 20 Hz
y_composite = sin(2*pi*f1*t) + sin(2*pi*f2*t);

% Transformada de Fourier
Y_composite = fft(y_composite);
f = (0:length(Y_composite)-1)*1000/length(Y_composite);

% Visualización de la Transformada de Fourier
figure;
plot(f, abs(Y_composite));
title('Transformada de Fourier de la Señal Compuesta');
xlabel('Frecuencia (Hz)');
ylabel('Amplitud');

% Filtrado de la frecuencia de 20 Hz
[b, a] = butter(6, 10/(1000/2)); % Filtro pasa-bajos con frecuencia de corte de 10 Hz
y_filtered = filter(b, a, y_composite);

% Visualización de la señal filtrada
figure;
plot(t, y_composite, t, y_filtered);
title('Filtrado de la Señal Compuesta');
xlabel('Tiempo (s)');
ylabel('Amplitud');
legend('Señal Original', 'Señal Filtrada');

Conclusión

En este módulo, hemos cubierto los conceptos básicos del procesamiento de señales en MATLAB, incluyendo la generación y visualización de señales, la Transformada de Fourier, el filtrado de señales y el análisis en el dominio del tiempo y la frecuencia. Estos fundamentos te prepararán para abordar aplicaciones más avanzadas y específicas en el procesamiento de señales.

Próximos Pasos

En el siguiente tema, exploraremos el procesamiento de imágenes, donde aplicaremos técnicas similares para analizar y manipular imágenes digitales.

© Copyright 2024. Todos los derechos reservados