#include #include #include int main(int par,char *pole[]){ int i; double delka,kmitocet,deltaT,t,vysvyp,y,yzp,ydvazp,x,a,b,U; if(par!=4){ //kontrola poctu parametru printf("byl zadan spatny pocet parametru\n"); return 1; } U=atof(pole[1]); kmitocet=atof(pole[2]); delka=atof(pole[3]); if( kmitocet<=0 || delka<=0 ){ //kontroluju aby cas a kmitocet nebyly 0 a zaporne printf("byl zadan kmitocet nebo cas roven nebo mensi nez 0\n"); return 1; } if( U==0 ){ //kontroluju aby amplituda nebyla nula printf("byla zadana nulova amplituda\n"); return 1; } //printf("%d ; %lf ; %lf\n",U,kmitocet,delka); delka=(delka/1000); //z ms na s //printf("%lf\n",delka); deltaT=0.000125; //vzorkovaci perioda a=2*cos(2*M_PI*(kmitocet/8000)); //2*cos(theta) b=sin(2*M_PI*(kmitocet/8000)); //sin(theta) for(t=0;t<=delka;t=t+deltaT){ vysvyp=U*sin(2*M_PI*kmitocet*t); //pocitam normalne pres sinus if(t!=0.000125)x=0; else x=U; y=x*b+yzp*a-ydvazp; //DSP algoritmus ydvazp=yzp; //zpozdim zpozdeny yzp=y; //zpozdim momentalni printf("%lf %lf %lf\n",t,vysvyp,y); } }