为了账号安全,请及时绑定邮箱和手机立即绑定

FFT java类中计算正弦或余弦函数的问题-Android工作室

FFT java类中计算正弦或余弦函数的问题-Android工作室

胡子哥哥 2021-09-03 21:58:05
我想在 Android Studio 中使用 Fast Fourier Transform Java 类。我想创建一个正弦函数,但有一个简单的问题:我的 FFT 函数需要一个 double [] 内部并使用 for cicle 创建一个我无法在内部使用的正弦函数。我的问题是:如何创建一个正弦函数以在我的 FFT 函数中使用它?我是 Android Studio 的新手,可能答案很简单,但我现在不知道。请建议我怎么做。谢谢 这是我的 FFT.java 类:package com.google.android.gms.samples.vision.face.rPPG.Math;public class Fft {    public static double FFT(Double[] in, int size, double samplingFrequency) {        double temp = 0;        double POMP = 0;        double frequency;        double[] output = new double[2*size];        for(int i=0;i<output.length;i++)            output[i] = 0;        for(int x=0;x<size;x++){            output[x]=in[x];        }        DoubleFft1d fft = new DoubleFft1d(size);        fft.realForward(output);        for(int x=0;x<2*size;x++){            output[x]= Math.abs(output[x]);        }        for(int p=12; p<size; p++) {// 12 was chosen because it is a minimum frequency that we think people can get to determine heart rate.            if(temp < output[p]) {                temp = output[p];                POMP = p;            }        }//      if (POMP < 12) {//      POMP = 0;//      }        frequency = POMP*samplingFrequency/(2*size);        return frequency;    }}
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

您可以使用以下方法生成离散(采样)正弦信号:

X[n] = A * sin(2*PI*fo*n*ts)

其中X[n]是索引 n (0, 1, 2, 3...) 处的正弦值;A 振幅;fo是正弦函数频率,ts是采样周期。此外,对于正弦可能有用:

(fs = 1/ts)

fs采样频率在哪里。


查看完整回答
反对 回复 2021-09-03
  • 1 回答
  • 0 关注
  • 207 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信