查看: 157|回复: 0|关注: 0

[未答复] 关于用FFT做反卷积运算的问题

[复制链接]

新手

10 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-1-27 10:07:00 | 显示全部楼层 |阅读模式
本帖最后由 breezer5577 于 2019-1-27 15:49 编辑

想做反卷积求解原始信号。
  1. t=-5:0.02:5;t=t';pi=3.1415;M=length(t);
  2. x=3*sin(2*pi*t/2)+sin(2*pi*t);
  3. y=exp(t-exp(t));
  4. z=conv(x,y);
  5. subplot(231);plot(t,x);
  6. subplot(232);plot(z);

  7. N=2*length(t)-1;
  8. xx=[x;zeros(N-length(x),1)];
  9. yy=[y;zeros(N-length(y),1)];
  10. //反卷积求解x
  11. temp2=fft(z)./fft(yy);
  12. C3=ifft(temp2)/N;
  13. C3=C3($:-1:1);//C3(1:M)为反卷积求出的x
  14. subplot(234);plot(t,C3(1:M));
  15. //用计算的x再次回归验证卷积结果
  16. subplot(235);plot(conv(C3(1:M),y))
复制代码



以上代码可以求出正确的x,再次验证卷积结果也与原始结果一致。但是下面的代码却无法求出正确的x和重新计算的卷积,请问是怎么回事啊?



  1. zz=exp(-t);
  2. subplot(233);plot(t,z);
  3. zz_expand=[zz;zeros(N-length(zz),1)];
  4. temp22=fft(zz_expand)./fft(yy);
  5. C3=ifft(temp22)/N;
  6. C3=C3($:-1:1);//C3(1:M)为反卷积计算得到的x
  7. temp4=conv(C3(1:M),y);//用新得到的x回归验证卷积结果
  8. subplot(236);plot(t,temp4(1:M));
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表