声音反卷积matlab,用MATLAB做反卷积

关键词:反卷积  MATLAB  fft   频移  分母中频谱零点   卷积核

%==============================================================

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

代码如下:

clear all;clc;

h = [1 1 1 1] % 要求

f = [1 -2 3 -2] % 已知

g = conv(h,f) % 已知 g = h*f 这里卷积结果g知道,f知道,f视作卷积核,反卷积求h

Nf = length(f);

Nh = length(h);

N = 16;

% N = input('请输入比Nf*Nh大的数:');

Gk = fftshift(fft(g,N));

Fk = fftshift(fft(f,N));

container = repmat(zeros(size(Fk)),Nh-1,1);

for i = 1:(Nh-1)

k = i*Nf;

container(i,:) = Fk([end-k+1:end 1:end-k]); %此处是做频移,算的是上面的Fpk那个连乘 Nh-1 次的公式;container的每一行保存的都是将要连乘的频移后结果

end

Fpk = prod(container) % 此处连乘

Fek = Fk.*Fpk

hpn = ifft(ifftshift(Gk.*Fpk))

fen = ifft(ifftshift(Fek))

n = (0:15)';

fen = fen';

hpn = hpn';

table = real([n fen hpn])

运行结果如下:

0818b9ca8b590ca3270a3433284dd417.png

和论文中的结果是一致的

0818b9ca8b590ca3270a3433284dd417.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值