Sin categoría

¿Cómo procesar una suma de funciones sinusoidales con Matlab?

Supongamos que queremos los valores generados por la señal x(t) siguiente a lo largo de un período de tiempo desde 0 hasta 1 segundos, con incrementos de 0.1 segundos, es decir, t=0:0.1:1:

>> t=0:0.1:1

t =   0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

Vemos que la operación consiste en evaluar x(t) 11 veces (para 11 valores distintos de t):

¿Qué pasaría si tuviéramos que evaluar en un rango más amplio, tal como t entre 0 y 1, pero con incrementos de 0.01, es decir, t=0:0.01:1? Tendríamos que repetir el cálculo anterior 101 veces!!.

He aquí donde se observa claramente la ventaja del procesamiento de señales digitales, ya que la computadora nos permite hacer este trabajo iterativo mediante flujos de control aportados por aplicaciones que están al alcance de presupuestos ajustados. Veamos cómo se hace con Matlab.

Podemos expresar la función x(t) de nuestro ejemplo de la manera siguiente:

Primer método: En este enfoque, calcularemos cada componente sinusoidal en un paso como un vector, utilizando el tiempo t=0:0.1:1 como otro vector y luego sumando cada componente sinusoidal mediante un bucle for..end.

>> t=0:0.1:1;

>> xt=zeros(1,length(t));

>> for k=1:3

xt=xt+(1/k)*sin(2*pi*k*t);

>> end

Este algoritmo nos permite obtener de una manera muy eficiente, los valores de x(t) para el período de tiempo de interés:

xt = 0    1.3803    1.0490    0.4612    0.4293    0.0000   -0.4293   -0.4612   -1.0490   -1.3803   -0.0000

Segundo método: Veremos ahora como, por medio de la multiplicación matriz-vector, Matlab puede ser incluso más eficiente. Para fines de demostración, considere solo cuatro valores para t:

Que se puede escribir en forma de matriz como:

Después de realizar la transposición:

En consecuencia, el código en Matlab es:

>> t=0:0.1:1; k=1:3;

>> xt=(1./k)*sin(2*pi*k’*t)

Respuesta:

xt =    0    1.3803    1.0490    0.4612    0.4293    0.0000   -0.4293   -0.4612   -1.0490   -1.3803   -0.0000

Este es el código más compacto y la ejecución más eficiente en Matlab, especialmente cuando el número de términos sinusoidales es muy grande.

Revisión literaria hecha por:

Prof. Larry Francis Obando – Technical Specialist – Educational Content Writer

Se hacen trabajos, se resuelven ejercicios!!

WhatsApp:  +34633129287  Atención Inmediata!!

Twitter: @dademuch

Copywriting, Content Marketing, Tesis, Monografías, Paper Académicos, White Papers (Español – Inglés)

Escuela de Ingeniería Electrónica de la Universidad Simón Bolívar, USB Valle de Sartenejas.

Escuela de Ingeniería Eléctrica de la Universidad Central de Venezuela, UCV Caracas.

Escuela de Turismo de la Universidad Simón Bolívar, Núcleo Litoral.

Contacto: España. +34633129287

Caracas, Quito, Guayaquil, Jaén. 

WhatsApp:  +34633129287   

Twitter: @dademuch

FACEBOOK: DademuchConnection

5 comentarios sobre “¿Cómo procesar una suma de funciones sinusoidales con Matlab?”

Deja un comentario