The power spectrum of a sine wave (C language)

  • Engineering
  • Thread starter arcTomato
  • Start date
  • #1
82
25

Homework Statement:

Derive the power spectrum of sinusoid

Relevant Equations:

descrete fourier transform
Hi

I would like to Derive the power spectrum of sinusoid.I tried like this. But It doesn't work.

<Moderator: CODE tags added>
C:
#include <stdio.h>
#include <math.h>

#define pi 3.1415926535    
FILE *in_file, *out_file;
int main()
{
    dft();
}
int dft(int argc, char *argv[])
{ 
    char *filename_in = argv[1];
    char *filename_out = argv[2];
    if(argc != 3){
        printf("使い方: ./a.out <入力ファイル名> <出力ファイル名>\n");
        return 0;
    }
    int j, k, N;
    int max = 100000;
    double f[max], re = 0, im = 0;
    if((in_file=fopen(filename_in,"r"))==NULL){
        printf("in_file cannot open\n");
        return 0;
    }

    for(N=0; N<max; N++) {
        if(fscanf(in_file,"%lf", &f[N]) == EOF) break;
    }
    fclose(in_file);

    if((out_file=fopen(filename_out,"w"))==NULL){
        printf("outfile cannot open\n");
        return 0;
    }
    //DFT part
    for(j=(-N/2); j<N/2; j++) {
        for(k=0; k<N; k++) {
            re += f[k]*cos(2*pi*j*k/N);
            im += -f[k]*sin(2*pi*j*k/N);
        }
        fprintf(out_file,"%d, %f\n", j, re*re+im*im);
    }

    fclose(out_file);
    return 0;
}


When sinusoid frequancy is 7 and the sampling time series ##T=0.01s##, this is the power spectrum.

1573374414734.png



The paper I read says that "Only when the frequency of the sinusoid is equal to one of the Fourier frequencies will all power be concentrated in one bin of the discrete Fourier transform.", so I think the power spectrum should be delta function.

How can I derive the power spectrum as delta function?????
Thank you.
 
Last edited by a moderator:

Answers and Replies

  • #2
BvU
Science Advisor
Homework Helper
2019 Award
13,537
3,264
Apparently your sums add up to non zero values for other frequencies. Under which circumstances can that happen ?
(hint: look at your homework equations :smile: )
 
  • #3
82
25
Thanks @BvU!
I think "the frequency of the sinusoid is equal to one of the Fourier frequencies" is the circumstances.
But I don't understand why,,,,
 
  • #4
1,632
886
I began to read your code, and desisted when I encountered the following character string that I perceived to be inclusive of non-Roman characters: printf("使い方: ./a.out <入力ファイル名> <出力ファイル名>\n");
 
  • #5
82
25
thanks @sysprog!

What is wrong with that?That part is usage.
 
  • Informative
Likes BvU
  • #6
BvU
Science Advisor
Homework Helper
2019 Award
13,537
3,264
Thanks @BvU!
I think "the frequency of the sinusoid is equal to one of the Fourier frequencies" is the circumstances.
But I don't understand why,,,,
As an example: Suppose your signal is ##\sin x##, under what circumstances can e.g. $$\int_a^b \sin x \sin 2x\ dx $$come out non-zero. Or, turned around: what are the conditions for $$\int_a^b \sin x \sin 2x\ dx \ = 0 $$
 
  • #7
82
25
Thanks for your kindness , @BvU!
The integration interval is ##2π##???
So What should I change to derive the power spectrum as delta function?
Data number??or Sampling time series??
 
  • #8
BvU
Science Advisor
Homework Helper
2019 Award
13,537
3,264
Did you guess the answer to my question ?
Read up on spectral leakage, windowing and such.

For your signal you want to make sure you integrate (sum) over an integer multiple of cycles (both from the signal and the sampling wave 2*π*j*k/N).

(With that I answered my own question :woot: )
 
  • #9
82
25
Thank you @BvU!

I think I got it:>
I will try it!!
 
  • Like
Likes berkeman

Related Threads on The power spectrum of a sine wave (C language)

Replies
3
Views
8K
Replies
2
Views
371
Replies
0
Views
7K
  • Last Post
Replies
4
Views
17K
Replies
3
Views
22K
  • Last Post
Replies
2
Views
12K
  • Last Post
Replies
13
Views
21K
  • Last Post
Replies
8
Views
1K
  • Last Post
Replies
2
Views
1K
  • Last Post
Replies
1
Views
6K
Top