Primer 11 - Generisanje signala
U vektor signal[] smestiti odbirke signala sa slike. Dužina bafera je 100 odbiraka. U pitanju je 10-o bitni unipolarni signal.
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 510
sin_signal(signal, DUZINA, 512, 0, 2);
// Invertujem signal u opsegu 50 do DUZINA
for (i=50; i<DUZINA; i++)
signal[i] = signal[i] * (-1);
// Dodaj DC offset
dodajDC(signal, DUZINA, 512);
while(1); // mrtva petlja
}