I started this project to train myself on the rust programming language. This library provides tools for signal processing and analysis. It is composed by four classes: # TimeSeries The `TimeSeries` object describes time series data, which consists in time indexed vector. ## Attributes - fs: sampling frequency - t0: time of the first sample - data: data vector ## Methods ### Constructor methods - white_noise: generates a white noise signal with a given amplitude - constant: generates a constant signal at a given value - wave: generates a sinusoidal signal withe the given frequency, amplitude and phase at t0 - from_vector: transform a data vector into a `TimeSeries` object ### Methods for spectral analysis. These methods create a `FrequencySeries` object. - csd: cross spectral density - psd: power spectral density - asd: amplitude spectral density - tf: transfer function - cohe: coherence ### Getter methods - get_fs: get sampling frequency - get_t0: get start time - get_size: get data vector size - get_data: get data vector ### Math methods - abs: computes modulus of the data - sqrt: computes the square root of the data - inv: computes the inverse of the data ### Operator overloading - (+) add - (-) subtract - (*) multiply - (/) divide - ([]) index ### Others - apply_filter: apply the `Filter` object to the time series - print: print the chosen elements (debug function) - write: wrte time and data vectors into an ascii file # FrequencySeries The `FrequencySeries` object describes the frequency indexed data. The vector contains complex data type. ## Attributes - f_max: sampling frequency - data: data vector ## Methods ### Constructor methods - from_vector: transform a data vector into a `FrequencySeries` object. ### Getter methods - get_f_max: get maximum frequency - get_size: get data vector size - get_data: get data vector ### Math methods - re: computes real part of the data - im: computes imaginary part of the data - abs: computes modulus of the data - abs2: computes the square modulus of the data - conj: computes the complex conjugates of the data - sqrt: computes the square root of the data - inv: computes the inverse of the data ### Operator overloading - (+) add - (-) subtract - (*) multiply - (/) divide - ([]) index ### Others - print: print the chosen elements (debug function) - write: wrte time and data vectors into an ascii file # Window ## Attributes - overlap: number of samples two successives windows overlap over - vector: window vector ## Methods ### Constructors - rectangle - hann ### Other - nb_fft: computes the number of windows - get_size: return window size - get_windowed_data: compute the window data - get_norm_factor; computes the integral of the squared window # Filter ## Attributes - gain: gain of the filter - poles: pole frequencies list - zeros: zero frequencies list - fs: sampling frequency ## Methods ### filter application methods - bilinear_transform - adapt_frequencies - polezero_to_coef ### Generic filter constructor - butterworth - chebyshev_type1 - chebyshev_type2 ### Custom filter contructor - init_filter - gain_factor - add_pole_1 - add_pole_2 - add_zero_1 - add_zero_2 - add_integrator - add_derivator ### getter function - get_poles - get_zeros - get_gain - get_fs ### Other - frequency_response