关键词:反卷积  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

Logo

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

更多推荐