impulse response 使用的踩坑 —— cconv

在计算 impulse response 时,遇到初始阶段的意外响应和后续响应丢失问题。通过分析发现,原始 impulse response 需要进行 circular shift 以确保完整。使用圆周卷积解决了这个问题,实现了理想效果,反映出作者对信号处理基础知识的巩固需求。
摘要由CSDN通过智能技术生成

在 impulse response 的使用中遇到了小小的问题,具体如图,第一行是原始信号,第二行是响应的信号,在通过将原始信号和相应信号分别转换到频域求得 transfer function 后,ifft 得到 impulse response。第三行是原始信号和 ir 进行卷积得到的结果,可以看到在信号最开始的阶段,有一个意料外的响应。:

r_conv.jpg

这一段的代码如下:

% src: 原始信号
% resp: 响应的信号

Ssrc = fft(src);
Sresp = fft(rest);
Stf = Ssrc./Sresp;
ir = ifft(Stf);

z = conv(src,ir);

先说短的结论,把最后一条命令 conv 换为 cconv 即可。

r_cconv.jpg

和 Daniel 探讨后,问题出在 得到的 ir 上。

ir.jpg

对于这个ir,是不能直接进行卷积的,而应该先做一个 circular shift ( ir = circsh

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值