Primer 10 - Generisanje signala

U vektor signal[] smestiti odbirke signala sa slike. Signal je unipolaran, duzine 100 odbiraka. Prva četvrtina signala je amplitude 500, druga četvrtina je amplitude 250, a ostatak signala je amplitude 125.

Rešenje

#include <math.h>
#include <stdlib.h>

#define DUZINA 100 

int signal[DUZINA];  

/*
 * Funkcija puni bafer sa odredjenim brojem perioda sinusnog signala
 * veoma slicna funkciji sin_sig iz PDSPlib biblioteke
 */
void sin_signal (int s[], int len, int ampl, int offset, float brperioda) {
    int i;
    float x;

    for (i=0; i<len; i++) {
        x = (brperioda * 6.28318 * i) / (float)len;
        s[i] = offset + ampl * sin(x);
    }
}

void dodajDC(int buf[], int duz, int dc) {
    int i;

    for (i=0; i<duz; i++) {
        buf[i] += dc;
    }
}

int main(void) {
    int i;

    // Generisem signal maksimalne amplitude. U nasem slucaju 500
    sin_signal(signal, DUZINA, 500, 0, 10);
    // Smanjim signal, u opsegu od 25 do 50, 2 puta
    for (i=25; i<50; i++)
        signal[i] = signal[i] >> 1;
    // Smanjim signal, u opsegu 50 do DUZINA, 4 puta
    for (i=50; i<DUZINA; i++)
        signal[i] = signal[i] >> 2;
    // Dodaj DC offset
    dodajDC(signal, DUZINA, 500);


    while(1);  // mrtva petlja
}

results matching ""

    No results matching ""