El processament de senyals és una àrea fonamental en moltes aplicacions d'enginyeria i ciència, incloent telecomunicacions, àudio, vídeo, i sistemes de control. MATLAB és una eina poderosa per al processament de senyals gràcies a les seves capacitats de càlcul numèric i les seves funcions especialitzades.
Objectius del Tema
- Introduir els conceptes bàsics del processament de senyals.
- Aprendre a carregar, visualitzar i analitzar senyals en MATLAB.
- Aplicar tècniques bàsiques de filtratge i transformació de senyals.
- Realitzar anàlisi en el domini de la freqüència utilitzant la Transformada de Fourier.
Contingut
- Introducció al Processament de Senyals
El processament de senyals implica la manipulació de senyals per extreure informació útil, millorar la qualitat del senyal, o preparar-lo per a una anàlisi posterior. Els senyals poden ser de diferents tipus, com ara senyals d'àudio, senyals de vídeo, senyals biomèdics, etc.
- Carregant i Visualitzant Senyals
MATLAB proporciona diverses funcions per carregar i visualitzar senyals. A continuació es mostra com carregar un senyal d'àudio i visualitzar-lo.
Exemple: Carregar i Visualitzar un Senyal d'Àudio
% Carregar un fitxer d'àudio [senyal, fs] = audioread('exemple_audio.wav'); % Visualitzar el senyal en el domini del temps t = (0:length(senyal)-1)/fs; plot(t, senyal); xlabel('Temps (s)'); ylabel('Amplitud'); title('Senyal d''Àudio');
Explicació:
audioread
carrega un fitxer d'àudio i retorna el senyal i la seva freqüència de mostreig (fs
).plot
es fa servir per visualitzar el senyal en el domini del temps.
- Filtratge de Senyals
El filtratge és una tècnica essencial en el processament de senyals per eliminar soroll o extreure components específics del senyal.
Exemple: Filtratge Pas-Baix
% Dissenyar un filtre pas-baix fc = 1000; % Freqüència de tall en Hz [b, a] = butter(6, fc/(fs/2)); % Filtre Butterworth de 6è ordre % Aplicar el filtre al senyal senyal_filtrat = filter(b, a, senyal); % Visualitzar el senyal filtrat plot(t, senyal_filtrat); xlabel('Temps (s)'); ylabel('Amplitud'); title('Senyal Filtrat (Pas-Baix)');
Explicació:
butter
dissenya un filtre Butterworth de 6è ordre amb una freqüència de tall de 1000 Hz.filter
aplica el filtre al senyal.
- Transformada de Fourier
La Transformada de Fourier (FFT) és una eina poderosa per analitzar senyals en el domini de la freqüència.
Exemple: Anàlisi de Freqüència amb FFT
% Calcular la FFT del senyal N = length(senyal); Y = fft(senyal); f = (0:N-1)*(fs/N); % Vector de freqüències % Visualitzar l'espectre de freqüència plot(f, abs(Y)); xlabel('Freqüència (Hz)'); ylabel('Magnitud'); title('Espectre de Freqüència del Senyal');
Explicació:
fft
calcula la Transformada de Fourier del senyal.abs
es fa servir per obtenir la magnitud de la FFT.plot
visualitza l'espectre de freqüència.
- Exercicis Pràctics
Exercici 1: Carregar i Visualitzar un Senyal
Carrega un fitxer d'àudio diferent i visualitza el senyal en el domini del temps.
Exercici 2: Aplicar un Filtre Pas-Alt
Dissenya i aplica un filtre pas-alt a un senyal d'àudio. Visualitza el senyal filtrat.
Exercici 3: Anàlisi de Freqüència
Calcula i visualitza l'espectre de freqüència d'un senyal d'àudio diferent utilitzant la FFT.
Solucions dels Exercicis
Solució 1: Carregar i Visualitzar un Senyal
[senyal, fs] = audioread('altre_audio.wav'); t = (0:length(senyal)-1)/fs; plot(t, senyal); xlabel('Temps (s)'); ylabel('Amplitud'); title('Senyal d''Àudio');
Solució 2: Aplicar un Filtre Pas-Alt
fc = 1000; % Freqüència de tall en Hz [b, a] = butter(6, fc/(fs/2), 'high'); % Filtre Butterworth de 6è ordre, pas-alt senyal_filtrat = filter(b, a, senyal); plot(t, senyal_filtrat); xlabel('Temps (s)'); ylabel('Amplitud'); title('Senyal Filtrat (Pas-Alt)');
Solució 3: Anàlisi de Freqüència
N = length(senyal); Y = fft(senyal); f = (0:N-1)*(fs/N); plot(f, abs(Y)); xlabel('Freqüència (Hz)'); ylabel('Magnitud'); title('Espectre de Freqüència del Senyal');
Conclusió
En aquesta secció, hem après els conceptes bàsics del processament de senyals en MATLAB, incloent la càrrega i visualització de senyals, el filtratge, i l'anàlisi de freqüència amb la Transformada de Fourier. Aquestes tècniques són fonamentals per a moltes aplicacions pràctiques en enginyeria i ciència. En el següent tema, explorarem el processament d'imatges en MATLAB.
Curs de Programació en MATLAB
Mòdul 1: Introducció a MATLAB
- Començant amb MATLAB
- Interfície i Entorn de MATLAB
- Comandes i Sintaxi Bàsiques
- Variables i Tipus de Dades
- Operacions i Funcions Bàsiques
Mòdul 2: Vectors i Matrius
- Creació de Vectors i Matrius
- Operacions amb Matrius
- Indexació i Segmentació
- Funcions de Matrius
- Àlgebra Lineal en MATLAB
Mòdul 3: Estructures de Programació
- Flux de Control: if, else, switch
- Bucles: for, while
- Funcions: Definició i Abast
- Scripts vs. Funcions
- Depuració i Gestió d'Errors
Mòdul 4: Visualització de Dades
- Conceptes Bàsics de Gràfics
- Gràfics 2D
- Gràfics 3D
- Personalització de Gràfics
- Tècniques Avançades de Gràfics
Mòdul 5: Anàlisi de Dades i Estadística
- Importació i Exportació de Dades
- Estadístiques Descriptives
- Preprocessament de Dades
- Anàlisi de Regressió
- Proves Estadístiques
Mòdul 6: Temes Avançats
- Entrada/Sortida de Fitxers
- Gestió de Grans Conjunts de Dades
- Tècniques d'Optimització
- Conceptes Bàsics de Simulink
- Computació Paral·lela