Frage

Ich habe einen einen Tiefpassfilter durch die folgende Übertragungsfunktion beschrieben werden:

h [n] = (w_c / Pi) * sinc (n * w_c / Pi), wobei ist w_c ist die Grenzfrequenz

Ich habe diesen Tiefpassfilter mit einem Bandpassfilter konvertieren.

War es hilfreich?

Lösung

Sie h[n] verwandelt sich in eine rect im Frequenzbereich. Um es Bandpass- Sie müssen die zentrale Frequenz höher bewegen.

Um dies zu tun, multiplizieren h[n] von exp(j*w_offset*n), wo w_offset die Menge zu verschieben. Wenn w_offset positiv ist, dann verschieben Sie zu höheren Frequenzen.

Die Multiplikation im Zeitbereich ist Faltung im Frequenzbereich. Da exp(j*w_offset*n) in Impulsfunktion schaltet w_offset zentriert ist, verschiebt sich die Multiplikation der H(w) von w_offset.

Siehe Diskrete Zeit Fourier für weitere Details Trans .

Hinweis : ein solcher Filter nicht symmetrisch sein etwa 0, was bedeutet, dass es komplexe Werte haben. Um es symmetrisch zu machen, müssen Sie h[n] von exp(-j*w_offset*n) multipliziert hinzuzufügen:

h_bandpass[n] = h[n](exp(j*w_offset*n)+exp(-j*w_offset*n))

Da cos(w*n) = (exp(j*w*n)+exp(-j*w*n))/2 erhalten wir:

h_bandpass[n] = h[n]cos(w_offset*n)

Dieser Filter hat dann rein reelle Werte.

Andere Tipps

Die kurze Antwort ist, dass Sie sich durch eine komplexe Exponentialfunktion in der Zeitdomäne vermehren. Multiplikation in der Zeitdomäne wird das Signal in dem Frequenzbereich verschieben.

Matlab-Code:

n_taps = 100;
n = 1:n_taps;
h = ( w_c / Pi ) * sinc( ( n - n_taps / 2) * w_c / Pi ) .* ...
    exp( i * w_offset * ( n - n_taps / 2) );

P. S. Ich war zufällig gerade vor ein paar Wochen genau diese Funktionalität für die Schule umgesetzt zu haben.

Hier ist der Code für die eigenen Bandpassfilter mit dem Windowing-Verfahren zu erstellen:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Function: Create bandpass filter using windowing method
% Purpose:  Simple method for creating filter taps ( useful when more elaborate
%           filter design libraries are not available )
%
% @author   Trevor B. Smith, 24MAR2009
%
% @param    n_taps    How many taps are in your output filter
% @param    omega_p1  The lower cutoff frequency for your passband filter
% @param    omega_p2  The upper cutoff frequency for your passband filter
% @return   h_bpf_hammingWindow     The filter coefficients for your passband filter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function h_bpf_hammingWindow = BPF_hammingWindow(n_taps,omega_p1,omega_p2)
    % Error checking
    if( ( omega_p2 == omega_p1 ) || ( omega_p2 < omega_p1 ) || ( n_taps < 10 ) )
        str = 'ERROR - h_bpf_hammingWindow():   Incorrect input parameters'
        h_bpf_hammingWindow = -1;
        return;
    end

    % Compute constants from function parameters
    length = n_taps - 1; % How many units of T ( i.e. how many units of T, sampling period, in the continuous time. )
    passbandLength = omega_p2 - omega_p1;
    passbandCenter = ( omega_p2 + omega_p1 ) / 2;
    omega_c = passbandLength / 2; % LPF omega_c is half the size of the BPF passband
    isHalfSample = 0;
    if( mod(length,2) == 1 )
        isHalfSample = 1/2;
    end

    % Compute hamming window
    window_hamming = hamming(n_taps);

    % Compute time domain samples
    n = transpose(-ceil(length/2):floor(length/2));
    h1 = sinc( (1/pi) * omega_c * ( n + isHalfSample ) ) * pi .* exp( i * passbandCenter * ( n + isHalfSample ) );

    % Window the time domain samples
    h2 = h1 .* window_hamming;
    if 1
        figure; stem(h2); figure; freqz(h2);
    end

    % Return filter coefficients
    h_bpf_hammingWindow = h2;
end % function BPF_hammingWindow()

Beispiel, wie diese Funktion nutzen:

h_bpf_hammingWindow = BPF_hammingWindow( 36, pi/4, 3*pi/4 );
freqz(h_bpf_hammingWindow); % View the frequency domain

Lassen Sie f[n] das Signal sein, das Sie von dem Tiefpassfilter erhalten mit w_c an der unteren Grenze des gewünschten Bandes. Sie können die Frequenzen oberhalb dieser unteren Grenze erhalten, indem f[n] von dem ursprünglichen Signal subtrahiert wird. Dies ist der Eingang, den Sie für den zweiten Tiefpassfilter soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top