Procesamiento de señales:

El análisis de señales implica la realización del análisis matemático de frecuencia, longitud de onda y valor del voltaje de una señal. Las señales eléctricas son variaciones de voltaje, o de corriente, respecto al tiempo, que se pueden representar por una serie de ondas seno o coseno.

GNU Octave

Octave o GNU Octave es un programa libre para realizar cálculos numéricos. Como su nombre indica, es parte del proyecto GNU. Es considerado el equivalente libre de MATLAB. Entre varias características que comparten, se puede destacar que ambos ofrecen un intérprete, permitiendo ejecutar órdenes en modo interactivo. Nótese que Octave no es un sistema de álgebra computacional, como lo es Maxima, sino que está orientado al análisis numérico.

Descripción matemática de una onda de voltaje o de corriente con frecuencia única

Señales Senoidales

señal de Voltage variante en el tiempo:
v(t) = VmSen(wt+ θ) ó v(t)= VmCos(2πf + θ)
señal de Corriente variante en el tiempo:
i(t) = ImSen(wt+ θ) ó i(t)= ImCos(2πf + θ)

Donde:
v(t): voltaje de la onda senoidal variable respecto al tiempo t.
i(t): corriente de la onda senoidal variable respecto al tiempo t.
V: voltaje máximo
I: corriente máxima
f: frecuencia
θ: desplazamiento de fase (radianes)
w=(2πf): velocidad angular (radianes por segundo)

El uso de una función seno o coseno para representar una señal es completamente arbitrario y depende de cuál se escoge como referencia.
Tenemos que: sen θ=cos(θ-90º)

v(t)=VmSen(wt+θ) = VmCos(wt+θ-90º)
v(t)=VmCos(wt+θ) = VmSen(wt+θ+90º)

señales periodicas

Para todo t real y para un T positivo, una señal periódica está definida mediante la expresión:
xT(t) = xT(t+T)
En donde T es el período de la señal.
La señal xT(t) puede considerarse como la repetición periódica de una señal x(t), algunas veces llamada señal generatriz o generadora de xT(t), en cualquier intervalo de duración T, como se muestra.
generatriz

Se sigue que para un entero k cualquiera:
xTt

Aún más, si xT(t) y gT(t) tienen el mismo período T, entonces, con a y b dos constantes reales, yT(t)=axT(t)+bgT(t) será también periódica de período T.
En particular, si la señal xT(t)=cos(ω1t)+cos(ω2t) es periódica de período T, entonces debe ser posible encontrar dos números enteros m y n tales que:
frecuencuaangular

La fracción m/n o ω1/ω2 debe ser una fracción racional irreducible para que xT(t) sea periódica.
El valor más pequeño de m o n determina el período T. Por ejemplo, si m > n, entonces T=n/f2

Representacion de una señal en el dominio del tiempo...

senaleneltiempo

Representacion de una señal en el dominio de la frecuencia...

dominiodelafrecuencia

Ondas periódicas no repetivias

En esencia, toda onda repetitiva formada por una onda senoidal o cosenoidal relacionada armónicamente, es una onda no senoidal o una onda periódica compleja. Para analizar este tipo de ondas es necesario el uso de la serie de Fourier.
Una señal no periodica son aquellas que estan compuestas normalmente por un solo ciclo, en este caso seran aperiodicas.

Fourier y sus Series

Jean-Baptiste Joseph Fourier (Auxerre, Francia, 21 de marzo de 1768 - París, 16 de mayo de 1830), matemático y físico francés conocido por sus trabajos sobre la descomposición de funciones periódicas en series trigonométricas convergentes llamadas Series de Fourier, método con el cual consiguió resolver la ecuación del calor. La transformada de Fourier recibe su nombre en su honor. Fue el primero en dar una explicación científica al efecto invernadero en un tratado.

En la ingeniería de las comunicaciones, además de las conocidas señales periódicas seno y coseno, se emplea una gran cantidad de formas de onda periódicas para simular señales físicas, tales como señales rectangulares, diente de sierra, señales rectificadas, señales moduladas, etc., que se pueden representar en el dominio de la frecuencia mediante los métodos diseñados por Fourier.

