Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>The short answer is that you will multiply by a complex exponential in the time domain. Multiplication in the time domain will shift the signal in the frequency domain. </p> <p>Matlab code:</p> <pre><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) ); </code></pre> <hr> <p>p.s. I happened to have just implemented this exact functionality for school a couple of weeks ago. </p> <p>Here is code for creating your own band pass filter using the windowing method:</p> <pre><code>%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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 &lt; omega_p1 ) || ( n_taps &lt; 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() </code></pre> <p>Example on how to use this function:</p> <pre><code>h_bpf_hammingWindow = BPF_hammingWindow( 36, pi/4, 3*pi/4 ); freqz(h_bpf_hammingWindow); % View the frequency domain </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload