Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Lukasz Swierczek 213431
- //Zalaczmy blioteki
- #define _CRT_SECURE_NO_WARNINGS
- #define _USE_MATH_DEFINES
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <time.h>
- //Prototypy funkcji:
- void sortowanie(); //ktora sortuje wartosci wpisane do tabp z s.taby
- void zamien(); //zamienia wartosci dwoch zmiennych
- void wykres(); //generuje kod html z wykresem
- void wybor(); //ktora zadaje pytanie jaki wykres chcemy zobaczyc
- void akcje(); //generujacej
- void wybor2(); //
- void akcje2(); //
- void zaszumianie(); //
- void odszumianie(); //
- void wykres_S7(); //
- void wykres_S12(); //
- double szum(); //
- struct sygnal //Delkaracja zmienntych struktury
- {
- int lp;
- int fp;
- int probki;
- int czy_byl_szum;
- double amp;
- double fs;
- double ts;
- double *tabx;
- double *taby;
- };
- int main()
- {
- struct sygnal s;
- char rs, co;
- int i;
- int powtorzenie=0;
- s.amp=0;
- s.fs=0;
- s.fp=0;
- s.ts=0;
- s.czy_byl_szum=0;
- s.probki=0;
- printf("Jakiego rodzaju chcesz wybrac sygnal, lub co chcesz zrobić:\n");
- printf("a)Sygnal liniowy S7\n");
- printf("b)Sygnal cosinusoidalny S12\n");
- printf("c)Wylaczyc program\n");
- scanf(" %c",&rs);
- switch(rs)
- {
- case 'a':
- printf("Wybrales sygnal o przebiegu S7. \n");
- break;
- case 'b':
- printf("Wybrales sygnal o przebiegu S12. \n");
- break;
- case 'c':
- free;
- return 0;
- default :
- system("cls");
- printf("Wybrales niewlasciwa litere! \n\n");
- main();
- return 0;
- }
- printf("Podaj wartosc ampiltudy dla tego sygnalu.\n");
- scanf("%lg",&s.amp);
- printf("Podaj wartosc czestotliwosci sygnalu.\n");
- scanf("%lg",&s.fs);
- printf("Podaj wartosc czasu trwania sygnalu.\n");
- scanf("%lg",&s.ts);
- printf("Podaj wartosc czestosci probkowania.\n");
- scanf("%d",&s.fp);
- printf("\nA=%lg \nfs=%lg \nts=%lg \nfp=%d\n\n", s.amp, s.fs, s.ts, s.fp);
- s.lp = (int)s.ts*s.fp+1;
- s.tabx = (double*)malloc(s.lp*sizeof(double));
- s.taby = (double*)malloc(s.lp*sizeof(double));
- switch(rs)
- {
- case 'a':
- wykres_S7(s.amp, s.fs, s.ts, s.fp, s.lp, s.tabx, s.taby);
- wybor(s.czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, s.tabx, s.taby, s.lp, s.czy_byl_szum);
- break;
- case 'b':
- wykres_S12(s.amp, s.fs, s.fp, s.lp, s.tabx, s.taby);
- wybor(s.czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, s.tabx, s.taby, s.lp, s.czy_byl_szum);
- break;
- }
- }
- void wykres_S7(double amp, double fs, double ts, int fp, int lp, double *tabx, double *taby)
- {
- int i,powt;
- for(i=0;i<lp;i++)
- {
- tabx[i]=(double)i/fp;
- powt = tabx[i]/(1/fs);
- if(tabx[i] >= (0 + (powt*(1/fs))) && tabx[i]<((1/(4*fs))+(powt*(1/fs))))
- taby[i]=(tabx[i]-(powt*(1/fs)))*(amp*fs*4);
- if(tabx[i] >= ((1/(4*fs))+(powt*(1/fs))) && tabx[i]<=((1/(2*fs))+(powt*(1/fs))))
- taby[i]=((-1)*(tabx[i]-(powt*(1/fs)))*(amp*fs*4))+(2*amp);
- if(tabx[i] > ((1/(2*fs))+(powt*(1/fs))) && tabx[i]<=((1/fs)+(powt*(1/fs))))
- taby[i]=(-1)*amp;
- printf("f(%lg)=%lg\n",tabx[i],taby[i]);
- }
- }
- void wykres_S12(double amp, double fs, int fp, int lp, double *tabx, double *taby)
- {
- int i,powt;
- for(i=0;i<lp;i++)
- {
- tabx[i]=(double)i/fp;
- taby[i]=amp*cos(tabx[i]*(2*M_PI*fs));
- printf("f(%lg)=%lg\n",tabx[i],taby[i]);
- }
- }
- double szum()
- {
- double z=0;
- int i;
- for(i=0;i<12;i++)
- z+=rand() % 101;
- z=z/1200;
- return z;
- }
- void zaszumianie(int lp, double *taby)
- {
- int i;
- for(i=0;i<lp;i++)
- taby[i]=taby[i]+szum();
- }
- void wybor(int czy_byl_szum)
- {
- printf("\n");
- printf("Jaki wykres chcesz zobaczyc:\n");
- printf("czy_byl_szum = %d\n",czy_byl_szum);
- if(czy_byl_szum==0)
- printf("a)Nie zaszumiony\n");
- printf("b)Zaszumiony\n");
- printf("c)Odszumiony\n");
- printf("\n");
- printf("d)Zakoncz program\n");
- }
- void akcje(int co, double *tabx, double *taby, int lp, int czy_byl_szum)
- {
- int i;
- switch(co)
- {
- case 'a':
- printf("czy_byl_szum = %d\n",czy_byl_szum);
- if(czy_byl_szum==0)
- {
- wykres(lp, tabx, taby, "nie_zaszumiony.html");
- wybor(czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, tabx, taby, lp, czy_byl_szum);
- }
- else
- {
- printf("Wybrales niewlasciwa litere! \n\n");
- wybor(czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, tabx, taby, lp, czy_byl_szum);
- }
- return 0;
- case 'b':
- zaszumianie(lp, taby);
- czy_byl_szum=1;
- wykres(lp, tabx, taby, "zaszumiony.html");
- wybor(czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, tabx, taby, lp, czy_byl_szum);
- return 0;
- case 'c':
- do
- {
- printf("Podaj z ilu probek ma zostac przeprowadzone odszumiane.\n");
- scanf("%d",&i);
- if(lp<=i)
- // system("cls");
- printf("Niewlasciwa liczba probek!\n");
- }
- while(lp<=i);
- if(czy_byl_szum==0)
- zaszumianie(lp, taby);
- odszumianie(tabx, taby, i, lp);
- wybor(czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, tabx, taby, lp, czy_byl_szum);
- return 0;
- case 'd':
- free;
- return 0;
- default :
- // system("cls");
- printf("Wybrales niewlasciwa litere! \n\n");
- wybor(czy_byl_szum);
- scanf(" %c",&co);
- akcje(co, tabx, taby, lp, czy_byl_szum);
- return 0;
- }
- }
- /*
- void wybor2()
- {
- printf("Jaki wykres chcesz zobaczyc:\n");
- printf("a)Zaszumiony\n");
- printf("b)Odszumiony\n");
- printf("\n");
- printf("c)Zakoncz program\n");
- }
- void akcje2(int co, double *tabx, double *taby, int lp)
- {
- int i;
- switch(co)
- {
- case 'a':
- // zaszumianie(lp, taby);
- wykres(lp, tabx, taby, "zaszumiony.html");
- wybor2();
- scanf(" %c",&co);
- akcje2(co, tabx, taby, lp);
- return 0;
- case 'b':
- do
- {
- printf("Podaj z ilu probek ma zostac przeprowadzone odszumiane.\n");
- scanf("%d",&i);
- if(lp<=i)
- // system("cls");
- printf("Niewlasciwa liczba probek!\n");
- }
- while(lp<=i);
- odszumianie(tabx, taby, i, lp);
- wybor2();
- scanf(" %c",&co);
- akcje2(co, tabx, taby, lp);
- return 0;
- case 'c':
- break;
- return 0;
- default :
- // system("cls");
- printf("Wybrales niewlasciwa litere! \n\n");
- wybor2();
- scanf(" %c",&co);
- akcje2(co, tabx, taby, lp);
- return 0;
- }
- }
- */
- void odszumianie(double *tabx, double *taby, int probki, int lp)
- {
- int i, j;
- int z=0;
- double *tabp;
- double *tabm;
- z = lp - probki + 1;
- tabp = (double*)malloc(probki*sizeof(double));
- tabm = (double*)malloc(z*sizeof(double));
- for(i=0;i<z;i++)
- {
- for(j=0;j<probki;j++)
- tabp[j]=taby[j+i];
- sortowanie(tabp, probki);
- tabm[i] = (tabp[(int)((probki-1)/2)] + tabp[probki - (int)((probki+1)/2)])/2;
- }
- wykres(z, tabx, tabm, "odszumiony.html");
- }
- void sortowanie(double tab[], int k)
- {
- int i, j;
- for (i = 0; i<k; i++)
- for (j=0; j<k-1; j++)
- if (tab[j] > tab[j+1])
- zamien(&tab[j], &tab[j+1]);
- }
- void zamien(double *a, double *b)
- {
- double temp;
- temp = *b;
- *b = *a;
- *a = temp;
- }
- void wykres(int l, double *tabx, double *taby, char nazwa[])
- {
- FILE *fp;
- int i;
- printf("Rysuj %s\n",nazwa);
- fp = fopen(nazwa,"w");
- fprintf(fp,"<html>\n");
- fprintf(fp,"<head>\n");
- fprintf(fp,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
- fprintf(fp,"<script type=\"text/javascript\">\n");
- fprintf(fp,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
- fprintf(fp,"google.setOnLoadCallback(drawChart);\n");
- fprintf(fp,"function drawChart() {\n");
- fprintf(fp,"var data = google.visualization.arrayToDataTable([\n");
- fprintf(fp,"['i', 'Wartosc'],\n");
- for(i=0;i<l;i++)
- {
- fprintf(fp,"[%lg, %lg],\n",tabx[i],taby[i]); //przekazanie danych na wykres
- }
- fprintf(fp,"[%lg, %lg]\n",tabx[i-1],taby[i-1]);
- fprintf(fp,"]);\n");
- fprintf(fp,"var options = {\n");
- fprintf(fp,"title: 'Wybrany sygnal'\n");
- fprintf(fp,"};\n");
- fprintf(fp,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
- fprintf(fp,"chart.draw(data, options);\n");
- fprintf(fp,"}\n");
- fprintf(fp,"</script>\n");
- fprintf(fp,"</head>\n");
- fprintf(fp,"<body>\n");
- fprintf(fp,"<div id=\"chart_div\" style=\"width: 900px; height: 500px;\"></div>\n");
- fprintf(fp,"</body>\n");
- fprintf(fp,"</html>\n");
- fclose(fp);
- system(nazwa); //uruchomienie pliku html
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement