Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <math.h>
- #define LEN 500 // duzina vektora
- #define SR 2000 // sample rate - frekvencija odabiranja
- #define F1 11 // frekvencija prvog signala
- #define F2 876 // frekvencija drugog signala
- #define AMPL 1023 // amplituda signala
- #define _2PI 6.28
- int vektor[LEN]; // tip int zbog zahteva da bude bipolarni ADC
- void generisi_signal() {
- int i;
- for (i=0; i<LEN; i++) { // punim niz od pocetka do kraja
- vektor[i] = AMPL * sin(_2PI*i*(float)F1/(float)SR);
- vektor[i] += AMPL * sin(_2PI*i*(float)F2/(float)SR);
- }
- }
- int min(int v[]) { // trazi minimum signala
- int i;
- int min = v[0];
- for (i=1; i<LEN; i++) { // punim niz od pocetka do kraja
- if (min>v[i]) min=v[i];
- }
- return min;
- }
- int max(int v[]) {
- int i;
- int max = v[0];
- for (i=1; i<LEN; i++) { // punim niz od pocetka do kraja
- if (max<v[i]) max=v[i];
- }
- return max;
- }
- int srvr(int v[]) {
- // xsr = (x1+x2+x3+...+xn)/n
- int i;
- long sum=0;
- for (i=0; i<LEN; i++) { // punim niz od pocetka do kraja
- sum+=v[i];
- }
- return (int)((float)sum/(float)(LEN));
- }
- float rms(int v[]) {
- // xrms = sqrt ((x1^2+x2^2+x3^2+...+xn^2)/n)
- // RMS kod sinusnog signala je max/sqrt(2)
- int i;
- long sum=0;
- for (i=0; i<LEN; i++) { // punim niz od pocetka do kraja
- sum += pow(v[i],2);
- }
- return sqrt(sum/(float)LEN);
- }
- void _ma (int v[], int taps) {
- int i, j;
- long sum;
- for (i=taps; i<LEN; i++) {
- sum = 0;
- for (j=i-taps; j<i; j++) {
- sum += v[j];
- }
- v[i-taps]=(int)(sum/(float)taps);
- }
- }
- int main(void) {
- int mn, mx, sr, rm;
- generisi_signal();
- mn = min(vektor);
- mx = max(vektor);
- sr = srvr(vektor);
- rm = rms(vektor);
- _ma(vektor, 25);
- while (1);
- }
Add Comment
Please, Sign In to add comment