From 9ac2271639042125b881bf28ac11eef71028493a Mon Sep 17 00:00:00 2001 From: Abbas Harris Date: Wed, 16 Jun 2021 09:40:50 -0400 Subject: [PATCH] updated FFT --- notebooks/abbash_notebook.ipynb | 191 +++++++++----------------------- 1 file changed, 50 insertions(+), 141 deletions(-) diff --git a/notebooks/abbash_notebook.ipynb b/notebooks/abbash_notebook.ipynb index 24c6d3a..cfac949 100644 --- a/notebooks/abbash_notebook.ipynb +++ b/notebooks/abbash_notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 30, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -30,6 +30,16 @@ " 6. Find natural frequencies of vibrating beam using experimental data\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What You'll Need:\n", + "1. NumPy imported as \"import numpy as np\"\n", + "2. Matplotib's PyPlot imported as \"import matplotib.pyplot as plt\"\n", + "3. NumPy functions to create, operate, and load arrays into your workspace \"linspace\", \"sin\", \"loadtxt\", \"mean\", and \"fft\"" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -41,7 +51,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - " A Fast Fourier Transform is a fundamental concept in the world of engineering. It is specifically used in the field of vibrations and measuring frequencies of various devices. FFT is primarily used to compute discrete functions, such as trigonometric functions, time it takes to complete a cycle, etc. Whereas, the FFT utilizes signals of any device/function and converts them from time domains into frequency domains [1] . As a result, you are able to associate frequencies to the devices at certain vibrations at certain times. In turn, the correlated frequencies are considered to be \"natural frequencies\" due to the vibrations being unforced [2]. \n", + " A Fast Fourier Transform is a fundamental concept in the world of engineering. It is used in the field of vibrations and measuring frequencies of various devices. FFT is primarily used to compute discrete functions, such as trigonometric functions, time it takes to complete a cycle, etc. The FFT uses signals of any device/function and converts them from time domains into frequency domains [1] . As a result, you are able to associate frequencies to the devices at certain vibrations at certain times. In turn, the correlated frequencies are the \"natural frequencies\" due to the vibrations being unforced [2]. \n", " " ] }, @@ -56,13 +66,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "For the first example of setting up a Fast Fourier Transform, you will take a look into a sin wave and generate it's natural frequencies at each peak.\n", - " You will define a sin wave in terms of frequency, a certain value of samples over a certain time frame, in this case a 100 Hz wave frequency over a 10 second period:" + "For the first example of setting up a Fast Fourier Transform, you will take a look into a sin wave and generate its natural frequencies at each peak.\n", + " You will define a sin wave in terms of frequency, a certain value of samples over a certain time frame. In this case a 100 Hz wave frequency over a 10 second period:" ] }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -71,22 +81,20 @@ "wave_freq = N_freq * time #this outputs a wave frequency over the given time frame\n", "\n", "#define a sine wave function in terms of the listed variables\n", - "def sine_function(frequency, N_freq, time):\n", - " x = np.linspace(0, time, wave_freq) \n", - " y = np.sin((2 * np.pi * x)) #sine function that utilizes the variables associated with 'x'\n", - " return x,y" + "t = np.linspace(0, time, wave_freq) \n", + "y = np.sin((2 * np.pi * x)) #sine function that utilizes the variables associated with 'x'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Once defining the sine wave function that implements frequency over a certain period of time, you can proceed to graph this data to output a sine wave graph:" + "Once defining the sine wave function (y) that implements frequency over a certain period of time (t), you can proceed to graph this data to output a sine wave graph:" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -103,7 +111,6 @@ } ], "source": [ - "x, y = sine_function(100, N_freq, time) #x and y variables are 'returned' when you define the function\n", "plt.title('Sine Wave Graph')\n", "plt.plot(x, y)\n", "plt.xlabel('Time (seconds)')\n", @@ -116,130 +123,32 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now that you have created a sine wave, you can generate a code to convert this function to output corresponding natural frequencies, in order to get started you will use the Numpy scipy.fft function. With this function you will be able to create a FFT for a provided function, in this case, you will use this to create a transform of the sine function. You can test several different range options to view the 1st, 2nd, 3rd, etc. frequencies from the sine wave graph:" + "Now that you have created a sine wave, you can generate a code to convert this function to output corresponding natural frequencies. \n", + "In order to get started you will use the NumPy scipy.fft function, where you will be able to create a FFT for a provided function. In this case, you will use this to create a Fast Fourier Transform of the sine function. You can test several different range options to view the 1st, 2nd, 3rd, etc. frequencies from the sine wave graph:" ] }, { "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No handles with labels found to put in legend.\n" - ] - }, - { - "data": { - "text/plain": [ - "(0.0, 2.0)" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "N_freq = 100 \n", - "time = 10 \n", - "wave_freq = N_freq * time \n", - "x = np.linspace(0, time, wave_freq)\n", - "y = np.sin((2 * np.pi * x))\n", - "func = np.fft.fft(y) # np.fft.fft(y) is the numpy function used to generate the FFT of a data\n", - "\n", - "for N in [20]: # take a range for a given sample size and focus on generating a FFT for it\n", - " step = (10) / (N+1) #create a step size of 10 seconds over 20 samples (due to 20 being the range)\n", - " t = np.arange(0,10+step, step) # use np.arange function for the time to start at 0 and end at 10 + step\n", - " func= np.sin(2*np.pi*t) # this is the function of the overall graph\n", - " FFT= np.fft.fft(func) # converts the sine wave data into FFT\n", - " freq_step = (N/time) / len(FFT) # freq_step in order to create a step function using samples over time and divide by the number of items in the FFT generated\n", - " freqs = np.arange(0,N/time, freq_step)\n", - " plt.plot(freqs, np.absolute(FFT))\n", - "plt.xlabel('Frequency')\n", - "plt.ylabel('Amplitude')\n", - "plt.title('FFT of sin(2pi t)')\n", - "plt.legend()\n", - "plt.xlim((0,2))" - ] - }, - { - "cell_type": "markdown", + "execution_count": 28, "metadata": {}, + "outputs": [], "source": [ - "As shown above, a natural frequency wave was generated for a range of 20, you can then further explore this function by increasing the range as shown by the following 2 graphs. Where the ranges go from 0 to 3 Hertz and 0 to 4 Hertz:" + "sampling_freq = 100 #samples/s\n", + "time = 10 #s\n", + "number_samples = N_freq * time #number of samples\n", + "t = np.linspace(0, time, number_samples)\n", + "y = np.sin((2 * np.pi * t)) #sin function in terms of t variable\n", + "func = np.fft.fft(y) # np.fft.fft(y) is the numpy function used to generate the FFT of a data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Ex - Range from 0 to 3 Hertz FFT graph of sin(2pi):" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "No handles with labels found to put in legend.\n" - ] - }, - { - "data": { - "text/plain": [ - "(0.0, 3.0)" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "for N in [20, 30]:\n", - " step = (10) / (N+1)\n", - " t = np.arange(0,10+step, step)\n", - " func= np.sin(2*np.pi*t)\n", - " FFT= np.fft.fft(func)\n", - " freq_step = (N/time) / len(FFT)\n", - " freqs = np.arange(0,N/time, freq_step)\n", - " plt.plot(freqs, np.absolute(FFT))\n", - "plt.xlabel('Frequency')\n", - "plt.ylabel('Amplitude')\n", - "plt.title('FFT of sin(2pi t)')\n", - "plt.legend()\n", - "plt.xlim((0,3))" + "By utilizing the above variables and functions, the FFT process is done in the following 3 steps:\n", + "1. \"y_FFT = np.fft.fft(y) : the NumPy fft function calculates the Fast Fourier Transform of the fata sampled number_samples = [20,30,40] over a time period of time = 10 seconds\n", + "2. freq_step = (N/time) / len (FFT) : This takes frequency step of the functon which is the sampling frequency over the length of the FFT function\n", + "3. freqs = np.linspace(0, N/time, len(FFT)): This is then used to create an array of the frequency using the sampling frequency of the data and e" ] }, { @@ -251,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -267,13 +176,13 @@ "(0.0, 4.0)" ] }, - "execution_count": 35, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -286,16 +195,16 @@ ], "source": [ "for N in [20,30,40]:\n", - " step = (10) / (N+1)\n", - " t = np.linspace(0,10,N+1)\n", - " func= np.sin(2*np.pi*t)\n", - " FFT= np.fft.fft(func)\n", + " number_samples = N+1\n", + " t = np.linspace(0,time, number_samples) #time defined from 0 to 10 seconds\n", + " y= np.sin(2*np.pi*t) #function of y(t) defined as 1 - HZ sine wave\n", + " y_FFT= np.fft.fft(y) #converts function to a FFT\n", " freq_step = (N/time) / len(FFT)\n", " freqs = np.linspace(0,N/time, len(FFT))\n", " plt.plot(freqs, np.absolute(FFT))\n", "plt.xlabel('frequency (Hz)')\n", "plt.ylabel('Amplitude')\n", - "plt.title('FFT of sin(2pi t)')\n", + "plt.title(r'FFT of $\\sin(2\\pi t)$')\n", "plt.legend()\n", "plt.xlim((0,4))" ] @@ -304,8 +213,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As the range increased, you are able to obtain more FFT/natural frequencies from the original sine function from above. There is no frequency when collecting 2 hertz, whereas, collecting at 3 hertz you obtain peaks at 1 and 2 hertz and collecting at 4 hertz results in peaks at 3 and 1 hertz.\n", - "This also goes to show that as as more samples are generated, there will be a smaller step size which will result in sharper peaks." + "As the range increases, you are able to obtain more FFT/natural frequencies from the original sine function from above. There is no frequency when collecting 2 hertz, at 3 hertz you obtain peaks at 1 and 2 hertz and at 4 hertz results in peaks at 3 and 1 hertz.\n", + "Also, as more samples are generated, there will be a smaller step size which will result in sharper peaks." ] }, { @@ -347,16 +256,16 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[]" + "[]" ] }, - "execution_count": 36, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, @@ -387,7 +296,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 30, "metadata": {}, "outputs": [ { @@ -396,7 +305,7 @@ "(0.0, 50.0)" ] }, - "execution_count": 37, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, @@ -432,7 +341,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -441,7 +350,7 @@ "20.44373668467149" ] }, - "execution_count": 38, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" }