Esercizi di programmazione

 

- Dato un array di 256 elementi contenente i campioni di un periodo di sinusoide, crearne un altro, della stessa dimensione, contenente i valori della stessa sinusoide ma a fase invertita.

- Dato un array, di dimensione 256, contenente un segnale campionato contare il numero di valori nulli (= 0) in esso presenti.

- Dato lo stesso array dell'esercizio precedente contare il numero degli attraversamenti dello zero.
Per realizzare questo programma occorre essere consapevoli che per attraversamento dello zero si intende il punto in cui la curva che rappresenta graficamente il segnale attraversa l'asse delle x o, con altre parole, il punto in cui tale curva cambia di segno. Tale esercizio è analogo al precedente e può essere la base per un algoritmo di misura della frequenza di un segnale campionato; la differenza con il precedente consiste nel fatto che, pur attraversando lo zero, a causa del campionamento potrebbe non essere presente nell'array nessun valore nullo. Ad es., dall'esame dei valori contenuti nel seguente array

0 _ 1 _ 2 _ 3 _ 4 _ 5 _ 6 __ 7 _ 8 _ 9
1.0 3.0 2.0 0.5 -1 -2 -0.5 0.2 1.2 4.0

possiamo osservare che si verifica un attraversamento dello 0 fra il 3° e il 4° elemento e fra il 6° e il 7°.

- Dato lo stesso array dell'esercizio precedente contare il numero di picchi positivi.
Un picco positivo è un punto di massimo della funzione che rappresenta il segnale. La caratteristica di un punto di massimo è che il relativo valore della funzione è maggiore o uguale ai valori che assume la funzione a sinistra e a destra nelle vicinanze. Ad es., la sinusoide ha un picco positivo in corrispondenza di
p/2: infatti i valori che si trovano intorno a quel punto sono minori o uguali al valore che ivi assume la funzione.

- Dato lo stesso array dell'esercizio precedente contare il numero di picchi negativi.

- Generare un array di 16384 elementi contenente i campioni di un singolo periodo di sinusoide normalizzata a 1.
Quest'ultima affermazione significa che il massimo valore che possono assumere i campioni contenuti nell'array è 1. Suggerimento: ricordando che la funzione seno ha periodo 2
p, dobbiamo dividere l'intervallo [0,2p] in 16384 parti e creare un ciclo che calcoli il seno per ognuno dei 16384 valori così generati (cioè sin(i*6.28/16384) in cui i è l'indice del ciclo che va da 0 a 16383).

- Avendo a disposizione la look-up table generata nell'esercizio precedente (modificandolo in modo che diventi un sottoprogramma) realizzare un programma di oscillatore virtuale. I campioni in uscita dovranno essere memorizzati in un file su disco.

- Realizzare un programma che permetta di introdurre una sequenza melodica di non più di 20 note in un array e che crei altri 3 array contenenti le forme a specchio della sequenza originaria (R, I, RI).
Le note dovranno essere codificate secondo il sistema adottato nella pitch-class set analysis di A. Forte.

- Realizzare un programma che permetta di introdurre un "cantus firmus" di non più di 10 note in un array e che crei un contrappunto di prima specie in un altro array.
V. sopra.

- Rifare lo stesso esercizio ma usando un array a 2 dimensioni, una per il cantus firmus e l'altra per il suo contrappunto.
V. sopra.


Pagina iniziale

Matematica

Informatica

Programma

Bibliografia