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
}