标签归档:卷积

如何理解卷积


这两个公式学过信号与系统的一定知道,这就是卷积。

一开始我也不懂,看着上面2个复杂的公式,一脸懵然。于是我也再往上查了很多资料,试图理解到底什么是卷积。网上的资料也很多,中文的英文的我都有看过。慢慢的我懂了。

其实卷积很简单,就是

求和

#编个MATLAB理解:

  1. clear;

  2. b=[1];

  3. a=[1 -1 0.5];

  4. signal=[1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];%信号

  5. y=impz(b,a,20);  %系统的冲激响应

  6. signal_conv_y=conv(signal,y);%冲激响应与信号卷积

  7. for i=1:20 %提取冲激响应与信号卷积的前20个值,用于对比

  8. signal_conv_y_20(i)=signal_conv_y(i);

  9. end

  10. x=length(y);

  11. for i=2:x        %将冲激响应右移1个单位

  12. y_1(i)=y(i-1);

  13. end

  14. for i=3:x        %将冲激响应右移2个单位

  15. y_2(i)=y(i-2);

  16. end

  17. for i=1:x        %将3个响应叠加起来

  18. y_r(i)=y(i)+y_1(i)+y_2(i);

  19. end

  20. subplot(3,2,1);    %绘图

  21. stem(y);title(‘y’);

  22. subplot(3,2,3);

  23. stem(y_1);title(‘y_1’);

  24. subplot(3,2,5);

  25. stem(y_2);title(‘y_2’);

  26. subplot(3,2,2)

  27. stem(y_r);title(‘y_r=y+y_1+y_2’);

  28. subplot(3,2,4)

  29. stem(signal_conv_y_20);title(‘signal * impz’);

  30. subplot(3,2,6)

  31. stem(signal);title(‘signal’);

将第一列的三个响应信号叠加起来就等于信号与冲激响应的卷积。

所以再回过头来看,卷积其实就是求和,而且这个求和很简单。只是这个求和表达式有点复杂而已。所以用*来代替简化表达式。

当然使用卷积是有前提的,那就是:

只有线性时不变系统才能导出卷积公式。

因为冲激响应要乘以某一时刻的信号强度,所以在求和前还有乘积,这就使式子变得复杂。在上面的MATLAB实验中,所有的信号强度都是1,所以好像只是3个冲激响应的求和,其实三个冲激响应是有乘以强度1的。

更进一步,稍作修改,改变下信号的形状,重新实验:


注意到y_6的值是冲激响应的3倍。

这是离散的情况,连续的情况则把求和变为积分。