【发布时间】:2020-06-18 14:20:17
【问题描述】:
我正在尝试从 3 个通道中实时过滤数据。我使用 Mathnet 库。鉴于我实时过滤并且过滤器是因果的,我是否需要为每个通道创建一个过滤器?我不确定是否需要实现选项 A 或选项 B。
选项 A:1 个过滤器用于所有渠道
static MathNet.Filtering.OnlineFilter bandpassFilter;
private void CreateFilter()
{
bandpassFilter = MathNet.Filtering.OnlineFilter.CreateBandpass(MathNet.Filtering.ImpulseResponse.Finite, fs, fc1, fc2, order);
}
private double[,] FilterData(double[,] unfilteredData)
{
double[] chFilteredData;
double[,] filteredData = new double[unfilteredData.GetLength(0), unfilteredData.GetLength(1)];
for (int channel = 0; channel < numChannels; channel++)
{
chFilteredData = bandpassFilter.ProcessSamples(unfilteredData.GetRow(channel));
filteredData.SetRow(channel, chFilteredData);
}
return filteredData;
}
选项 B:每个通道 1 个过滤器
List<MathNet.Filtering.OnlineFilter> bandpassFilters;
private void CreateFilters()
{
for (int channel = 0; channel < numChannels; channel++)
bandpassFilters[channel] = MathNet.Filtering.OnlineFilter.CreateBandpass(MathNet.Filtering.ImpulseResponse.Finite, fs, fc1, fc2, order);
}
private double[,] FilterData(double[,] unfilteredData)
{
double[] chFilteredData;
double[,] filteredData = new double[unfilteredData.GetLength(0), unfilteredData.GetLength(1)];
for (int channel = 0; channel < numChannels; channel++)
{
chFilteredData = bandpassFilters[channel].ProcessSamples(unfilteredData.GetRow(channel));
filteredData.SetRow(channel, chFilteredData);
}
return filteredData;
}
【问题讨论】:
标签: c# signal-processing mathnet-filtering