7.4 Viteza

Scrierea unui program de convoluție a unui semnal cu altul este o sarcină simplă, care necesită doar câteva linii de cod. Executarea programului poate fi mai dureroasă. Problema este numărul mare de adunări și multiplicări cerute de algoritm, ceea ce duce la lungi timpi de execuție. După cum arată programele din ultimul capitol, operația consumatoare de timp este compusă din înmulțirea a două numere și adăugarea rezultatului într-un acumulator. Alte părți ale algoritmului, cum ar fi indexarea matricelor, sunt foarte rapide. Acumularea multiplicării este un bloc de bază în DSP și vom vedea că este repetat în câțiva alți algoritmi importanți. De fapt, viteza computerelor DSP este adesea specificată de cât timp este nevoie pentru a preforma această operație de acumulare-multiplicare.

Dacă un semnal compus din N eșantioane este în convoluție cu un semnal compus din M eșantioane, trebuie să se preformeze acumulări de înmulțire N × M. Acest lucru se poate vedea din programele din ultimul capitol. Calculatoarele personale de la mijlocul anilor 1990 necesită aproximativ o microsecundă pentru acumularea multiplicării (Pentium 100 MHz utilizând virgulă mobilă cu simplă precizie, vezi Tabelul 4-6). Prin urmare, convoluția unui semnal de 10 000 de eșantioane cu un semnal de 100 de eșantioane necesită aproximativ o secundă. Pentru a procesa un semnal de un milion de puncte cu un răspuns de impuls de 3000 puncte necesită aproape o oră. Cu un deceniu mai devreme (80286 la 12 MHz), acest calcul ar fi necesitat trei zile!

Problema timpului de execuție excesivă este tratată în mod obișnuit într-una din cele trei căi. Mai întâi, pur și simplu păstrați semnalele cât mai scurte posibil și utilizați numere întregi în loc de virgulă mobilă. Dacă trebuie să executați convoluția doar de câteva ori, acesta va fi probabil cel mai bun compromis între timpul de execuție și efortul de programare. În al doilea rând, utilizați un calculator proiectat pentru DSP. Microprocesoarele DSP sunt disponibile cu timpi de acumulare-multiplicare de numai câteva zeci de nanosecunde. Aceasta este calea de urmat dacă intenționați să efectuați convoluția de mai multe ori, cum ar fi în proiectarea produselor comerciale.

A treia soluție este de a utiliza un algoritm mai bun pentru implementarea convoluției. Capitolul 17 descrie un algoritm foarte sofisticat numit convoluție FFT. Convoluția FFT produce exact același rezultat ca și algoritmii de convoluție prezentați în ultimul capitol; cu toate acestea, timpul de execuție este redus dramatic. Pentru semnalele cu mii de eșantioane, convoluția FFT poate fi de sute de ori mai rapidă. Dezavantajul este complexitatea programului. Chiar dacă sunteți familiarizați cu tehnica, așteptați să vă petreceți mai multe ore pentru ca programul să funcționeze.