我正在使用MATLAB的filter
函数来创建折线图的移动平均值。我的问题是,什么样的过滤器?低通?高通?等...
我是一名二年级电气工程师,所以这个问题对我特别感兴趣。
我正在绘制1月份的平均温度。
temperature = filter(ones(1,3)/3,1,janTemp);
plot(days,temperature);
其中janTemp
是带有温度的1列向量,days
是向量中的天数列表。
答案 0 :(得分:2)
filter
创建过滤器;它将过滤器应用于信号:
FILTER一维数字滤波器。
Y = FILTER(B,A,X)用向量过滤向量X中的数据 由向量A和B描述的过滤器以创建过滤的 数据Y.
滤波器将是低通,高通等,具体取决于系数向量A
,B
。这些向量包含定义滤波器的差分方程的系数:
a(1)* y(n)= b(1)* x(n)+ b(2)* x(n-1)+ ... + b(nb + 1)* x(n- nb)
- a(2)* y(n-1) - ... - a(na + 1)* y(n-na)
等价地,A
和B
定义了滤波器传递函数H(z)的分子和分母多项式。
在您的情况下,使用B = [1 1 1]
和A = 1
,它将是一个低通FIR滤波器,即您在问题中指出的移动平均线。
有关详细信息,请参阅filter
's documentation或输入help filter
。
答案 1 :(得分:2)
可视化过滤器频率响应的简便方法是使用freqz
。
freqz([1 1 1]/3,1)
此滤波器会衰减高频,但绝不是很好。
考虑使用5抽头Butterworth FIR滤波器:
freqz(butter(5,0.5,'low'),1)
另请参阅fvtool
,过滤器可视化工具(FVTool)。
答案 2 :(得分:1)
移动平均线通常是低通滤波器的一个例子。请在http://en.wikipedia.org/wiki/Moving_average
查看更多信息通常,您可以在http://www.mathworks.com/tagteam/55876_digfilt.pdf了解有关matlab过滤器的更多信息。