作为一个土木工程系的研究生,现在大家做数据处理也用得越来越多了,自己接触的东西也多。作为土木工程师,很大部分时间其实并不想弄清楚滤波器的原理,只是希望拿来用,拿来把自己采集到的数据降噪一下,拿来做个傅立叶分析看看结构的固有频率变没变。但是matlab自带的文档很多时候都默认大家知道滤波器的原理,很多专有名词搞得不太友好,所以在这里以问题解答的形式直接给出我在科研中遇到的一个简单的用贝塞尔滤波器的例子,拿来主义万岁。
背景知识:采集到的数据都是discrete(离散)的数据,采集数据的频率为sampling
rate(采样频率)。贝塞尔滤波器为analog filter(模拟滤波器),需要转换为digital
filter(数字滤波器)才能直接使用。总体
首先题设是:
已知以1000 Hz采样频率得到的数据x,里面会有若干噪声,求使用贝塞尔滤波器滤掉噪声。
这里令采集到的数据为
Fs = 1000;
t =
linspace(0,1,Fs);
x =
cos(2*pi*(round(rand*100))*t)+0.5*randn(size(t));
可以看到这里结构固有频率应为某个特定值round(rand*100),信号里有均匀分布噪声。
解题思路:
第一步 - 快速傅立叶分析决定cut-off
frequency(截止频率),也就是确定我们要滤掉多少Hz以上的数据
第二步 - 使用截止频率来建立贝塞尔滤波器的模拟形式(analog filter)
第三步 - 将模拟形式转换为数字形式(digital filter