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
- Introducción al Procesamiento de Señales
- Generación y Visualización de Señales
- Transformada de Fourier
- Filtrado de Señales
- Análisis de Señales en el Dominio del Tiempo y la Frecuencia
- Ejercicios Prácticos
- 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.
- 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');
- 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');
- 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');
- 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 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');
- 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.
Curso de Programación en MATLAB
Módulo 1: Introducción a MATLAB
- Comenzando con MATLAB
- Interfaz y Entorno de MATLAB
- Comandos Básicos y Sintaxis
- Variables y Tipos de Datos
- Operaciones y Funciones Básicas
Módulo 2: Vectores y Matrices
- Creación de Vectores y Matrices
- Operaciones con Matrices
- Indexación y Segmentación
- Funciones de Matrices
- Álgebra Lineal en MATLAB
Módulo 3: Estructuras de Programación
- Flujo de Control: if, else, switch
- Bucles: for, while
- Funciones: Definición y Alcance
- Scripts vs. Funciones
- Depuración y Manejo de Errores
Módulo 4: Visualización de Datos
- Conceptos Básicos de Gráficos
- Gráficos 2D
- Gráficos 3D
- Personalización de Gráficos
- Técnicas Avanzadas de Gráficos
Módulo 5: Análisis de Datos y Estadísticas
- Importación y Exportación de Datos
- Estadísticas Descriptivas
- Preprocesamiento de Datos
- Análisis de Regresión
- Pruebas Estadísticas
Módulo 6: Temas Avanzados
- Entrada/Salida de Archivos
- Manejo de Grandes Conjuntos de Datos
- Técnicas de Optimización
- Conceptos Básicos de Simulink
- Computación Paralela