多项内插滤波器/采样率转换

学习:

(652条消息) FPGA信号处理系列文章——深入浅出理解多相滤波器_nobel恒等式_十年老鸟的博客-CSDN博客

参考上面博客学习了一下原理之后,自己写了一个4倍内插滤波器看效果:

clc
clear
close all

a = 0;
data = [];
for i = 1:10
    a = a + 1;
    data = [data,a];
end
data_in = upsample(data,4);
% filter_coef = fir1(4*4-1,1/4);
filter_coef = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];

div = [];
for i = 1:4
    for n = 1:4
        div(i,n) = filter_coef(4*(i-1)+n);
    end
end

a = filter(filter_coef,1,data_in)
b = filter(div(:,1)',1,data);
c = filter(div(:,2)',1,data);
d = filter(div(:,3)',1,data);
e = filter(div(:,4)',1,data);
see = zeros(5,100);
see(1,1:length(a)) = a;
see(2,1:length(b)) = b;
see(3,1:length(c)) = c;
see(4,1:length(d)) = d;
see(5,1:length(e)) = e;

前两行为a,后四行为bcde

 可以看到分成4组进行滤波和直接一组进行滤波结果是一样的

只需要在分组滤波之后将数据在拼接起来就ok

理解:

如果不对输入数据进行插值,而是直接将滤波器分组滤波,之后直接将分组滤波后的数据拼接起来的话,相当于间接的对原始数据进行了(组数)倍插值(0),省去了内插0的步骤。

采样率转换:

假如原始采样率为200(fs)M,符号速率为5M(ps),那么此时一个符号的采样点数为200/5 = 40;

如果要实现一个符号4个点

那么只需要对原始数据进行200/4*5(fs/4*ps)=10倍抽取即可

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值