opis: program robi widmo mocy z sygnalu rownoprobkowanego do pliku plik_z_danymi.dat za pomoca transformaty Fouriera.


#include<stdio.h>
#include<math.h>

#define M  10000    /*liczba dyskretnych wartosci okresu*/
#define KP 100       /*poczatkowa wartosc parametru k*/
#define N  2000      /*liczba pomiarow*/
#define PI 3.1415926536  /*liczba pi*/

main()
{
 float t[N],f[N];
 float P0,P,a,b,c,czasObs;
 int i,k;
 FILE *plik1, *plik2, *dane;
 char *nazwa1, *nazwa2, *nazwa;
 
 nazwa="plik_z_danymi.dat";
 nazwa1="plik_z_wynikiem1.dat";
 nazwa2="plik_z_wynikiem2.dat";
 
 dane=fopen(nazwa,"r");
 plik1=fopen(nazwa1,"w");
 plik2=fopen(nazwa2,"w");
 
 for (i=0; i<=N-1; ++i)
 {
  fscanf(dane,"%f%f\n",&t[i],&f[i]);
 }
 fclose(dane);
 
 czasObs=t[0]-t[N-1];
 P0=KP*czasObs;
 
 
 for (k=1; k<=M; ++k)
 {
  P=P0/k;
  a=0;
  b=0;
  
  for (i=0; i<=N-2; ++i)
  {
   a=a+f[i]*sin(k*2*PI*t[i]/P0); 
   b=b+f[i]*cos(k*2*PI*t[i]/P0);
  }
  
  a=2*a/czasObs;
  b=2*b/czasObs;
  
  a=fabs(a);
  b=fabs(b);  
  c=sqrt(a*a+b*b);

  fprintf(plik1,"%10.5f%10.5f%10.5f%10.5f\n",P,a,b,c);
  fprintf(plik2,"%10.5f%10.5f%10.5f%10.5f\n",log10(P),a,b,c);
 }
 
 fclose(plik1);
 fclose(plik2);
 
 return 0;
}


-- AgnieszkaB - 09 Mar 2005


  • kompiluje i uruchamie, ale w wyniki s± nan tzn ,,not a number" tzn błęd matematycznie z punkt widzenie komputera, np podzielić przez zero, lub numer większy niż maksimum numer, itd.... -- BoudRoukema - 16 Mar 2005
Topic attachments
I Attachment Action Size Date Who Comment
dane_widmo.datdat dane_widmo.dat manage 41.0 K 15 Mar 2005 - 16:59 AgnieszkaB przykladowy plik z danymi
Topic revision: r3 - 16 Mar 2005, BoudRoukema
 
This site is powered by FoswikiCopyright © CC-BY-SA by the contributing authors. All material on this collaboration platform is copyrighted under CC-BY-SA by the contributing authors unless otherwise noted.
Ideas, requests, problems regarding Foswiki? Send feedback