Primer 6 - Zbir tri sinusoide

Generisati lookup tabelu za signal koji je nastao zbirom tri sinusna signala frekvencija 50Hz, 500Hz i 1500Hz. Dužina tabele je 500 odbiraka, a učestanost odabiranja je 6kHz. Odbirci signala treba da budu u Q15 formatu spremni za izbacivanje na 16 bitni bipolarni DA.

Rešenje

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

#define DUZINA 500
int signal[DUZINA];
int filtriran[DUZINA];

// Obratiti paznju na razliku ove funkcije i iste funkcije iz prethodnog zadatka
void generisi_signal(int s[], int n, int f1, int f2, int f3, int fs, int offset, int ampl ) {
    int i;

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

int main(void) {

    // u bafer koji se zove "signal" i duzine je "DUZINA"
    // smestiti odbirke zbira sinusnih signala frekvencija 50Hz, 500Hz i 1500Hz
    // frekvencija odabiranja je 6kHz
    // posto se trazi da signal bude bipolaran, njegov ofset je 0,
    // a amplituda je 32767
    generisi_signal(signal, DUZINA, 50, 500, 1500, 6000, 0, 32767);

    while(1);  // mrtva petlja
}

Rezultat u vremenskom domenu

Rezultat u frekventnom domenu

Iz grafikona se vidi da se složeni signal sastoji od tri sinusoide od čega je jedna učestanosti 50Hz, druga 500Hz, a treća 1500Hz.

results matching ""

    No results matching ""