C# c语言中低通滤波器的推广#

C# c语言中低通滤波器的推广#,c#,algorithm,signal-processing,C#,Algorithm,Signal Processing,假设我有一个c#列表,其中有三个随机数x->200…300,y->100…150和z->100..300作为条目元素,类似于行=200和列=3 x y z 210 106 220 200 120 134 220 150 230 280 120 136 204 110 270 260 120 184 209 110 209 210 110 134 ... 我读到的是,低通滤波器只是对结果进行平滑处理,以去除高频。最简单的低通滤波器是箱型滤波器,它是通过将n个样本平均在一起来实现的。对于

假设我有一个c#列表,其中有三个随机数
x->200…300
y->100…150
z->100..300
作为条目元素,类似于
行=200和列=3

x   y   z 
210 106 220
200 120 134
220 150 230
280 120 136
204 110 270
260 120 184
209 110 209
210 110 134
...
我读到的是,低通滤波器只是对结果进行平滑处理,以去除高频。最简单的低通滤波器是箱型滤波器,它是通过将n个样本平均在一起来实现的。对于两个样本的平均值,这非常简单:

sample[n] (sample[n] + sample[n + 1]) / 2;
那么,我将如何对这些数据应用低通滤波器呢

我是否需要应用
sample[n](sample[n]+sample[n+1])/2对于矩阵上的每个单元格或如何操作

我读到低通和高通滤波器“取消”或将高于/低于阈值的频率归零,但在这种情况下,获得阈值的最佳方法是什么,我不明白

您能解释一下如何对数据集应用低通过滤器吗?

M个数据点中的一个是简单但相当粗糙的低通过滤器,可以平滑数据。对于每个输出数据点,取N个输入点的平均值,例如,对于N=3:

for (i = 1; i < N - 1; ++i)
{
    output[i] = (input[i - 1] + input[i] + input[i + 1]) / 3;
}
(i=1;i
当你增加M时,你会得到更多的平滑(因为你平均了更多的点)-另一种看待这一点的方式是,你的数据中更多的高频成分(通常是噪声)被去除

请注意,这种移动平均滤波器的频率响应相当差-对于一些相当简单的任务,如从股票价格等时间序列数据中过滤噪声,这是一个很好的结果,但对于要求更高的应用,我们通常使用更复杂的滤波器设计

A是低通滤波器的补充,因为它滤除了低频分量。这包括“稳态”(0 Hz)分量,因此输出通常表示输入的短期变化

非常粗糙的高通滤波器:

for (i = 1; i < N ; ++i)
{
    output[i] = input[i] - input[i - 1];
}
(i=1;i { 输出[i]=输入[i]-输入[i-1]; }
在我看来,外行的答案似乎是由电路的RC或RCL时间常数设置的转换率的简单问题。R和C为无功意味着结果将根据频率而变化。在发生频率(采样率)设定的任何时间段。只考虑RC而不考虑L更为简单。但基本上,电压在时间上的变化不会比RC时间常数(与时间或频率有关的超越函数)所允许的变化快。导致极限摆振率的自然力似乎从未成为此类讨论的主题。

对于高通滤波器,我可以使用什么?一个问题是,我需要将此公式应用于每个向量,对吗,就像先应用于x,然后应用于y,最后应用于z列一样,是否正确?是的,如果您有3个独立的数据系列(例如,x、y、z加速度计数据),那么您将分别过滤每个系列。虽然这些过滤器确实“粗糙”,但这并不意味着它们没有用处。美国4周移动平均失业率数据是最受关注的经济指标之一。是的,它们绝对有用,特别是对于像经济学家这样缺乏数学/信号处理专业知识的人。