Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
C# MathNet.Filter不过滤数据_C#_.net_Signal Processing_Mathnet Numerics - Fatal编程技术网

C# MathNet.Filter不过滤数据

C# MathNet.Filter不过滤数据,c#,.net,signal-processing,mathnet-numerics,C#,.net,Signal Processing,Mathnet Numerics,我使用Math.Net.Numerics首先用正弦波填充数组,然后使用Math.Net.Filtering创建带通以过滤数据,如下所示: void Main() { double[] preProcessedData = new double[128]; double[] postProcessedData = new double[128]; //Generate sinewave (350Hz, 250 samples) preProcessedData

我使用Math.Net.Numerics首先用正弦波填充数组,然后使用Math.Net.Filtering创建带通以过滤数据,如下所示:

void Main()
{
    double[] preProcessedData = new double[128];
    double[] postProcessedData = new double[128];

    //Generate sinewave (350Hz, 250 samples) 
    preProcessedData = MathNet.Numerics.Generate.Sinusoidal(250, 44100, 350, 20);

    postProcessedData = preProcessedData;


    MathNet.Filtering.OnlineFilter bandPass = MathNet.Filtering.OnlineFilter.CreateBandpass(MathNet.Filtering.ImpulseResponse.Finite, 44100, 390, 410);
    bandPass.ProcessSamples(postProcessedData);

    //LINQPad extensions
    preProcessedData.Dump();
    postProcessedData.Dump();
}
但是,这似乎根本不是在过滤样本,如图所示(相同):


我做错了什么?该库的可用文档似乎还不太完整,因此我从中没有学到太多。

ProcessSamples方法似乎没有修改输入数组,而是返回一个新的过滤数组。你需要:

postProcessedData = bandPass.ProcessSamples(preProcessedData);
(这是答案。)

顺便说一下,代码中的这一行:

postProcessedData = preProcessedData;
可能不会像你想的那样。它不会复制数据;它只是将
后处理数据
指向
预处理数据
指向的同一数组。因此,如果
ProcessSamples
确实修改了输入数组,
preProcessedData
postproceseddata
在处理后将是相等的

postProcessedData = preProcessedData;