NPL
Neurological Programs and Libraries
chirpz.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2014 Micah C Chambers (micahc.vt@gmail.com)
3  *
4  * NPL is free software: you can redistribute it and/or modify it under the
5  * terms of the BSD 2-Clause License available in LICENSE or at
6  * http://opensource.org/licenses/BSD-2-Clause
7  *
8  * @file chirpz.cpp Functions for performing the chirpz transform
9  *
10  *****************************************************************************/
11 
12 #ifndef CHIRPZ_H
13 #define CHIRPZ_H
14 
15 #include <cstddef>
16 #include <cstdlib>
17 #include <string>
18 #include <vector>
19 #include <complex>
20 
21 #include "fftw3.h"
22 
23 namespace npl {
24 
37 void createChirp(int64_t sz, fftw_complex* chirp, int64_t origsz,
38  double upratio, double alpha, bool center, bool fft);
39 
56 void chirpzFFT(size_t isize, size_t usize, fftw_complex* inout,
57  size_t uppadsize, fftw_complex* buffer, fftw_complex* prechirp,
58  fftw_complex* convchirp, fftw_complex* postchirp, bool debug = false);
59 
60 
73 void chirpzFFT(size_t isize, size_t usize, fftw_complex* inout,
74  fftw_complex* buffer, bool debug = false);
75 
85 void chirpzFFT(size_t isize, fftw_complex* in, fftw_complex* out, double a,
86  bool debug = false);
87 
98 void chirpzFT_brute2(size_t isize, fftw_complex* in, fftw_complex* out, double a,
99  bool debug = false);
100 
110 void chirpzFT_brute(size_t len, fftw_complex* in, fftw_complex* out, double a);
111 
112 
122 void chirpzFT_zoom(size_t isize, fftw_complex* in, fftw_complex* out,
123  double a);
124 
135 void chirpzFT_zoom(size_t isize, fftw_complex* in, fftw_complex* out,
136  fftw_complex* buffer, double a);
137 
145 void writePlotAbsAng(std::string file, size_t insz, fftw_complex* in);
146 
153 void writePlotReIm(std::string file, const std::vector<std::complex<double>>& in);
154 
162 void writePlotReIm(std::string file, size_t insz, fftw_complex* in);
163 
173 void zoom(size_t isize, fftw_complex* in, fftw_complex* out, double a);
174 
175 }
176 
177 #endif //CHIRPZ_H
178 
Definition: accessors.h:29
void writePlotReIm(std::string file, const std::vector< std::complex< double >> &in)
Plots an array of complex points with the Real and Imaginary Parts.
void createChirp(int64_t sz, fftw_complex *chirp, int64_t origsz, double upratio, double alpha, bool center, bool fft)
Fills the input array (chirp) with a chirp of the specified type.
void chirpzFT_brute2(size_t isize, fftw_complex *in, fftw_complex *out, double a, bool debug=false)
Performs chirpz transform with a as fractional parameter by N^2 algorithm.
void writePlotAbsAng(std::string file, size_t insz, fftw_complex *in)
Plots an array of complex points with the Real and Imaginary Parts.
void chirpzFFT(size_t isize, size_t usize, fftw_complex *inout, size_t uppadsize, fftw_complex *buffer, fftw_complex *prechirp, fftw_complex *convchirp, fftw_complex *postchirp, bool debug=false)
Comptues the chirpzFFT transform using FFTW for n log n performance.
void zoom(size_t isize, fftw_complex *in, fftw_complex *out, double a)
Performs a de-facto chirpz by interpolated zoom of a fourier-space line.
void chirpzFT_brute(size_t len, fftw_complex *in, fftw_complex *out, double a)
Performs chirpz transform with a as fractional parameter by N^2 algorithm.
void chirpzFT_zoom(size_t isize, fftw_complex *in, fftw_complex *out, double a)
Performs the chirpz-transform using linear intpolation and the FFT. For greater speed pre-allocate th...