Si una señal xT(t) es periódica y satisface ciertas condiciones, se puede representar en el dominio de la frecuencia mediante un número infinito de componentes sinusoidales relacionadas armónicamente (múltiplos de) con la frecuencia fundamental. La amplitud y la fase relativas de cada una de estas componentes están especificadas en el desarrollo en serie de Fourier de xT(t).
Se usa en el análisis de señales para representar los componentes Senoidales de una onda periódica no senoidal, es decir, para cambiar una señal en el dominio del tiempo a una señal en el dominio de la frecuencia. En general, se puede obtener una serie de Fourier para cualquier función periódica, en forma de una serie de funciones trigonométricas.

Cualquiera señal periódica xT(t), definida en el intervalo (-T/2,T/2), donde T es su período y que satisface las siguientes condiciones suficientes, se puede desarrollar en Serie de Fourier:

  1. xT(t) es periódica, es decir, xT(t)=xT(t+T).
  2. xT(t) tiene un número finito de discontinuidades en el intervalo (-T/2,T/2).
  3. x T (t) es de módulo integrable en un período, es decir:
    integrableenperiodo-1

Las condiciones 2 y 3 implican que xT(t) es una función acotada en el intervalo (-T/2, T/2), Estas condiciones se conocen “Condiciones de Dirichlet”.

x(t)=DC + fundamental + armonica 1 + armonica 2 + ... + armonica n

x(t)=A0 + A1Cos(Alpha) + A2Cos(Alpha) + A3Cos(Alpha) +...+Ancos(Alpha) + B1Cos(Beta) + B2Cos(Beta) + B3Cos(Beta) +...+ BnCos(beta)

Toda señal conlleva una componente en DC, la fundamental describe la primera armonica y es igual a la frecuencia de la onda, los armonicos son multiplos enteros de la frecuencia fundamental.

Simetria de onda

Describe la simetría de una forma de onda en el dominio del tiempo, esto es, su posición relativa con respecto a los ejes horizontal (tiempo) y vertical (amplitud).

Simetria par

si una forma de onda periódica de voltaje es simétrica respecto al eje vertical (amplitud) se dice que tiene simetría especular o de ejes, y se llama función par. Para todas las funciones pares, los coeficientes B de la ecuación x(t) son cero. Por consiguiente, la señal solo posee un componente de DC y los términos cosenoidales. La suma de una serie de funciones pares es una función par. Las funciones pares satisfacen la condición x(t)=x(-t).
simetriapar-1

Simetria impar

si una forma de onda periódica de voltaje es simétrica respecto a una línea intermedia entre el eje vertical y el horizontal negativo y pasa por el origen de las coordenadas, se dice que tiene una simetría puntual o que es asimétrica y se le llama función impar. Para todas las funciones impares , los coeficientes A de la ecuación x(t) son cero. Por consiguiente, la señal tan solo contiene un componente de DC y los términos Senoidales. La suma de una serie de funciones impares es una función impar. A esta forma primero se le debe reflejar en el eje y y después en el eje x para sobreponerla consigo misma. Así: x(t)=-x(-t).
simetriaimpar

Simetria de media onda

si una forma de onda periódica de voltaje es tal que la onda del primer medio ciclo (t=0 a t=T/2) se repite, pero con signo contrario durante el segundo medio ciclo (t=T/2 a t=T), se dice que tiene simetría de media onda.

las armónicas pares de la serie, en los términos seno y coseno, son cero. Por consiguiente, las funciones de media onda cumplen con la condición:simetriamediaonda-1

simetriamediaondagui

La serie trigonometrica.

Esta se encuentra representada por las siguientes expreciones.
sumatoriaseriefourie
donde fo es igual a 1/T

fourierformulas

Otra forma de representarlas es la siguiente:
otraforma1-1
otraforma2-1
otraforma3
otraforma4

Graficando los armonicos de una señal..

Para esta practica de laboratorio solicitada, se pretende representar graficamente la funcion que despliega la solucion de la serie de fourier aplicada a una señal cuadrada impar, no entraremos en detalle a la solucion de las diferentes integrales planteadas, pero dejaremos un video que los podra guiar durante el proceso.

La siguiente imagen describe la señal a la cual fueron hayados sus diferentes coeficientes.
se-alcuadrada

Para nuestra solucion, la señal estara comprendida sobre los siguientes intervalos

f(t) = 1 para todo 0<=t<=5
f(t)= -1 para todo 5<=t<=10

la funcion que describe la señal de la grafica esta representada por
coeficientebn-1

