C# 计算fft 完整示例代码
时间: 2024-11-25 08:31:18 浏览: 19
在C#中,我们可以使用.NET Framework提供的MathNet.Numerics库来进行快速傅立叶变换(FFT)。首先,需要安装这个库(NuGet包管理器),然后你可以编写如下的完整示例代码:
```csharp
using MathNet.Numerics;
using MathNet.Numerics.IntegralTransforms;
// 假设我们有一个实数数组数据
double[] data = { 1, 2, 3, 4, 5, 6, 7, 8 };
// 调用FastFourierTransform类进行FFT
Complex[] fftResult = Fourier.Forward(data);
// 打印原始数据和其对应的频域结果
Console.WriteLine("Original Data:");
foreach (double d in data)
{
Console.Write(d + " ");
}
Console.WriteLine();
Console.WriteLine("FFT Result:");
for (int i = 0; i < fftResult.Length; i++)
{
Complex complexValue = fftResult[i];
double real = complexValue.Real;
double imaginary = complexValue.Imaginary;
Console.WriteLine($"({real}, {imaginary})");
}
// 如果你需要获取幅度和角度,可以这样做
Complex[] magnitudeSpectrum = fftResult.Select(c => new Complex(Math.Abs(c), 0)).ToArray();
double[] anglesInDegrees = Fourier.Angles(fftResult).Degree;
Console.WriteLine("\nMagnitude Spectrum and Angle (in degrees):");
for (int i = 0; i < magnitudeSpectrum.Length; i++)
{
Console.WriteLine($"Magnitude: {magnitudeSpectrum[i].Magnitude} Angle: {anglesInDegrees[i]}°");
}
阅读全文