![b6601ecef0cb78769c5e6f66c2d6fd96.png](https://img-blog.csdnimg.cn/img_convert/b6601ecef0cb78769c5e6f66c2d6fd96.png)
一、卷积介绍
在泛函分析[1]中,卷积(又称叠积(convolution)、褶积或旋积),是透过两个函数[2] f 和 g 生成第三个函数的一种数学算子[3],表征函数 f 与经过翻转和平移的 g 的乘积函数所围成的曲边梯形的面积。如果将参加卷积的一个函数看作区间[4]的指示函数[5],卷积还可以被看作是“移动平均[6]”的推广。
% Create folding of two rectangular impulses
clear
X=-2.6:0.001:3;
F1=abs(X)<=0.5;
F2=abs(X)<=0.5;
clf
mkdir('tmp');
[tmp zero_offset] = min(abs(X));
SyncFrames=[1 round(18.67*(1:numel(X)))];
integral=nan(size(X));
frame=1;
for offset_i=1:numel(X);
offset=X(offset_i);
shift=offset_i-zero_offset;
F2_shifted = circshift(F2, [0 shift]);
product = F2_shifted.*F1;
integral(offset_i) = sum(product)/numel(X)*(X(end)-X(1));
if offset_i==SyncFrames(frame)
frame=frame+1;
area(X, product, 'facecolor', 'yellow');
hold on
plot(X, F1, 'b', X, F2_shifted, 'r', X, integral, 'k', [offset offset], [0 2], 'k:')
hold off
axis image
axis([-2.1 2.1 0 1.1])
xlabel('tau & t');
grid on
legend('Area under f(tau)g(t-tau)', 'f(tau)', 'g(t-tau)', '(fastg)(t)');
print('-dpng','-r72',sprintf('tmp/conv_box_box_%06d.png', offset_i));
drawnow
end
end
system('"C:Program FilesImageMagick-6.6.3-Q16convert.exe" -layers Optimize -delay 5 tmp/conv_box_box_*.png conv_box_box.gif');
delete('tmp/*');
rmdir('tmp');