filter2,二维数字滤波器。
用法:Y = filter( X , H ) 根据矩阵
H中的系数,对数据矩阵X应用有限脉冲响应滤波器。
一、生成fir滤波器
fs = 600000;
f1 = 37.2;
f2 = 37.8;
wn = [f1 f2]*1000*2/fs;
b_BPF = fir1(32,wn);
二、生成信号
fs = 600000;
T = 2*10^-3;
N = round(T*fs);
t = (0:N-1)/fs;
sig = cos(2*pi*f0*1000*t);
三、MATLAB处理滤波
sig_filted = filter2(b_BPF,sig);
四、C语言处理滤波
int_sig = zeros(1,multi*N);
trans_sig = zeros(1,(multi*N+32));
for i = 1:N
trans_sig((i-1)*multi+17) = sig(i);
end
for i = 17:N_N+16
for j = 1:33
int_sig(i-16) = int_sig(i-16) + trans_sig(i+j-17)*b_BPF(j);
end
end
五、结果对比
PS:这两天做插值的时候被filter2用C实现困扰了,所以写一点经验,C语言是按照MATLAB写出来的,结果一致,但是跟C写差不多,等有时间再改。图和代码不对应,但结果是验证过了,最近实在太忙了~~~
博客介绍了如何使用MATLAB的filter2函数生成和应用二维数字滤波器,并展示了如何将该滤波过程转换为C语言代码。作者通过创建FIR滤波器,生成信号,然后在MATLAB中进行滤波处理,最后在C语言中实现相同功能,验证了结果的一致性。虽然C代码与MATLAB代码相似,但博主指出仍有优化空间。
3548

被折叠的 条评论
为什么被折叠?