donde 4V/π representa el coeficiente bn y N=impar el numero del armonico para la serie.

Solucion a la Serie de Fourier en GNU-Octave

Para automatizar el proceso de solucion a la serie que se ha propuesto, hemos diseñado sobre GNU-Octave el sistema matematico que solucionara los diferentes coeficientes para la serie.

% El siguiente script, realiza una solucion basada en variables simbolicas para expresar 
% La solucion de los coeficientes de la serie de fourier
% Realiza un calculo muy aproximado a los coeficientes calculados manualmente. 
close all;
clear all;
clc;
pkg load symbolic;  %cargamos el modulo para las variables simbolicas
syms x n;  % variables simbolicas creadas 
disp("\n")
disp("\n")
disp ("--------------------------------------------------------------------------------------")
disp("El siguiente script, realiza una solucion basada en variables simbolicas para expresar\n")
disp("La solucion de los coeficientes de la serie de fourier\n")
disp("Realiza un calculo muy aproximado a los coeficientes calculados manualmente.\n")
disp("\n")
disp("Definiendo la funcion:");
disp("Es necesario definir los dos intervalos de la funcion");
f=[input("Ingrese la funcion del primer intervalo\n") input("Ingrese la funcion del segundo intervalo\n")]; % Definicion de la Funcion 
disp("Definiendo los intervalos de la funcion:");
disp("Se deben definir los dos limites de la funcion");
L=[input("ingrese el inicio de la funcion\n") input("ingrese el punto medio de la funcion\n") input("ingrese el punto final de la funcion\n")];%% Definicion de los intervalos para la funcion. 
f=sym(f); % Crea una funciona simbolica basandose en los datos de la definicion de la funcion. 
P=max(L)-min(L); % periodo para la funcion
wo=2*pi/(P); % Frecuencia angular para la funcion
% Solucion al coeficinete A0
Ao=0;
for i=1:length(f)
    Ao=Ao+int(f(i),'x',L(i),L(i+1)); %Integracion para A0
end
% Simplificando A0
Ao=simplify(Ao/P);
% Solucion al coeficiente An
An=0;
for i=1:length(f)
    An=An+int(f(i)*cos(n*wo*x),L(i),L(i+1)); %Integracion para An
end
% Simplificando An 
An=simplify(2*An/P);
% Solucion al coeficiente Bn
Bn=0;
for i=1:length(f)
    Bn=Bn+int(f(i)*sin(n*wo*x),L(i),L(i+1)); %Integracion para Bn
end
% Simplificando Bn 
Bn=simplify(2*Bn/P);
An=char(An);
Bn=char(Bn);
An=simplify(sym(strrep(char(An),'sin(pi*n)','0')));
Bn=simplify(sym(strrep(char(Bn),'sin(pi*n)','0')));
An=simplify(sym(strrep(char(An),'cos(pi*n)','(-1)^n')));
Bn=simplify(sym(strrep(char(Bn),'cos(pi*n)','(-1)^n')));
An=simplify(sym(strrep(char(An),'sin(2*pi*n)','0')));
Bn=simplify(sym(strrep(char(Bn),'sin(2*pi*n)','0')));
An=simplify(sym(strrep(char(An),'cos(2*pi*n)','1')));
Bn=simplify(sym(strrep(char(Bn),'sin(2*pi*n)','1')));
% Desplegando la informacion de la solucion.
disp("Funcion variable en el tiempo")
disp('f(x)= ')
pretty(f)
disp(' ')
disp("Limites para la funcion")
fprintf('Limite = %.4f\n', L)
disp(' ')
disp("Coeficiente A0")
disp('Ao')
pretty(Ao)
disp(' ')
disp("Coeficiente An")
disp('An')
pretty(An)
disp(' ')
disp("Coeficiente Bn")
disp('Bn')
pretty(Bn)
disp(' ')

Como podemos evidenciar sobre el codigo, f=[1 -1] indica la funcion y sus valores y L=[0 5 10] son los intervalos para la funcion.

La solucion a la serie estaria representada por los siguientes coeficientes
salidadelaserie

Ploteando los armonicos para la funcion

una vez calculados los coeficientes para la funcion determinada, podremos visualizar el resultado de la señal graficando sus armonicos aplicando la sumatoria que describe la funcion variante en el tiempo.

