Forum: Digitale Signalverarbeitung / DSP / Machine Learning Impulsantwort Filter


von Uwe (Gast)


Lesenswert?

Hallo Matlabfreunde

ich möchte die Impulsantwort von einem Regalia Mitra Filter erstellen.

Die Filterfunktion sieht so aus:

function [Y] = regalia_mitra(X, w0, k, bw)
%REGALIA_MITRA   Allpass filtering based on the Regalia-Mitra model.
%                This function can be used several times to build a
%                parallel EQ filtering system in a cascade.
%                (IEEE Trans. ASSP-35, no.1, January, 1987)
%
% Usage : [Y] = regalia_mitra(X, w0, k, bw)
%  X    input signal X[n]
%  w0   passband central freq. (rads/sample)
%  k    gain at fm for boost/cut (=1 original signal
%                                 >1 boost
%                                 <1 cut
%                                 =0 notch filter)
%  bw   bandpass at -3dB (rads/sample)
%  Y    output signal Y[n] after the regalia-mitra filtering operation 
on X[n]
%
%
% Author: Davide Renzi, d.renzi@infocom.uniroma1.it
%         INFOCOM Dept. University of Rome "La Sapienza"

% driving parameters
k0 = k/2;
k1 = (1-tan(bw/2))/(1+tan(bw/2));
k2 = -cos(w0);

% extract base function A(z)
b = [k1 k2*(1+k1) 1]; % num
a = [1 k2*(1+k1) k1]; % den

% operate the filtering
Y = filter(b,a,X);

Y = (0.5*X)+(0.5*Y) + (k0*X)-(k0*Y);


Wie bekomm ich nun die Impulsantwort raus.
Das Signal X müsste ja ein einzelner Dirac sein, oder?
Kann mir jemand weiterhelfen?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Jein, den Dirac gibt es nur im zeitkontinuierlichen. Es muss ein 
Einheitsimpuls sein:
X = [1 zeros(1,99)];

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.