Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将FFTDb函数应用于小波变换阵列C#频率或其他之后,fftLeft阵列的输出是什么?_C#_Signal Processing_Fft_Audio Streaming_Frequency Analysis - Fatal编程技术网

将FFTDb函数应用于小波变换阵列C#频率或其他之后,fftLeft阵列的输出是什么?

将FFTDb函数应用于小波变换阵列C#频率或其他之后,fftLeft阵列的输出是什么?,c#,signal-processing,fft,audio-streaming,frequency-analysis,C#,Signal Processing,Fft,Audio Streaming,Frequency Analysis,我是声音编程的新手。我有一个实时声音可视化工具()。我从codeproject.com下载的 在AudioFrame.cs类中有一个数组,如下所示: _fftLeft = FourierTransform.FFTDb(ref _waveLeft); \u fftLeft是一个双数组\u wavelet也是一个双数组。如上所述,他们提出了申请 将FouriorTransform.cs类的FFTDb函数转换为_wavelet数组 以下是FFTDb函数: static public double[]

我是声音编程的新手。我有一个实时声音可视化工具()。我从codeproject.com下载的

在AudioFrame.cs类中有一个数组,如下所示:

_fftLeft = FourierTransform.FFTDb(ref _waveLeft);
\u fftLeft
是一个双数组
\u wavelet
也是一个双数组。如上所述,他们提出了申请 将FouriorTransform.cs类的FFTDb函数转换为_wavelet数组

以下是FFTDb函数:

static public double[] FFTDb(ref double[] x)
    {

        n = x.Length;
        nu = (int)(Math.Log(n) / Math.Log(2));
        int n2 = n / 2;
        int nu1 = nu - 1;
        double[] xre = new double[n];
        double[] xim = new double[n];
        double[] decibel = new double[n2];
        double tr, ti, p, arg, c, s;
        for (int i = 0; i < n; i++)
        {
            xre[i] = x[i];
            xim[i] = 0.0f;
        }
        int k = 0;
        for (int l = 1; l <= nu; l++)
        {
            while (k < n)
            {
                for (int i = 1; i <= n2; i++)
                {
                    p = BitReverse(k >> nu1);
                    arg = 2 * (double)Math.PI * p / n;
                    c = (double)Math.Cos(arg);
                    s = (double)Math.Sin(arg);
                    tr = xre[k + n2] * c + xim[k + n2] * s;
                    ti = xim[k + n2] * c - xre[k + n2] * s;
                    xre[k + n2] = xre[k] - tr;
                    xim[k + n2] = xim[k] - ti;
                    xre[k] += tr;
                    xim[k] += ti;
                    k++;
                }
                k += n2;
            }
            k = 0;
            nu1--;
            n2 = n2 / 2;
        }
        k = 0;
        int r;
        while (k < n)
        {
            r = BitReverse(k);
            if (r > k)
            {
                tr = xre[k];
                ti = xim[k];
                xre[k] = xre[r];
                xim[k] = xim[r];
                xre[r] = tr;
                xim[r] = ti;
            }
            k++;
        }
        for (int i = 0; i < n / 2; i++)
            decibel[i] = 10.0 * Math.Log10((float)(Math.Sqrt((xre[i] * xre[i]) + (xim[i] * xim[i]))));
        return decibel;
    }
此输出包含许多实时值,如下所示

41.3672743963389
,43.0176034462662,
35.3677383746087,
42.5968946936404,
42.0600935794783,
36.7521669642071,
41.6356709559342,
41.7189032845742,
41.1002451261724,
40.8035583510188,
45.604366914128,
39.645552593115

我想知道这些值是什么(频率与否)?如果答案是频率,那么为什么它包含低频值?当我弹奏一个吉他音符时,我想检测这个吉他音符的频率

根据发布的代码,
FFTDb
首先计算频谱,然后计算并返回对数分贝范围内的频谱大小。换句话说,
\u fftLeft
然后包含一组离散频率的幅值。这些频率的实际值可以使用阵列索引和采样频率计算


例如,如果您正在绘制纯正弦音调输入的
\u fftLeft
输出,您应该能够看到与正弦频率对应的索引中有一个清晰的尖峰。然而,对于吉他音符,你可能会看到与谐波对应的多个峰值。检测音符的频率(也称为音高)是一个更复杂的主题,通常需要使用其中一个。

基于发布的代码,
FFTDb
首先计算频率,然后计算并返回对数分贝范围内的频谱大小。换句话说,
\u fftLeft
然后包含一组离散频率的幅值。这些频率的实际值可以使用阵列索引和采样频率计算


例如,如果您正在绘制纯正弦音调输入的
\u fftLeft
输出,您应该能够看到与正弦频率对应的索引中有一个清晰的尖峰。然而,对于吉他音符,你可能会看到与谐波对应的多个峰值。要检测便笺的频率(也称为音高)是一个更复杂的主题,通常需要使用几个选项中的一个。

根据标点符号和大小写错误,这看起来像是从手机发帖。今后,我建议你使用真正的电脑;我们需要比这更精确的一点。根据标点符号和大写错误,看起来你是在用手机发帖。今后,我建议你使用真正的电脑;我们需要比这更精确的一点。根据标点符号和大写错误,看起来你是在用手机发帖。今后,我建议你使用真正的电脑;我们需要比这个更精确一点。谢谢你回复我。你的回答对我很有帮助。谢谢你的回答。你的回答对我很有帮助。谢谢你的回答。你的回答对我很有帮助。
41.3672743963389
,43.0176034462662,
35.3677383746087,
42.5968946936404,
42.0600935794783,
36.7521669642071,
41.6356709559342,
41.7189032845742,
41.1002451261724,
40.8035583510188,
45.604366914128,
39.645552593115