El siguiente codigo realiza un plot de la funcion, mostrando su señal fundamental, primer ciclo del armonico y el numero de ciclos determinados en la entrada.


%Este script es usado para realizar la representacion de la serie de fourier para una señal cuadrada
%La señal empieza en el tiempo=0 y tiene una amplitud de 1V, y una frecuencia fundamental radial w=2*pi*f
%Sumatorioa de los terminos de la representacion de fourier o multiplos de la frecuencia fundamental 
%para una señal cuadrada perfecta, el numero del armonico deberia de tender a infinito, pero para su representacion
%se puede expresar hasta aproximadamente 10000 armonicos de la señal. 
close all
clear all
clc
disp ("--------------------------------------------------------------------------------------")
disp ("Serie de Fourier (Armonicos)...\nInformacion:\nEsta serie ha sido calculada para generar una señal de la forma cuadrada\nLa señal comienza en tiempo = 0seg y terminara en un tiempo que depende del numero de ciclos, tendra una amplitud definida en la entrada\nTambien tendremos una frecuancia angular que depende de la entrada\nel numero de la variable Armonicos, realizara la sumatoria de los terminos de fourier")
disp ("--------------------------------------------------------------------------------------")
Vp= input("Opcional:\nPuede utilizar notacion cientifica(3e9)\nIngrese el Voltaje Pico de la funcion a generar... \n");
N = input("Ingrese el numero de armonicos a generar... \n");
frecuencia = input("Valor de la Frecuencia (Hz)\n");
W1 = 2*pi*frecuencia; %Frecuencia fundamental para la funcion
periodo = 1/frecuencia; %Periodo de la funcion fundamental 
ciclosAVer = input("Numero de ciclos a visualizar en el plot\n");
nperiodos=periodo*ciclosAVer;%numero de periodos que se quieren ver
t = 0:periodo/2048:nperiodos; % Definicion del tiempo para la representacion desde 0 hasta nperiodos con un paso de periodo/2048 para una buena visualizacion
f = zeros(1,length(t)); % Inicializacion de la funcion
f2 = zeros(1,length(t)); % Inicializacion de la funcion
f3 = zeros(1,length(t)); % Inicializacion de la funcion
for n = 1:2:N % Loop para calcular la sumatoria     
    %bn = (4)/(pi*n);  Este es el coeficiente de la serie de fourier calculado a mano.
    bn = ((-2*(-1)^n) + cos(2*pi*n) + 1)/(pi*n); %
    f = f+ bn*Vp*sin(W1*n*t); % Agrega los N terminos a la funcion fundamental 
    f2 = f2+ bn*Vp*sin(W1*n*t); % Agrega los N terminos a la funcion fundamental
end
b1= (4)/(pi); %Coeficinente del primer armonico para graficar la funcion fundamental.
f3 = f3 + b1*Vp*sin(W1*1*t); % Agrega a la funcion  la señal fundamental.
% Ploteando las señales 
subplot(3,1,1)
plot(t,f)
axis([0 nperiodos (-Vp*0.2+-Vp) (Vp*0.2+Vp)])
title(['Representacion Serie de Fourier ' num2str(N) ' Armonico(s)'],'FontSize',16)
xlabel('Tiempo(segundos)')
ylabel('V(t)')
subplot(3,1,2)
plot(t,f2)
axis([0 periodo (-Vp*0.2+-Vp) (Vp*0.2+Vp)])
title(['Primer Ciclo'],'FontSize',16)
xlabel('Tiempo(segundos)')
ylabel('V(t)')
subplot(3,1,3)
plot(t,f3)
axis([0 periodo (-Vp*0.5+-Vp) (Vp*0.5+Vp)])
title(['Señal Fundamental'],'FontSize',16)
xlabel('Tiempo(segundos)')
ylabel('V(t)')

Al ejecutar el codigo en mencion, este solicitara al usuario algunas variables para la funcion como su VoltageMaximo, Frecuencia de la señal y Numero de armonicos.
para este ejemplo, introduciremos la funcion sobre la que estamos trabajando.
Vm = 1V
Frecuencia = 60Hz
Armonicos = 100
Ciclos a visualizar = 3

Para estos datos ingresados, el plot nos entregara la solucion del sistema.
armonicossenial

Codigo Fuente

Si desean descargar los fuentes adjuntos sobre este blog, pueden hacerlo directo desde nuestro GitHub