How do I get the frequencies from a signal? The Next CEO of Stack OverflowHow to merge two dictionaries in a single expression?How do I check if a list is empty?How do I check whether a file exists without exceptions?How can I safely create a nested directory in Python?How to get the current time in PythonHow do I sort a dictionary by value?How to make a chain of function decorators?How to make a flat list out of list of lists?How do I get the number of elements in a list in Python?How do I list all files of a directory?

What is the value of α and β in a triangle?

Is it professional to write unrelated content in an almost-empty email?

How to count occurrences of text in a file?

Should I cite using beginthebibliography or beginfilecontents*

Solving system of ODEs with extra parameter

How to invert MapIndexed on a ragged structure? How to construct a tree from rules?

Would a grinding machine be a simple and workable propulsion system for an interplanetary spacecraft?

Why this way of making earth uninhabitable in Interstellar?

Why does the flight controls check come before arming the autobrake on the A320?

Why isn't the Mueller report being released completely and unredacted?

Math-accent symbol over parentheses enclosing accented symbol (amsmath)

What was the first Unix version to run on a microcomputer?

How to get from Geneva Airport to Metabief?

Does increasing your ability score affect your main stat?

Can a Bladesinger Wizard use Bladesong with a Hand Crossbow?

What connection does MS Office have to Netscape Navigator?

When you upcast Blindness/Deafness, do all targets suffer the same effect?

Why the difference in type-inference over the as-pattern in two similar function definitions?

Won the lottery - how do I keep the money?

Is it okay to majorly distort historical facts while writing a fiction story?

Is it ever safe to open a suspicious HTML file (e.g. email attachment)?

Powershell. How to parse gci Name?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Which one is the true statement?



How do I get the frequencies from a signal?



The Next CEO of Stack OverflowHow to merge two dictionaries in a single expression?How do I check if a list is empty?How do I check whether a file exists without exceptions?How can I safely create a nested directory in Python?How to get the current time in PythonHow do I sort a dictionary by value?How to make a chain of function decorators?How to make a flat list out of list of lists?How do I get the number of elements in a list in Python?How do I list all files of a directory?










1















I am look for a way to receive the frequency from a Signal.

Lets create an example together



signal = [numpy.sin(numpy.pi * x / 2) for x in range(1000)]


This Array will represent the sample of a recorded sound. (x = miliseconds)
sin(pi*x/2) => 250 Hrz



