Java 科学计算库
1. The Shared Scientific Toolbox in Java
maven 依赖:
2. Jsci
添加依赖:
将 jsci 下载包中的 core.jar 和 wavelet.jar 引用到项目中。具体操作见:2022-04-28-Maven-使用插件安装本地jar包
JavaDoc 文档
Java 使用 FFT 函数测试
public class MathTest {
private static final Logger LOGGER = LoggerFactory.getLogger(MathTest.class);
public static void main(String[] args) {
jsciTest();
}
public static void jsciTest() {
double[] audio = GenerationUtils.generateMergeSin((int) Math.pow(2, 15), 16000, 1, 0, 130, 30, 230, 10, 60, 304, 40);
double[] absFFT = Signal.absFFT(audio);
H5Utils.createUnlimitedDoubleFile("jsci_fft_origin.h5", "data", audio);
H5Utils.createUnlimitedDoubleFile("jsci_fft_abs.h5", "data", absFFT);
}
}
3.JScience
maven dependency
<dependency>
<groupId>org.jscience</groupId>
<artifactId>jscience</artifactId>
<version>4.3.1</version>
</dependency>
4. JDSP
https://github.com/psambit9791/jDSP
JDSP 是一个信号处理工具库,旨在提供 MATLAB 或 Python 的 scipy-signal 包中可用的功能。 目标是提供易于使用的 API,用于对信号执行复杂的操作,从而无需了解处理管道中的低级复杂性。
Maven
<dependency>
<groupId>com.github.psambit9791</groupId>
<artifactId>jdsp</artifactId>
<version>1.0.0</version>
</dependency>
Java函数调用
/**
* 参考地址:{@link {https://github.com/psambit9791/jDSP/wiki/Fourier-Transforms}}
*/
public static void jdspTest() {
double[] audio = GenerationUtils.generateMergeSin((int) Math.pow(2, 15), 16000, 1, 0, 130, 30, 230, 10, 60, 304, 40);
FastFourier dft = new FastFourier(audio);
dft.transform();
/*
boolean onlyPositive = true;
double[] out = dft.getMagnitude(onlyPositive); //Positive Absolute
boolean onlyPositive = true;
double[][] out = dft.getComplex2D(onlyPositive); //Positive Complex
boolean onlyPositive = false;
double[] out = dft.getMagnitude(onlyPositive); //Full Absolute
boolean onlyPositive = false;
double[][] out = dft.getComplex2D(onlyPositive); //Full Complex
*/
double[] out = dft.getMagnitude(false);
H5Utils.createUnlimitedDoubleFile("jdsp_fft_origin.h5", "data", audio);
H5Utils.createUnlimitedDoubleFile("jdsp_fft_out.h5", "data", out);
}
[[Java]]