Вы находитесь на странице: 1из 10

UNIVERSIDAD TCNICA DE AMBATO

Facultad de Ingeniera en Sistemas, Electrnica e Industrial


Proyecto de Medio Parcial
Ttulo:

Programacin en Matlab

Carrera:

Ingeniera Electrnica y Comunicaciones

rea Acadmica:

Fsica y Electrnica

Lnea de Investigacin:
Ciclo Acadmico y paralelo:
Alumnos participantes:

Sexto E A
ngel Ramos
Diana Tapia
Lizbeth Villarroel

Mdulo y Docente:

Comunicacin Analgica.
Ing. Juan Pablo Pallo.

I.

INFORME DEL PROYECTO


1.

PP

2.

YY

2.1 Ttulo
Programacin en Matlab.
2.2 Objetivos
2.2.1 Objetivo general
Crear un programa que exprese la serie de Fourier sus resultados, frmulas y su
forma grfica de distintas funciones

2.2.2 Objetivo especficos

Disear un programa en Matlab para representar series de Fourier

Representar grficamente las formas de onda de una funcin, amplitud de


armnicos y su diagrama de tiempo.

Deducir A0, An, Bn de una funcin variable , seno, coseno , triangular y


cuadrada de onda completa y media onda.

2.3 Resumen
En este presente trabajo se detalla cmo se realiz el programa de la series de
fourier en un lenguaje de programacin de alto nivel como es Matlab el cual es
un programa de clculo cientfico de gran versatilidad y facilidad de uso con un

gran nmero de herramientas orientadas a una amplia diversidad de aplicaciones


entre ellas la modelacin y representacin grfica de las series de Fourier
aplicando los conocimientos adquiridos en el mdulo de comunicacin
analgica.
Este programa demuestra el objetivo de la serie de fourier el cual es analizar el
contenido en frecuencia de las seales.
2.4 Abstract
In this present study details how the program of Fourier series in a programming
language of high level as Matlab which is a program of scientific calculation of
versatility and ease of use with a large number of tools designed to be held a
wide variety of applications including modeling and graphical representation of
the Fourier series. applying the knowledge acquired in analog communication
module.
This program indicates the goal of the Fourier series which is to analyze the
frequency content of the signals.
2.5 Palabras clave:
Serie, programacin, cdigo .etc.
2.6 Introduccin
2.7 Materiales

Computadora

Software Matlab

2.8 Metodologa
Serie de fourier
Una serie de Fourier es una ampliacin de una funcin peridica en
trminos de una suma infinita de senos y cosenos. Estas series hacen
uso de las relaciones de ortogonal de las funciones seno y coseno. El
clculo y estudio de series de Fourier es extremadamente til como una
manera de romper una funcin arbitraria peridica a un conjunto de

trminos simples que pueden ser conectados, resuelto individualmente,


y luego recombinados para obtener la solucin al problema original o
una aproximacin a ella, la precisin que se desea o la ms til.
Sea f(t) una funcin peridica de periodo T, llamaremos SERIE DE
FOURIER asociada a f(t) a una serie trigonomtrica. La serie puede
desarrollarse para igualar cualquier funcin deseada durante cualquier
duracin finita de tiempo mientras la componente fundamental de la
serie pasa por un ciclo completo. Si llamamos t1 al principio y t2 al final
del perodo T de la componente fundamental ser t2 t1 = T y con ello:
wT = 2p ; T = 2p/w w = 2p/T
El mtodo de encontrar los coeficientes, llamado anlisis de Fourier, se
basa en que las funciones seno y coseno constituyen un sistema
ortogonal, esto es el promedio de sus productos en cruz es cero.
Y con esto resulta:

Se define entonces

Casos particulares Podemos demostrar que hay condiciones de simetra


que permiten establecer la existencia o no de determinados trminos en
la serie, lo que nos ahorra trabajo en el clculo.

