INDIETRO
  Primi programmi
AVANTI

elaborazione di un segnale

Questa volta proviamo a leggere un file contente un suono e ad apportavi una modifica: ci limitiamo a prendere un suono stereo e a farlo diventare mono.

Abbiamo un esempio in C, mono.c e il suo analogo in Fortran mono.f90

Applicando questo programma all'output del precedente programma fase1.f90, si vede che quando i due segnali a destra e a sinistra sono esattamente in opposizione di fase si cancellano.

Si noti che uno degli svantaggi di avere files senza header è quello di non sapere a priori quanti sono i record presenti.

In questo caso è stato sufficiente leggere un record e subito dopo scriverlo.

In altri casi può essere necessario leggere una prima volta tutto il file solo per contare i record; oppure si può guardare la lunghezza del file e dividere per 4.

Lo stesso esempio con octave:

octave:1> infile=fopen("stereo.cdr","r");
octave:2 a=fread(infile,[2,Inf],"int16","ieee-be");
octave:4> n=size(a)(2)
n = 155232
octave:5> s=(a(1,:)+a(2,:))/2;
octave:7> outfile=fopen("mono.cdr","w");
octave:8> for i=1:n
> fwrite(outfile,int16(s(i)),"int16","ieee-be");
> fwrite(outfile,int16(s(i)),"int16","ieee-be");
> end

Abbiamo qui un videocamera  filmato (16MB) dell'intera operazione.  


INDIETRO
Laboratorio Sperimentale di Matematica Computazionale - parte II
Sergio Steffè - AA 2014/2015 - PISA
AVANTI