Crates.io | basic_dsp_matrix |
lib.rs | basic_dsp_matrix |
version | 0.10.2 |
source | src |
created_at | 2016-10-17 04:03:21.609334 |
updated_at | 2024-05-24 13:48:07.927207 |
description | Digital signal processing based on real or complex vectors in time or frequency domain. |
homepage | https://github.com/liebharc/basic_dsp |
repository | https://github.com/liebharc/basic_dsp |
max_upload_size | |
id | 6879 |
size | 108,737 |
basic_dsp
Digital signal processing based on real or complex vectors in time or frequency domain. Vectors come with basic arithmetic, convolution, Fourier transformation and interpolation operations.
This lib was mostly developed and supported by a single person over years. This isn't sustainable anymore and I'm lacking the time and energy to continue doing this. Therefore I will only rarely respond to issues and won't develop further patches. Feel free to continue using the lib and please continue to open issues if you find something wrong. Possibly at some point one or more people will take over this project ☺️.
Add this to your Cargo.toml
:
[dependencies]
basic_dsp = "*"
and this to your crate root:
extern crate basic_dsp;
See also advanced building options.
This crate brings vectors in different flavors.
f32
) or double precision (f64
) floating point numbers. This can be used to trade precision against performance. If in doubt then it's likely better to start with double precision floating numbers.self.len()
needs to be checked for error handling too and therefore the advice to not use this type unless absolutely required.The long term vision for this lib is to allow GNU Octave/MATLAB scripts for DSP operations on large arrays/vectors to be relatively easily be rewritten in Rust. The Rust code should then perform much faster than the original code. At the same time a C interface should be available so that other programming languages can make use of this lib too. "Relatively easily be rewritten" implies that the API will not look like GNU Octave/MATLAB and that there is a learning curve involved from changing to this lib, however all necessary vector operations should be provided in some form and definitions should be close to GNU Octave/MATLAB. GNU Octave/MATLAB toolboxes are excluded from this goal since they are rather application specific and therefore should get an own Rust lib. There are already libs available for matrix operations so the aim for this lib will likely be to support matrix operations for matrices of large size and to integrated well the other libs. Thus not all matrix calulations will be implemented in this lib.
This is a very ambitious goal and it's likely that this lib will not make it there. Contributions are therefore highly appreciated.
The main design goals are:
Welcome!