Sign in

username or email:

password:



Not a member?
Forgot your password?

Search code



Search tips


See Also

Embedded SystemsFPGA

DSP Code Sharing > Goertzel Filterbank to the Implementation of a Nonuniform DFT

Goertzel Filterbank to the Implementation of a Nonuniform DFT

Language: Matlab

Processor: Not Relevant

Submitted by Miguel De Jesus on Dec 14 2010

Licensed under a Creative Commons Attribution 3.0 Unported License

Goertzel Filterbank to the Implementation of a Nonuniform DFT


 

This is an implementation of a Nonunifor Discrete Fourier Transform through a bank of filters of Goertzel.  Each goertzel filter is centered at the exactly frequencies of interest. 

 
% VectorGoertzel    Goertzel's Algorithm filter bank.
%   Realization of the Goertzel's Algorithm to compute the Nonuniform DFT
%   of a signal(a column vector named signalw) of length Nw with sampling
%   frecuency fs at the desired frecuencies contained in vector f. The
%   function returns the NDFT magnitude in a vector with the same length of f.


function xk=Gfilterbank(signalw,f,fs,Nw)

% Inititialization of the different variables
n=2;
signalw=signalw(1:Nw);

cost=cos(2*pi*f/fs);
sint=sin(2*pi*f/fs);
L=length(cost);

y1(1:L)=0;
y2(1:L)=0;
signalw=[0 0 signalw]; %Signal is delayed by two samples

% Goertzel Feedback Algorithm

while((n-2) < Nw)
    n=n+1;
    xnew(1:L)=signalw(n);
    y=xnew+2*cost.*y1-y2;
    y2=y1;
    y1=y;
end

% Goertzel Forward Algorithm

rey=y1-y2.*cost;
imy=y2.*sint;

% Magnitude Calculation

xk=abs(rey+imy*j)';
 
Rate this code snippet:
5
Rating: 5 | Votes: 1
 
   
 
posted by Miguel De Jesus
Miguel De Jesus possessed a BS in Electrical Engineering. He also pursued graduate studies obtaining a MSEE with specialization in Digital Signal Processing from the Polytechnic University of Puerto Rico. He has experience in research and development in several DSP areas such as time/frequency analysis, array processing, and parallel processing.


Comments


 

lmorales wrote:

12/15/2010
 
This is interesting: in your code, the Goertzel algorithm is modified to implement a nonuniform dft.  

Add a Comment
You need to login before you can post a comment (best way to prevent spam). ( Not a member? )