徒手造轮子之Java版STFT

注:该stft是类似于librosa中的同名函数,与tensorflow中的有区别,当然我也用tf实现了,问题是tflite都不支持这种操作,如果用tf底层(tf造轮子)编写,其速度肯定小于Java或者CPP。

接上一篇:java数组写的fft

我特么又想放弃了java,从入门到放弃,搞个复数数据结构都费劲,比C难多了,繁琐。

老子给你看看C版的复数是咋定义的数据结构,简直不要太简单。

typedef struct{
	float imag;
	float real;
}Complex;

Complex a[] = { {1,2},{3,4} };

JAVA版FFT没有问题,而且也得到了幅度谱和相位谱,纯手造。我要积分!!!

 

 

 

 

 

 

import numpy as np

x=np.arange(1,17)
>>> x
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])

这几个数的幅度谱和相位谱python和Java结果一样。

 

Java代码在此:

请问您付出积分了吗??

 

 

 

package com.comlex.rfft;
import java.lang.Math;

public class ComplexRfft {
    private static int log2(int x) {
        return (int) (Math.log(x) / Math.log(2));
    }

    private static float get_angle(complex c){
        return (float) Math.atan2(c.imag,c.real);
    }

    private static float get_angle(float imag,float real){
        return (float) Math.atan2(imag,real);
    }

    private static magangle complexfft(float[] rin, int n_fft) {
        int ii, m, is, i, j, nv, jj, k = log2(n_fft);
        float p, q, s, vr, vi,...;
        float[] pi = new float[n_fft];
        float[] fr = new float[n_fft];
        float[] fi = new float[n_fft];
        float[] rout = new float[n_fft];
        for (i = 0; i < n_fft; i++) {
            pi[i] = 0;
            fr[i] = 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小李飞刀李寻欢

您的欣赏将是我奋斗路上的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值