FFT of various syntetic and real signals
Author:
José Gabriel
Last Updated:
9年前
License:
Creative Commons CC BY 4.0
Abstract:
FFT of various syntetic and real signals
\begin
Discover why 18 million people worldwide trust Overleaf with their work.
FFT of various syntetic and real signals
\begin
Discover why 18 million people worldwide trust Overleaf with their work.
\documentclass[oneside,12pt]{memoir} % Font size
\input{structure.tex} % Include the file that specifies the document structure and layout
\usepackage[spanish,activeacute]{babel}
\title{Actividad 6.1 y 6.2} % Book title
\author{José Gabriel Michel Cortés} % Author
\newcommand{\edition}{Second Edition} % Book edition
\begin{document}
\thispagestyle{empty} % Suppress page numbering
\ThisCenterWallPaper{1.7}{Foto-portadas.jpg} % Add the background image, the first argument is the scaling - adjust this as necessary so the image fits the entire page
\begin{tikzpicture}[remember picture,overlay]
\node [rectangle, rounded corners, fill=white, opacity=0.75, anchor=south west, minimum width=5cm, minimum height=6.5cm] (box) at (-0.5,-10) (box){}; % White rectangle - "minimum width/height" adjust the width and height of the box; "(-0.5,-10)" adjusts the position on the page
\node[anchor=west, color01, xshift=-2cm, yshift=-0.59cm, text width=4cm, font=\sffamily\scriptsize\large] at (box.north){S.S.P.M.M.III.}; % "Text width" adjusts the wrapping width, "xshift/yshift" adjust the position relative to the white rectangle
\node[anchor=west, color01, xshift=-2cm, yshift=-2cm, text width=4cm, font=\sffamily\bfseries\scshape\normalsize] at (box.north){Actividad 6}; % "Text width" adjusts the wrapping width, "xshift/yshift" adjust the position relative to the white rectangle
\node[anchor=west, color01, xshift=-2cm, yshift=-3.5cm, text width=4cm, font=\sffamily\bfseries\scshape\normalsize] at (box.north){Profesor: Ruben Sánchez Gómez}; % "Text width" adjusts the wrapping width, "xshift/yshift" adjust the position relative to the white rectangle
\node[anchor=west, color01, xshift=-2cm, yshift=-5cm, text width=4cm, font=\sffamily\bfseries] at (box.north){Alumno: José Gabriel Michel Cortés}; % "Text width" adjusts the wrapping width, "xshift/yshift" adjust the position relative to the white rectangle
\node[anchor=west, color01, xshift=-2cm, yshift=-6cm, text width=4cm, font=\sffamily\tiny] at (box.north){\today}; % "Text width" adjusts the wrapping width, "xshift/yshift" adjust the position relative to the white rectangle
\end{tikzpicture}
\newpage % Make sure the following content is on a new page
\color{black}
\tiny
\sloppy
\setlength{\parindent}{0pt}
\section*{Actividad 6.1}
\subsection*{Introducción}
¿Qué es la TF?\\
Una transformada de Fourier es una operación matemática que transforma una señal de dominio de tiempo a dominio de frecuencia y viceversa. Estamos acostumbrados a señales con dominio de tiempo en la vida cotidiana. En el dominio de tiempo, la señal se expresa con respecto al tiempo. En el dominio de frecuencia, una señal es expresada con respecto a la frecuencia.
Una FFT (Transformada Rápida de Fourier) es una versión más rápida de la DFT que puede ser aplicada cuando el número de mustras de la señal es una potencia de dos. Un cálculo de FFT toma aproximadamente $N*log_{2}(N)$ operaciones, mientras que DFT toma aproximadamente $N^{2}$ operaciones, así es que la FFT es significativamente más rápida.\\
\\
\large
Nota: el subplot se lee de izquierda a derecha
\tiny
\subsection*{Inciso 1)}
\begin{verbatim}
fft1=fft(A2)/(length(A2)/2);
fft1_plot=fftshift(abs(fft1));
Vfrec=linspace(-Fs/2,Fs/2,length(A2));
subplot(2,4,1)
plot(Vfrec,fft1_plot)
xlim([-10 10])
%
fft2=fft(A1)/(length(A2)/2);
fft2_plot=fftshift(abs(fft2));
Vfrec=linspace(-Fs/2,Fs/2,length(A2));
subplot(2,4,2)
plot(Vfrec,fft2_plot)
xlim([-10 10])
%
fft3=fft(A)/(length(A2)/2);
fft3_plot=fftshift(abs(fft3));
Vfrec=linspace(-Fs/2,Fs/2,length(A2));
subplot(2,4,3)
plot(Vfrec,fft3_plot)
xlim([-10 10])
ylim([0 10])
%
fft4=fft(R)/(length(A2)/2);
fft4_plot=fftshift(abs(fft4));
Vfrec=linspace(-Fs/2,Fs/2,length(A2));
subplot(2,4,4)
plot(Vfrec,fft4_plot)
xlim([-250 250])
%
fft5=fft(AR1)/(length(A2)/2);
fft5_plot=fftshift(abs(fft5));
Vfrec=linspace(-Fs/2,Fs/2,length(A2));
subplot(2,4,5)
plot(Vfrec,fft5_plot)
xlim([-10 10])
ylim([0 10])
%
fft6=fft(AR2)/(length(A2)/2);
fft6_plot=fftshift(abs(fft6));
Vfrec=linspace(-Fs/2,Fs/2,2*length(A2));
subplot(2,4,6)
plot(Vfrec,fft6_plot)
xlim([-15 15])
ylim([0 10])
%
fft7=fft(ECG);
fft7_plot=fftshift(abs(fft7));
Vfrec=linspace(-Fs/2,Fs/2,length(ECG));
subplot(2,4,7)
plot(Vfrec,fft7_plot)
xlim([-250 250])
%
fft8=fft(ECGT);
fft8_plot=fftshift(abs(fft8));
Vfrec=linspace(-Fs/2,Fs/2,length(ECGT));
subplot(2,4,8)
plot(Vfrec,fft8_plot)
xlim([-250 250])
\end{verbatim}
\subsection*{Inciso 2)}
\includegraphics [width=3.5in]{A7_1_01.jpg}
\subsection*{Inciso 3)}
Estas señales son la práctica ideal para comprender un espectro de Fourier. Ya que las primeras 3 son señales periódicas puras, su frecuencia no cambia, por tanto, tienen sólo un pico de frecuencias de cada lado, y como la frecuencia de esas funciones se fijó, se puede apreciar en la gráfica fácilmente. Otra cosa fácil de observar es la amplitud de nuestras señales, lo que no se observa bien, quizá es despreciable en Fourier, son los desplazamientos en el eje del tiempo. A diferencia de la gráfica con ruido, esta tiene frecuencias por doquier, y es imposible extraerle información así a simple vista.\\
\Large Fin de actividad 6.1
\tiny
\section*{Actividad 6.2}
\subsection*{Contents}
\large
Nota: en el subplot, el orden de significación de las imagenes es, de arriba hacia abajo y de izquierda a derecha:
Primera foto: señal original;\\
Segunda foto: espectro de Fourier;\\
Tercera foto: rango de frecuencias seleccionado para conservar;\\
Cuarta foto: señal limpiada.\\
\tiny
\subsection*{Inciso 1)}
\begin{verbatim}
%Obtener la fft de las señales reales registradas en la actividad 6.1.
%EMG
load('Variables.mat')
load('Canal1.mat')
EMG=EMG';
Fs=1000;
Vt=linspace(0,64.060,Fs*64.060);
fftEMG=fft(EMG)/(length(Fs)/2);
fftEMG_plot=fftshift(abs(fftEMG));
Vfrec=linspace(-Fs/2,Fs/2,length(fftEMG_plot));
figure (1)
subplot(3,8,1:8)
plot(Vt,EMG,'m')
ylim([-5 5])
xlim([0 64])
clc
%ECG
ECG=ECG';
Fs2=500;
Vt2=linspace(0,65.440,Fs2*65.440);
fftECG=fft(ECG)/(length(Fs2)/2);
fftECG_plot=fftshift(abs(fftECG));
Vfrec2=linspace(-Fs2/2,Fs2/2,length(fftECG_plot));
figure(2)
subplot(3,8,1:8)
plot(Vt2,ECG,'m')
ylim([-2 1])
xlim([0 65])
clc
%EEG
%Canal 1
VT=linspace(1,73.800,Fs*73.800);
fftEEG1=fft(VarName1)/(1000/2);
fftEEG_plot1=fftshift(abs(fftEEG1));
Vfrec3=linspace(-Fs/2,Fs/2,length(fftEEG_plot1));
figure(3)
subplot(3,8,1:8)
plot(VT,VarName1)
% ylim([0 5000])
xlim([0 73.8])
\end{verbatim}
\includegraphics [width=3in]{A7_2_01.jpg}
\includegraphics [width=3in]{A7_2_02.jpg}
\includegraphics [width=3in]{A7_2_03.jpg}
\subsection*{Inciso 2)}
\begin{verbatim}
%EMG
figure(1)
subplot(3,8,9:12)
plot(Vfrec,fftEMG_plot)
xlabel('Frecuencia')
clc
%ECG
figure(2)
subplot(3,8,9:12)
plot(Vfrec2,fftECG_plot)
xlabel('Frecuencia')
ylim([0 5000])
xlim([-50 50])
clc
%EEG Canal 1
figure(3)
subplot(3,8,9:12)
plot(Vfrec3,fftEEG_plot1)
ylim([0 600])
xlim([-200 200])
clc
\end{verbatim}
\includegraphics [width=3in]{A7_2_04.jpg}
\includegraphics [width=3in]{A7_2_05.jpg}
\includegraphics [width=3in]{A7_2_06.jpg}
\subsection*{Inciso 3)}
Los espectros que se generaron relacionan estrechamente a las amplitudes de las señales con sus frecuencias. El eje que conocemos usualmente como tiempo se vuelve de frecuencias y se pueden apreciar, si el pico es muy grande, que hay muchas muestras con esa frecuencia en nuestra señal.
\subsection*{Inciso 4)}
\begin{par}
Filtro EMG
\end{par} \vspace{1em}
\begin{verbatim}
[val1,pos1]=find(abs(Vfrec)<30);
[val2,pos2]=find(abs(Vfrec)>50);
fftEMG_plot(1,pos1)=0;
fftEMG_plot(1,pos2)=0;
figure(1)
subplot(3,8,13:16)
plot(Vfrec,fftEMG_plot,'g')
xlabel('Frecuencia')
xlim([-100 100])
ifftEMG_plot=ifft(fftEMG_plot);
figure(1)
subplot(3,8,17:24)
plot(Vt,ifftEMG_plot,'r')
ylim([-5 5])
xlim([0 64])
clc
%ECG
[val3,pos3]=find(abs(Vfrec2)<1);
fftECG_plot(1,pos3)=0;
figure(2)
subplot(3,8,13:16)
plot(Vfrec2,fftECG_plot,'g')
xlabel('Frecuencia')
xlim([-50 50])
ifftECG_plot=ifft(fftECG_plot);
figure(2)
subplot(3,8,17:24)
plot(Vt2,ifftECG_plot,'k')
ylim([-1 1])
xlim([0 65])
clc
%EEG Canal 1
[val4,pos4]=find(abs(Vfrec3)<1);
[val5,pos5]=find(abs(Vfrec3)>30);
fftEEG_plot1(1,pos4)=0;
fftEEG_plot1(1,pos5)=0;
figure(3)
subplot(3,8,13:16)
plot(Vfrec3,fftEEG_plot1,'g')
xlabel('Frecuencia')
ylim([0 600])
xlim([-200 200])
ifftEEG_plot1=ifft(fftEEG_plot1);
figure(3)
subplot(3,8,17:24)
plot(VT,ifftEEG_plot1,'k')
ylim([-.1 .1])
xlim([0 73.8])
clc
\end{verbatim}
\color{lightgray} \begin{verbatim}Warning: Imaginary parts of complex X and/or Y arguments ignored
Warning: Imaginary parts of complex X and/or Y arguments ignored
Warning: Imaginary parts of complex X and/or Y arguments ignored
\end{verbatim} \color{black}
\includegraphics [width=3in]{A7_2_07.jpg}
\includegraphics [width=3in]{A7_2_08.jpg}
\includegraphics [width=3in]{A7_2_09.jpg}
\color{black}
\section*{Conclusión}
El filtro que se realizó fue para limpiar nuestra señal y mostrarla luego convertida otra vez al dominio del tiempo. Para esto se necesitan saber algunas cosas previamente: o dónde (qué rango de frecuencias) se encuentra el ruido, o dónde se encuentra nuestra señal. Teniendo alguno de los dos podremos limpiar una señal lo más acertado posible. Una vez conocido algún rango podremos conservarlo (o eliminarlo según sea el caso) y así terminar con una señal que sea rica en información y también interpretable por el ojo humano.
\end{document}