Introducción
Matlab Básico
Funciones para análisis de ondas
Ventaneo
Bibliografía
Links



Análisis de una Onda Seno

Para poder generar ondas senosoidales que involucren parámetros tales como amplitud, frecuencia, frecuencia de muestreo, tiempo y ángulo de fase, hay que definir la función senosoidal. El siguiente es el cuerpo de la función.

function [x]=senosoidal(amplitud,frecuencia,fm,tiempo,fase)

%SENOSOIDAL crea una senosoidal
%    SENOSOIDAL(amp,fr,ph,samp,t) crea una senosoidal
%        amp = amplitud
%        fr = frecuencia
%        ph = fase
%        samp = frecuencia de muestreo
%        t = tiempo de muestreo

% Copyright (c) 2004 by Antonio Quintero
% $Revision: 1.1 $ $Date: 2004/20/06 19:12:36 $

for n=0:fm*tiempo-1
    angulo=2*pi*frecuencia/fm;
x(n+1)=amplitud*sin((angulo*n)+fase);
% Como los vectores empiezan en 1, x arranca una
% posición después
end

Para verificar que la función senosoidal quedó guardada en la carpeta Work, escribir pwd, esta función devuelve todo el path de la función (D:\MATLAB6p5\Work\senosoidal.m) y al escribir dir debe aparecer la función senosoidal.m

Siempre es importante tener en cuenta el teorema fundamental de muestreo el cual dice que para representar digitalmente una señal que contiene componentes de frecuencia hasta x Hz es necesario usar una frecuencia de muestreo de al menos 2x muestras por segundo.

Vamos ahora a analizar dos ondas senosoidales que solo varían en su frecuencia, las dos señales van a tener los siguientes parámetros: una amplitud de 0.5, 1000 de frecuencia de muestreo durante 1 segundo y con un ángulo de fase 0; las dos ondas solo se van a diferenciar en sus frecuencias, una es a 440 Hz y la otra es a 441 Hz; se pide: graficar las ondas hasta nyquist y graficar sus correspondientes espectros.

Nota: Para poder representar digitalmente estas señales, la frecuencia de muestreo debería ser como mínimo para 440 Hz, 880 Hz y para 441 Hz, 882 Hz, para nuestro ejemplo se esta tomando solo la mitad de la frecuencia de muestreo, la cual es 500 Hz, esta frecuencia corresponde a la frecuencia de Nyquist.

A una variable x1 se asigna el resultado de la función senosoidal con todos sus parámetros

>> x1=senosoidal(0.5,440,500,1,0);

A una variable x2 se asigna el resultado de la función senosoidal con todos sus parámetros

>> x2=senosoidal(0.5,441,500,1,0);

A una variable x se asigna el resultado de la suma de las dos ondas senosoidales

>> x=x1+x2;

A una variable xx se asigna el resultado de la multiplicación de las dos ondas senosoidales

>> xx=x1.*x2;

Para poder graficar todas las ondas con sus resultados, se utiliza el comando subplot(cantidad de figuras, posición, numero de la figura), seguido del comando plot(figura) y un título para el gráfico.

>> subplot(4,1,1),plot(x1),grid on,zoom,title('Onda Seno 440 Hz')
>> subplot(4,1,2),plot(x2),grid on,zoom,title('Onda Seno 441 Hz')
>> subplot(4,1,3),plot(x),grid on,zoom,title('Onda Seno 440 Hz + Onda Seno 441 Hz')
>> subplot(4,1,4),plot(xx),grid on,zoom,title('Onda Seno 440 Hz * Onda Seno 441 Hz')


Gráficas de cada onda (440, 441, 440+441, 440*441)

Los siguientes son los sonidos que resultaron de la anterior práctica:

El siguiente paso corresponde al análisis de los espectros de cada una de estas ondas.

Primero se asigna a una variable espx el valor absoluto de la transformada rápida de Fourier de la función seno a 440 Hz almacenada anteriormente en la variable x1

>> espx1=abs(fft(x1));

Seguidamente se hace el mismo proceso para las otras ondas generadas.

>> espx2=abs(fft(x2));
>> espx=abs(fft(x));
>> espxx=abs(fft(xx));

Ahora se grafican las respuestas en una sola gráfica

>> subplot(4,1,1),plot(espx1),grid on,zoom,title('Espectro Onda Seno 440 Hz')
>> subplot(4,1,2),plot(espx2),grid on,zoom,title('Espectro Onda Seno 441 Hz')
>> subplot(4,1,3),plot(espx),grid on,zoom,title('Espectro de la Onda Seno 440 Hz + Onda Seno 441 Hz')
>> subplot(4,1,4),plot(espxx),grid on,zoom,title('Espectro de la Onda Seno 440 Hz * Onda Seno 441 Hz')


Gráficas de los espectros de cada onda (440, 441, 440+441, 440*441)

Las gráficas expresan las simetrías de las energias de todas las ondas.

Hay otra manera de graficar los espectros por medio de la función stem(varible), esta función muestra la figura en forma de barras de tal manera que en algunos casos es más fácil observar que sucede en la gráfica.

En la siguiente figura se muestra un zoom hecho en cada gráfica con el fin de poder establecer en que valores están exactamente los espectro.

>> subplot(4,1,1),stem(espx1),grid on,zoom,title('Espectro Onda Seno 440 Hz')
>> subplot(4,1,2),stem(espx2),grid on,zoom,title('Espectro Onda Seno 441 Hz')
>> subplot(4,1,3),stem(espx),grid on,zoom,title('Espectro de la Onda Seno 440 Hz + Onda Seno 441 Hz')
>> subplot(4,1,4),stem(espxx),grid on,zoom,title('Espectro de la Onda Seno 440 Hz * Onda Seno 441 Hz')


Gráficas de los espectros de cada onda (440, 441, 440+441, 440*441)

Ya con todos estos datos, se podría preguntar cuál es la frecuencia de análisis, definida por la frecuencia de muestreo sobre la longitud de la señal y su intervalo de muestreo, definida a su vez como la unidad sobre la frecuencia de muestreo.

 

Página diseñada por Ing. Antonio Quintero
2004