Primer 1 - Generisanje signala

Generisati lookup tabelu za sinusni signal frekvencije 70Hz. Dužina tabele je 500 odbiraka, a učestanost odabiranja je 10kHz. Odbirci signala treba da budu u Q15 formatu spremni za izbacivanje na 16 bitni unipolarni DA. Signalu dodati šum amplitude 25% od amplitude signala.

Rešenje

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

#define DUZINA 500 // u zadatku se trazi tabela duzine 500 odbiraka

unsigned int signal[DUZINA];  // trazi se da signal bude unipolaran

void generisi_signal(unsigned int s[], int n, int f, int fs, int offset, int ampl ) {
    int i;

    for (i=0; i<n; i++) {
        s[i] = offset + ampl*sin((6.28*f*i)/fs);
    }
}

void dodaj_sum(unsigned int s[], int n, int ampl) {
    int i;

    for (i=0; i<n; i++) {
        s[i] += rand()%ampl;
    }
}

int main(void) {

    // u bafer koji se zove "signal" i duzine je "DUZINA"
    // smestiti odbirke sinusnog signala frekvencije 70Hz,
    // frekvencija odabiranja je 10kHz odnosno 10000Hz
    // posto se trazi da signal bude unipolaran, njegov ofset je 32767
    // posto se trazi da amplituda suma bude 25% amplitude signala
    // formula za racunanje amplituda je sledeca:
    // ampl+(25/100)*ampl = 32768 iz cega sledi da je ampl=26213 sto je amplituda signala
    // a amplituda suma je (25/100)*ampl odnosno 6553
    generisi_signal(signal, DUZINA, 70, 10000, 32767, 26213);
    dodaj_sum(signal, DUZINA, 6553);

    while(1);  // mrtva petlja
}

Rezultat

results matching ""

    No results matching ""