声音反卷积matlab,用MATLAB做反卷积
关键词:反卷积 MATLAB fft频移 分母中频谱零点卷积核%==============================================================代码如下:clear all;clc;h = [1 1 1 1]% 要求f = [1 -2 3 -2]% 已知g = conv(h,f)% 已知g = h*f...
关键词:反卷积 MATLAB fft 频移 分母中频谱零点 卷积核
%==============================================================




代码如下:
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])
运行结果如下:

和论文中的结果是一致的

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)