Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "stdlib.h"
- #include "math.h"
- #define _USE_MATH_DEFINES
- float* sygsinus(float f,int t, int czas){
- int x;
- float g=(float)czas/((float)t);
- float y=0;
- float* a=(float*)malloc(sizeof(*a)*t);
- for(x=0;x<t;x++){
- a[x]=sin(y*(3.1415));
- y=(x+1)*g;
- }
- return a;
- free(a);
- }
- float* prostokat(float f, int t, int czas){
- float T=1/f;
- float k=0;
- int x=0;
- float y=0;
- float g=(float)czas/((float)t);
- float* a=(float*)malloc(sizeof(*a)*t);
- for(x=0;x<t;x++){
- if(y>=((T/2)+k*T) && y<=(T+k*T)) a[x]=-1;
- else a[x]=1;
- if(y==(T+k*T))k=k+1;
- y=(x+1)*g;
- }
- return a;
- free(a);
- }
- float* trojkat(float f, int t, int czas){
- float T=(1/f);
- float k=0;
- float q=(4/T);
- int x=0;
- float y=0,j=0;
- float g=(float)czas/((float)t);
- float* a=(float*)malloc(sizeof(*a)*t);
- for(x=0;x<t;x++){
- a[x]=(q*y)-j;
- if(y>=((T/4)+((T*k)/2))){
- k=k+1;
- q=(-1)*q;
- if(j>=0)j=(-1)*(j+2);
- else j=(-1)*(j-2);
- }
- y=(x+1)*g;}
- return a;
- free(a);
- }
- float* pila(float f, int t, int czas){
- float T=(1/f);
- float k=0;
- int x=0;
- float y=0,j=0;
- float g=(float)czas/((float)t);
- float* a=(float*)malloc(sizeof(*a)*t);
- for(x=0;x<t;x++){
- a[x]=(2/T)*y+j;
- if(y>=((T/2)+(k*T))){
- k=k+1;
- j=j-2;
- }
- y=(x+1)*g;}
- return a;
- free(a);}
- float* zaszumienie(int t){
- int x=0;
- srand(time(NULL));
- float* szum=(float*)malloc(sizeof(*szum)*t);
- for(x=0;x<t;x++){
- szum[x]=((rand()%(100))-(50))*(0.001);
- }
- return szum;
- free(szum);
- }
- int main(){
- FILE *pt;
- pt=fopen("C:\\Users\\Lenovo\\Desktop\\sygnaly\\sygnal.csv","w+");
- if(pt==NULL){
- printf("blad");
- getchar();
- return 0;}
- int x,t,czas;
- char typ;
- float f,y=0;
- char s[4];
- printf(" p - pila, s - sinus, t -trojkat, r-prostokat \n");
- printf("Podaj typ sygnalu: ");
- scanf(" %c",&typ);
- printf("Podaj czestotliwosc: ");
- scanf("%f",&f);
- printf("Podaj ilosc probek:");
- scanf("%i",&t);
- printf("Podaj czas trwania sygnalu:");
- scanf("%i",&czas);
- printf("Dodac szum?");
- scanf("%s",&s);
- char buffer[100],bifor[100];
- float g=(float)czas/((float)t);
- float* a=(float*)malloc(sizeof(*a)*t);
- float* i=(float*)malloc(sizeof(*i)*t);
- float* szum=((float*)malloc(sizeof(*szum)*t));
- if(s[0]=='t')szum=zaszumienie(t);
- switch(typ){
- case's':{
- a=sygsinus(f,t,czas);
- break;
- }
- case'r':{
- a=prostokat(f,t,czas);
- break;
- }
- case't':{
- a=trojkat(f,t,czas);
- break;
- }
- case'p':{
- a=pila(f,t,czas);
- break;
- }}
- for(x=0;x<t;x++){
- i[x]=y;
- y=(x+1)*g;
- if(s[0]=='t')a[x]=a[x]+szum[x];
- sprintf(bifor,"%f",i[x]);
- if(bifor[0]=='-')bifor[2]=',';
- else bifor[1]=',';
- sprintf(buffer,"%f",a[x]);
- if(buffer[0]=='-')buffer[2]=',';
- else buffer[1]=',';
- fprintf(pt,"=%s;=%s \n",bifor,buffer);}
- getchar();
- free(a);
- free(i);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement