libeemd-cmake/README.md

113 lines
4.0 KiB
Markdown
Raw Normal View History

2021-11-20 13:35:46 +08:00
libeemd a C library for performing the ensemble empirical mode decomposition
==============================================================================
libeemd is a C library for performing the ensemble empirical mode decomposition
(EEMD), its complete variant (CEEMDAN) or the regular empirical mode
decomposition (EMD). The details of what libeemd actually computes are
available as a separate [article][], which you should read if you are unsure
about what EMD, EEMD and CEEMDAN are.
[article]: https://dx.doi.org/10.1007/s00180-015-0603-9
Acquiring libeemd
-----------------
The easiest way to get up-to-date versions of libeemd is to use [Bitbucket][],
which is a site built for distributing software using the amazing version
control system [Git][]. By using libeemd's [Bitbucket site][webpage] you can see
recent changes made to the program, report and track bugs found in the program,
access user-generated documentation and even create your own versions of
libeemd.
[bitbucket]: https://bitbucket.org
[git]: http://git-scm.com
Program license
---------------
libeemd is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.
libeemd is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
libeemd. If not, see <http://www.gnu.org/licenses/>.
[webpage]: https://bitbucket.org/luukko/libeemd
Installation
------------
### Dependencies
To compile libeemd you need:
* A fairly recent C compiler (something that understands C99)
* GNU [Scientific Library (GSL)][GSL]
If you want to use the easy route and use the `Makefile` distributed with
libeemd, you should have:
* GNU [Make][]
* GNU [Compiler Collection (GCC)][GCC]
[Make]: http://www.gnu.org/software/make/
[GCC]: http://gcc.gnu.org/
[GSL]: http://www.gnu.org/software/gsl/
### Installation
If you have Make and GCC installed, you can simply run
make
in the top-level directory of libeemd (the one with the `Makefile`). This
command compiles libeemd into a static library `libeemd.a`, a dynamic library
`libeemd.so`, and copies the header file `eemd.h` to the top-level directory.
You can then copy these files to wherever you need them.
You can use `make install` to install the library files to your system. By
default this command installs the files under `/usr` (so you'll need root
privileges), but you can specify another installation location like this:
PREFIX=$HOME/usr make install
If you set a `PREFIX` you need to make sure other programs will find libeemd
in this location. For example, if you set `PREFIX` to `$HOME/usr`, the
directory `$HOME/usr/lib` should be in `LIBRARY_PATH` and `LD_LIBRARY_PATH`.
Using the C interface
------------
To use libeemd in your program include `eemd.h` in your header file and link
your program against `libeemd.a` or `libeemd.so` and [GSL][]. The routines
exported by libeemd are documented in the header file `eemd.h`.
To see a short example of libeemd in action, please see the `examples`
subdirectory.
pyeemd, the Python interface to libeemd
-------------------------
The official Python interface to libeemd is called [pyeemd][]. You should
definitely try it, since data analysis with Python is much more fun than with
C. More documentation about [pyeemd][] can be found at [Read the Docs](http://pyeemd.readthedocs.org/).
[pyeemd]: https://bitbucket.org/luukko/pyeemd
Rlibeemd, the R interface to libeemd
----------------------------------------
There is also a R interface to libeemd. It is available separately at
<https://github.com/helske/Rlibeemd>.
Developing libeemd
------------------
Please report any issues using the Bitbucket issue tracker. If submitting pull
requests, please use `develop` as a target branch.