2016-11-13 1 views
1

Ich versuche, eine gefilterte Audio zu plotten, aber ich mache etwas falsch, weil die zweite Handlung nichts zeigt.Matlab - Plotten gefiltert Audio

[wave,fs]=wavread('my-audio.wav'); 
t=0:1/fs:(length(wave)-1)/fs; 
figure(1);plot(t,wave); 
b = [1.1 1]; 
a = [-0.1 0 1]; 
FIR = filter(b,a,wave); 
figure(2);plot(t,FIR); 

Die Funktion Ich verwende ist: H(z)=(z + 1.1)/(z^2 - 0.1)

Was bin ich?

Danke!

Antwort

3

Es sieht so aus, als ob Sie die Reihenfolge der Koeffizienten in den Vektoren a und b umgekehrt haben. Die Umkehrung der Koeffizientenreihenfolge ist besonders dramatisch für die Rückkopplungskoeffizienten a, die die Pole der Übertragungsfunktion definieren (und somit die Stabilität des Filters bestimmen). Der resultierende gefilterte Ausgang FIR überschreitet somit wahrscheinlich die numerische Float-Kapazität, die mit plot Probleme hat.

Nach filter's documentation, die a und b Koeffizienten werden unter Verwendung definiert ein transfer function of the form:

H(z) = \frac{b(1) + b(2)z^{-1} + \dots + b(n)z^{-n}}{a(1) + a(2)z^{-1} + \dots + a(m)z^{-m}}

Da Ihre Übertragungsfunktion

\begin{align}H(z) &= \frac{z + 1.1}{z^2 - 0.1} \ &= \frac{z^{-1} + 1.1z^{-2}}{1 - 0.1z^{-2}}\end{align}

Sie sollten die Koeffizienten werden unter Verwendung von

b = [0 1 1.1] 
a = [1 0 -0.1]