本文基于光学理论,用Matlab实现二维卷积定理验证的仿真。
Project Code
% 作者:ZQJ
% 日期:2021.2.10 星期三
%***********************卷积定理的验证**************************
clear,clc,close all;
% 水平和竖直光栅mask及其fft *************************
Mask_column = zeros(200);
Mask_row = zeros(200);
for n = 1:10
Mask_column(:,20*n-9:20*n) = 1;
Mask_row(20*n-9:20*n,:) = 1;
end
F_Mask_column = abs(fftshift(fft2(Mask_column)));
F_Mask_row = abs(fftshift(fft2(Mask_row)));
% figure显示 ***************************************
subplot(2,2,1);imagesc(Mask_column); colormap gray;
axis square; title('竖直光栅');
subplot(2,2,2);imagesc(Mask_row); colormap gray;
axis square;title('水平光栅');
subplot(2,2,3);imagesc(F_Mask_column); colormap gray;
axis square; title('竖直光栅FFT');
subplot(2,2,4);imagesc(F_Mask_row); colormap gray;
axis square; title('水平光栅FFT');
% 卷积定理验证 **************************************
F_Mask_column_row = abs(fftshift(fft2(Mask_column.*Mask_row)));
F_Convolution = conv2(F_Mask_column,F_Mask_row);
% figure显示 ***************************************
figure;
subplot(1,2,1);imagesc(F_Mask_column_row); colormap gray;
axis square; title('时域相乘后FFT');
subplot(1,2,2);imagesc(F_Convolution); colormap gray;
axis square; title('FFT频域卷积');
仿真结果图:
专栏内容供作者本人或大家学习使用,多多指教 ~