Funcin impar: f(x) = -f(-x) slo tienen trminos en senos, haciendo uso
del hecho que f(t) = -f(-t) = -f(t'):

Funcin par: f(x) = f(-x) slo tienen trminos en cosenos y la constante.


Y tambin.

Matlab
MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente
integrado orientado para llevar a cabo proyectos en donde se encuentren implicados
elevados clculos matemticos y la visualizacin grfica de los mismos. MATLAB
integra anlisis numrico, clculo matricial, proceso de seal y visualizacin grfica en
un entorno completo donde los problemas y sus soluciones son expresados del mismo
modo en que se escribiran tradicionalmente, sin necesidad de hacer uso de
la programacin tradicional.

El Lenguaje de Computacin Tcnica MATLAB es un ambiente de computacin tcnica


integrada que combina computacin numrica, grficos y visualizacin avanzada y un
lenguaje de programacin de alto nivel de desarrollo integrado facilita producir
resultados prcticos fcilmente.
MATLAB es la fundacin numrica y grfica para todos los productos de The
MathWorks. MATLAB combina computacin numrica, grficos 2D y 3D y
capacidades de lenguaje en un nico ambiente fcil de usar.
Con su amplio rango de herramientas para modelar sistemas de control, anlisis,
simulacin y procesamiento de prototipos, MATLAB es el sistema ideal para desarrollar
sistemas avanzados de control. Usted puede modelar su sistema de control usando las
cajas de herramientas para el diseo de controles avanzados de MATLAB.

Caractersticas del entorno

Clculos intensivos desde un punto de vista numrico.

Grficos y visualizacin avanzada.

Lenguaje de alto nivel basado en vectores, arrays y matrices.

Coleccin muy til de funciones de aplicacin.

Programacin de la funcin en Matlab


function FouF_OpeningFcn(hObject, eventdata, handles,
varargin)
set(handles.axes9,'Visible','off')
set(handles.coe,'Visible','off')
set(handles.axes10,'Visible','off')
set(handles.tim,'Visible','off')
set(handles.fre,'Visible','off')
set(handles.pushbutton4,'Enable','off')
set(handles.co,'Enable','off')
set(handles.uipanel7,'Visible','off')
set(handles.uipanel15,'Visible','off')
set(handles.uipanel4,'Visible','off')
set(handles.uipanel8,'Visible','off')
set(handles.uipanel11,'Visible','off')

function gr_Callback(hObject, eventdata, handles)


global interv funci
syms x t
set(handles.uipanel11,'Visible','on')
clc
axes(handles.axes9)
set(handles.axes9,'Visible','on')
cla
interv= str2num (get(handles.inter,'String'));
funci= eval(get(handles.fun,'String'));
x= linspace(min(interv),max(interv),1000);
ft=0;
for i=1:length(interv)-1
if mod(i,2)==1
ft= ft+
((x>=interv(i))&(x<=interv(i+1))).*subs(funci(i),x);
else
ft= ft+
((x>interv(i))&(x<interv(i+1))).*subs(funci(i),x);
end
end
plot (x, ft, 'Linewidth',2);
hold on
plot (x+max(x)-min(x),ft,'Linewidth',2)
plot (x-max(x)+min(x),ft,'Linewidth',2)
plot ([max(x) max(x)],[ft(1) ft(end)],'linewidth',2)
plot ([min(x) min(x)],[ft(end) ft(1)],'linewidth',2)
grid on
xlabel('t');
ylabel('f(t)');
set(handles.co,'Enable','on')
% --- Executes on button press in co.
function co_Callback(hObject, eventdata, handles)
set(handles.co,'Enable','off')
set(handles.gr,'Enable','off')
set(handles.pushbutton3,'Enable','off')
clc
syms n wt t
global interv funci a0 an bn
funci= sym(funci);
peri= max(interv)-min(interv);
w0=2*pi/peri;
a0=0;
an=0;
bn=0;
%calculo de A0
for i=1:length(funci)
a0=a0+int(funci(i),'t',interv(i),interv(i+1));
end
a0= simple(a0/peri);
%calculo de an
for i=1:length(funci)
an=an+int(funci(i)*cos(n*w0*t),'t',interv(i),interv(i+
1));
end
an=simple(2*an/peri);

%calculo de bn
for i=1:length(funci)
bn=bn+int(funci(i)*sin(n*w0*t),'t',interv(i),interv(i+
1));
end
bn=simple(2*bn/peri);
%par o impar

an
bn
an
bn

=
=
=
=

char(an);
char(bn);
simple(sym(strrep(char(an), 'sin(pi*n)', '0')));
simple(sym(strrep(char(bn), 'sin(pi*n)', '0')));

%an = simple(sym(strrep(char(an), 'sin(n*pi)^2',


'0')));
%bn = simple(sym(strrep(char(bn), 'sin(n*pi)^2',
'0')));
an = simple(sym(strrep(char(an), 'cos(pi*n)', '(1)^n')));
bn = simple(sym(strrep(char(bn), 'cos(pi*n)', '(1)^n')));
an = simple(sym(strrep(char(an), 'sin(2*pi*n)',
'0')));
bn = simple(sym(strrep(char(bn), 'sin(2*pi*n)',
'0')));
an = simple(sym(strrep(char(an), 'cos(2*pi*n)',
'1')));
bn = simple(sym(strrep(char(bn), 'cos(2*pi*n)',
'1')));

an = simple(sym(strrep(char(an), 'sin(pi*n)', '0')));


bn = simple(sym(strrep(char(bn), 'sin(pi*n)', '0')));
an = simple(sym(strrep(char(an), 'cos(n*pi)', '(1)^n')));
bn = simple(sym(strrep(char(bn), 'cos(n*pi)', '(1)^n')));
an = simple(sym(strrep(char(an), 'sin(2*n*pi)',
'0')));
bn = simple(sym(strrep(char(bn), 'sin(2*n*pi)',
'0')));
an = simple(sym(strrep(char(an), 'cos(2*n*pi)',
'1')));
bn = simple(sym(strrep(char(bn), 'cos(2*n*pi)',
'1')));
axes(handles.coe);
cla
R=strcat('$$', 'A_0 = ', char(latex(a0)),'$$');
text('Interpreter','latex',...
'String',R,...
'Position',[0 .9],...
'FontSize',11);
R = strcat('$$', 'A_n = ', char(latex(an)),'$$');
text('Interpreter','latex',...
'String',R,...
'Position',[0 .6],...
'FontSize',11);
R = strcat('$$', 'B_n = ', char(latex(bn)),'$$');
text('Interpreter','latex',...
'String',R,...

'Position',[0 .3],...
'FontSize',11);
if an==0
R = strcat('$$', 'f(t) = ',
char(latex(a0)),'+\sum_{i=1}^{\infty}',char(latex(bn))
,'sin(n\omega_0t)','$$');
text('Interpreter','latex',...
'String',R,...
'Position',[0 .0],...
'FontSize',11);
else
if bn==0
R = strcat('$$', 'f(t) = ',
char(latex(a0)),'+\sum_{i=1}^{\infty}',char(latex(an))
,'cos(n\omega_0t)','$$');
text('Interpreter','latex',...
'String',R,...
'Position',[0 .0],...
'FontSize',11);
else
R = strcat('$$', 'f(t) = ',
char(latex(a0)),'+\sum_{i=1}^{\infty}',char(latex(an))
,'cos(n\omega_0t)',char(latex(bn)),'sin(n\omega_0t)','
$$');
text('Interpreter','latex',...
'String',R,...
'Position',[0 .0],...
'FontSize',11);
end
end
set(handles.uipanel7,'Visible','on')
syms n
armo = str2num(get(handles.arm,'String'));
t=linspace(min(interv)-peri,max(interv)+peri,1000);
ft=zeros(armo,1000);
for i=1:armo
ft(i,:) = (subs(bn, 'n', i).*sin(i*w0*t))+(subs(an,
'n', i).*cos(i*w0*t));
axes(handles.axes10)
set(handles.axes10, 'visible', 'on')
plot(t, a0+sum(ft),'Color', 'b', 'Linewidth', 0.5);
xlim([min(t) max(t)])
set(handles.uipanel15,'Visible','on')
set(handles.uipanel4,'Visible','on')
set(handles.uipanel8,'Visible','on')
xlabel('t');
ylabel('f(t)');
hold on
grid on
axes(handles.tim)
set(handles.tim, 'visible', 'on')
plot(t, ft(i,:),'Color','b', 'Linewidth', 0.5)

xlim([min(t) max(t)])
hold on
box on
grid on
xlabel('t');
ylabel('f(t)');

Cn(i) = sqrt(subs(bn, 'n', i)^2+subs(an, 'n',


i)^2);
axes(handles.fre)
set(handles.fre, 'visible', 'on')

stem(Cn,'fill','r', 'Linewidth', 2)
hold on; grid on
xlim([1 armo])
pause(0.001)

end
axes(handles.axes10)
plot(t, a0+sum(ft), 'black','Linewidth', 2);
set(handles.pushbutton4,'Enable','on')
set(handles.pushbutton3,'Enable','on')
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata,
handles)
Portada
close FouF

% --- Executes on button press in pushbutton4.


function pushbutton4_Callback(hObject, eventdata,
handles)
clc
set(handles.fun,'String','')
set(handles.inter,'String','')
set(handles.arm,'String','')
axes(handles.axes10)
cla reset
set(handles.axes10, 'visible', 'off')
axes(handles.coe)
cla reset
set(handles.coe, 'visible', 'off')
axes(handles.axes9)
cla reset
set(handles.axes9, 'visible', 'off')
axes(handles.tim)
cla reset
set(handles.tim, 'visible', 'off')
axes(handles.fre)
cla reset
set(handles.fre, 'visible', 'off')
a0=0;
an=0;
bn=0;
set(handles.gr,'Enable','on')
set(handles.uipanel7,'Visible','off')
set(handles.uipanel15,'Visible','off')
set(handles.uipanel4,'Visible','off')
set(handles.uipanel8,'Visible','off')
set(handles.uipanel11,'Visible','off')

Portada

2.9 Procedimiento
1. La transformada de Fourier es el procedimiento matemtico que descompone
una funcin en las frecuencias que le forman de la misma manera que un prima
descompone la luz en los diferentes colores y longitudes de onda. La funcin
que inicialmente se define en el tiempo f(t) es la transformada al dominio de la
frecuencia F(w). Esta nueva funcin F(w) se llama la Transformada de Fourier o
Serie de Fourier cuando la funcin es Peridica. Fourier determin que era
posible expresar una funcin coma la suma de Senos y Csenos de diferentes
frecuencias y amplitudes hasta lograr determinar la funcin original. Este
procedimiento fue implementado inicialmente para funciones peridicas, pero se
puede extender a funciones no peridicas haciendo tender a infinito su perodo
T.
2. La forma ms sencilla de utilizar esta funcin, se describe a continuacin:
T=pi;
armonicos=3;
t=[0:0.1:3*pi] y=cuadradaf
(periodo,t,armonicos) plot(t,y) grid;

3. Los
cero

coeficientes
(0)

corresponden a los trminos con aporte coseno. Figura 1. Seal Cuadrada con
seis coeficientes Cabe recordar que si los coeficientes de la serie no se hacen
pequeos lo suficientemente rpido, la serie de Fourier diverge y por tanto no
representa una funcin

2.10

Conclusiones

Se logr disear el programa en Matlab representando las series de Fourier

Las formas de onda de diferentes funciones se visualizan en los cuadros axes


anteriormente programados y cargados

Se deducen las ecuaciones A0, An,Bn de las funciones seno, coseno, triangular,
y cuadrada de onda completa y media onda.

2.11 Recomendaciones

Al momento de la codificacin se deben declarar las variables correctas ya que


el cambio de entre maysculas y minsculas arruina el programa

Adecuar las frmulas de Fourier respecto al programa de alta gama teniendo


cuidado al poner los parntesis y signos para realizar las diferentes operaciones

2.12 Referencia bibliogrfica


Moore Hally (2006)

Matlbal para ingenieros .(primera edicin).

Pearson.
Matlab

nexgroup

(2015)

recopilado

de

https://www.mathworks.com/matlabcentral/newsreader/view_thread/338447
Universidad

autnoma

de

Mxico

(2003)

recopilado

de

http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/datos/fourier/fourier_

1.html
2.13 Anexos

Вам также может понравиться