Now image we have no idea what the function looks like. We just got the signal (list of points. How can we receive the frequency form this array ?



Important:

I have read many Stackoverflow threads and watch many youtube videos. I am yet to find an answer. Please use simple words.
(I am Thankfull for every answer)










share|improve this question



















  • 4





    Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

    – kindall
    Mar 21 at 15:12












  • to be honest the only thing i dont get is the np.fft.fftfreq function.

    – Felix Hohnstein
    Mar 21 at 15:34












  • If that is what you don't understand, then ask about that, not about the kitchen sink.

    – Cris Luengo
    Mar 21 at 17:25
















1















I am look for a way to receive the frequency from a Signal.

Lets create an example together



signal = [numpy.sin(numpy.pi * x / 2) for x in range(1000)]


This Array will represent the sample of a recorded sound. (x = miliseconds)
sin(pi*x/2) => 250 Hrz



Now image we have no idea what the function looks like. We just got the signal (list of points. How can we receive the frequency form this array ?



Important:

I have read many Stackoverflow threads and watch many youtube videos. I am yet to find an answer. Please use simple words.
(I am Thankfull for every answer)










share|improve this question



















  • 4





    Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

    – kindall
    Mar 21 at 15:12












  • to be honest the only thing i dont get is the np.fft.fftfreq function.

    – Felix Hohnstein
    Mar 21 at 15:34












  • If that is what you don't understand, then ask about that, not about the kitchen sink.

    – Cris Luengo
    Mar 21 at 17:25














1












1








1








I am look for a way to receive the frequency from a Signal.

Lets create an example together



signal = [numpy.sin(numpy.pi * x / 2) for x in range(1000)]


This Array will represent the sample of a recorded sound. (x = miliseconds)
sin(pi*x/2) => 250 Hrz



Now image we have no idea what the function looks like. We just got the signal (list of points. How can we receive the frequency form this array ?



Important:

I have read many Stackoverflow threads and watch many youtube videos. I am yet to find an answer. Please use simple words.
(I am Thankfull for every answer)










share|improve this question
















I am look for a way to receive the frequency from a Signal.

Lets create an example together



signal = [numpy.sin(numpy.pi * x / 2) for x in range(1000)]


This Array will represent the sample of a recorded sound. (x = miliseconds)
sin(pi*x/2) => 250 Hrz



Now image we have no idea what the function looks like. We just got the signal (list of points. How can we receive the frequency form this array ?



Important:

I have read many Stackoverflow threads and watch many youtube videos. I am yet to find an answer. Please use simple words.
(I am Thankfull for every answer)







python signals fft frequency






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 21 at 18:06









yatu

15.6k41542




15.6k41542










asked Mar 21 at 15:10









Felix HohnsteinFelix Hohnstein

254




254







  • 4





    Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

    – kindall
    Mar 21 at 15:12












  • to be honest the only thing i dont get is the np.fft.fftfreq function.

    – Felix Hohnstein
    Mar 21 at 15:34












  • If that is what you don't understand, then ask about that, not about the kitchen sink.

    – Cris Luengo
    Mar 21 at 17:25













  • 4





    Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

    – kindall
    Mar 21 at 15:12












  • to be honest the only thing i dont get is the np.fft.fftfreq function.

    – Felix Hohnstein
    Mar 21 at 15:34












  • If that is what you don't understand, then ask about that, not about the kitchen sink.

    – Cris Luengo
    Mar 21 at 17:25








4




4





Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

– kindall
Mar 21 at 15:12






Is your question "I want to do a Fourier transform but I don't know it's called a Fourier transform"? If so, NumPy has that.

– kindall
Mar 21 at 15:12














to be honest the only thing i dont get is the np.fft.fftfreq function.

– Felix Hohnstein
Mar 21 at 15:34






to be honest the only thing i dont get is the np.fft.fftfreq function.

– Felix Hohnstein
Mar 21 at 15:34














If that is what you don't understand, then ask about that, not about the kitchen sink.

– Cris Luengo
Mar 21 at 17:25






If that is what you don't understand, then ask about that, not about the kitchen sink.

– Cris Luengo
Mar 21 at 17:25













1 Answer
1






active

oldest

votes


















0














It seems that what you want is the Fourier Transform of the signal, from wiki:




The Fourier transform (FT) decomposes a function of time (a signal) into the frequencies that make it up




This is in essence a mathematical operation that when applied over a signal, gives you an idea of how present each frequency is in the time series. In order to get some intuition behind this, it might be helpful to look at the mathematical definition of the DFT:



enter image description here



Where k here is swept all the way up t N-1 to calculate all the DFT coefficients.



The first thing to notice is that, this definition resembles somewhat that of the correlation of two functions, in this case x(n) and the negative exponential function. While this may seem a little bit abstract, by using Euler's formula and by playing a bit around with the definition, the DFT can be expressed as the correlation with both a sine wave and a cosine wave, which will account for the imaginary and the real parts of the DFT.



So keeping in ming that this is in essence computing a correlation, whenever a corresponding sine or cosine from the decomposition of the complex exponential matches with that of x(n), there will be a peak in X(K), meaning that, such frequency is present in the signal.




So having given a very brief theoretical background, let's consider an example to see how this can be implemented in python. Lets consider the following signal:



Fs = 150.0; # sampling rate
Ts = 1.0/Fs; # sampling interval
t = np.arange(0,1,Ts) # time vector

ff = 50; # frequency of the signal
y = np.sin(2*np.pi*ff*t)


Now, the DFT can be computed by using np.fft.fft, which as mentioned, will be telling you which is the contribution of each frequency in the signal now in the transformed domain:



n = len(y) # length of the signal
k = np.arange(n)
T = n/Fs
frq = k/T # two sides frequency range
frq = frq[:len(frq)//2] # one side frequency range

Y = np.fft.fft(y)/n # dft and normalization
Y = Y[:n//2]


Now, if we plot the actual spectrum, you will see that we get a peak at the frequency of 50Hz, which in mathematical terms it will be a delta function centred in the fundamental frequency of 50Hz. This can be checked in the following Table of Fourier Transform Pairs.



So for the used signal, we would get:



plt.plot(frq,abs(Y)) # plotting the spectrum
plt.xlabel('Freq (Hz)')
plt.ylabel('|Y(freq)|')


enter image description here






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283610%2fhow-do-i-get-the-frequencies-from-a-signal%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    It seems that what you want is the Fourier Transform of the signal, from wiki:




    The Fourier transform (FT) decomposes a function of time (a signal) into the frequencies that make it up




    This is in essence a mathematical operation that when applied over a signal, gives you an idea of how present each frequency is in the time series. In order to get some intuition behind this, it might be helpful to look at the mathematical definition of the DFT:



    enter image description here



    Where k here is swept all the way up t N-1 to calculate all the DFT coefficients.



    The first thing to notice is that, this definition resembles somewhat that of the correlation of two functions, in this case x(n) and the negative exponential function. While this may seem a little bit abstract, by using Euler's formula and by playing a bit around with the definition, the DFT can be expressed as the correlation with both a sine wave and a cosine wave, which will account for the imaginary and the real parts of the DFT.



    So keeping in ming that this is in essence computing a correlation, whenever a corresponding sine or cosine from the decomposition of the complex exponential matches with that of x(n), there will be a peak in X(K), meaning that, such frequency is present in the signal.




    So having given a very brief theoretical background, let's consider an example to see how this can be implemented in python. Lets consider the following signal:



    Fs = 150.0; # sampling rate
    Ts = 1.0/Fs; # sampling interval
    t = np.arange(0,1,Ts) # time vector

    ff = 50; # frequency of the signal
    y = np.sin(2*np.pi*ff*t)


    Now, the DFT can be computed by using np.fft.fft, which as mentioned, will be telling you which is the contribution of each frequency in the signal now in the transformed domain:



    n = len(y) # length of the signal
    k = np.arange(n)
    T = n/Fs
    frq = k/T # two sides frequency range
    frq = frq[:len(frq)//2] # one side frequency range

    Y = np.fft.fft(y)/n # dft and normalization
    Y = Y[:n//2]


    Now, if we plot the actual spectrum, you will see that we get a peak at the frequency of 50Hz, which in mathematical terms it will be a delta function centred in the fundamental frequency of 50Hz. This can be checked in the following Table of Fourier Transform Pairs.



    So for the used signal, we would get:



    plt.plot(frq,abs(Y)) # plotting the spectrum
    plt.xlabel('Freq (Hz)')
    plt.ylabel('|Y(freq)|')


    enter image description here






    share|improve this answer



























      0














      It seems that what you want is the Fourier Transform of the signal, from wiki:




      The Fourier transform (FT) decomposes a function of time (a signal) into the frequencies that make it up




      This is in essence a mathematical operation that when applied over a signal, gives you an idea of how present each frequency is in the time series. In order to get some intuition behind this, it might be helpful to look at the mathematical definition of the DFT:



      enter image description here



      Where k here is swept all the way up t N-1 to calculate all the DFT coefficients.



      The first thing to notice is that, this definition resembles somewhat that of the correlation of two functions, in this case x(n) and the negative exponential function. While this may seem a little bit abstract, by using Euler's formula and by playing a bit around with the definition, the DFT can be expressed as the correlation with both a sine wave and a cosine wave, which will account for the imaginary and the real parts of the DFT.



      So keeping in ming that this is in essence computing a correlation, whenever a corresponding sine or cosine from the decomposition of the complex exponential matches with that of x(n), there will be a peak in X(K), meaning that, such frequency is present in the signal.




      So having given a very brief theoretical background, let's consider an example to see how this can be implemented in python. Lets consider the following signal:



      Fs = 150.0; # sampling rate
      Ts = 1.0/Fs; # sampling interval
      t = np.arange(0,1,Ts) # time vector

      ff = 50; # frequency of the signal
      y = np.sin(2*np.pi*ff*t)


      Now, the DFT can be computed by using np.fft.fft, which as mentioned, will be telling you which is the contribution of each frequency in the signal now in the transformed domain:



      n = len(y) # length of the signal
      k = np.arange(n)
      T = n/Fs
      frq = k/T # two sides frequency range
      frq = frq[:len(frq)//2] # one side frequency range

      Y = np.fft.fft(y)/n # dft and normalization
      Y = Y[:n//2]


      Now, if we plot the actual spectrum, you will see that we get a peak at the frequency of 50Hz, which in mathematical terms it will be a delta function centred in the fundamental frequency of 50Hz. This can be checked in the following Table of Fourier Transform Pairs.



      So for the used signal, we would get:



      plt.plot(frq,abs(Y)) # plotting the spectrum
      plt.xlabel('Freq (Hz)')
      plt.ylabel('|Y(freq)|')


      enter image description here






      share|improve this answer

























        0












        0








        0







        It seems that what you want is the Fourier Transform of the signal, from wiki:




        The Fourier transform (FT) decomposes a function of time (a signal) into the frequencies that make it up




        This is in essence a mathematical operation that when applied over a signal, gives you an idea of how present each frequency is in the time series. In order to get some intuition behind this, it might be helpful to look at the mathematical definition of the DFT:



        enter image description here



        Where k here is swept all the way up t N-1 to calculate all the DFT coefficients.



        The first thing to notice is that, this definition resembles somewhat that of the correlation of two functions, in this case x(n) and the negative exponential function. While this may seem a little bit abstract, by using Euler's formula and by playing a bit around with the definition, the DFT can be expressed as the correlation with both a sine wave and a cosine wave, which will account for the imaginary and the real parts of the DFT.



        So keeping in ming that this is in essence computing a correlation, whenever a corresponding sine or cosine from the decomposition of the complex exponential matches with that of x(n), there will be a peak in X(K), meaning that, such frequency is present in the signal.




        So having given a very brief theoretical background, let's consider an example to see how this can be implemented in python. Lets consider the following signal:



        Fs = 150.0; # sampling rate
        Ts = 1.0/Fs; # sampling interval
        t = np.arange(0,1,Ts) # time vector

        ff = 50; # frequency of the signal
        y = np.sin(2*np.pi*ff*t)


        Now, the DFT can be computed by using np.fft.fft, which as mentioned, will be telling you which is the contribution of each frequency in the signal now in the transformed domain:



        n = len(y) # length of the signal
        k = np.arange(n)
        T = n/Fs
        frq = k/T # two sides frequency range
        frq = frq[:len(frq)//2] # one side frequency range

        Y = np.fft.fft(y)/n # dft and normalization
        Y = Y[:n//2]


        Now, if we plot the actual spectrum, you will see that we get a peak at the frequency of 50Hz, which in mathematical terms it will be a delta function centred in the fundamental frequency of 50Hz. This can be checked in the following Table of Fourier Transform Pairs.



        So for the used signal, we would get:



        plt.plot(frq,abs(Y)) # plotting the spectrum
        plt.xlabel('Freq (Hz)')
        plt.ylabel('|Y(freq)|')


        enter image description here






        share|improve this answer













        It seems that what you want is the Fourier Transform of the signal, from wiki:




        The Fourier transform (FT) decomposes a function of time (a signal) into the frequencies that make it up




        This is in essence a mathematical operation that when applied over a signal, gives you an idea of how present each frequency is in the time series. In order to get some intuition behind this, it might be helpful to look at the mathematical definition of the DFT:



        enter image description here



        Where k here is swept all the way up t N-1 to calculate all the DFT coefficients.



        The first thing to notice is that, this definition resembles somewhat that of the correlation of two functions, in this case x(n) and the negative exponential function. While this may seem a little bit abstract, by using Euler's formula and by playing a bit around with the definition, the DFT can be expressed as the correlation with both a sine wave and a cosine wave, which will account for the imaginary and the real parts of the DFT.



        So keeping in ming that this is in essence computing a correlation, whenever a corresponding sine or cosine from the decomposition of the complex exponential matches with that of x(n), there will be a peak in X(K), meaning that, such frequency is present in the signal.




        So having given a very brief theoretical background, let's consider an example to see how this can be implemented in python. Lets consider the following signal:



        Fs = 150.0; # sampling rate
        Ts = 1.0/Fs; # sampling interval
        t = np.arange(0,1,Ts) # time vector

        ff = 50; # frequency of the signal
        y = np.sin(2*np.pi*ff*t)


        Now, the DFT can be computed by using np.fft.fft, which as mentioned, will be telling you which is the contribution of each frequency in the signal now in the transformed domain:



        n = len(y) # length of the signal
        k = np.arange(n)
        T = n/Fs
        frq = k/T # two sides frequency range
        frq = frq[:len(frq)//2] # one side frequency range

        Y = np.fft.fft(y)/n # dft and normalization
        Y = Y[:n//2]


        Now, if we plot the actual spectrum, you will see that we get a peak at the frequency of 50Hz, which in mathematical terms it will be a delta function centred in the fundamental frequency of 50Hz. This can be checked in the following Table of Fourier Transform Pairs.



        So for the used signal, we would get:



        plt.plot(frq,abs(Y)) # plotting the spectrum
        plt.xlabel('Freq (Hz)')
        plt.ylabel('|Y(freq)|')


        enter image description here







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Mar 21 at 17:21









        yatuyatu

        15.6k41542




        15.6k41542





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283610%2fhow-do-i-get-the-frequencies-from-a-signal%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

            Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

            Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript