下面是在 MATLAB 中利用菲涅耳卷积法和博奇编码制作透过率函数的步骤:1. 定义物体表面上两个点的坐标:P1 = [1, 2, 2]; P2 = [0, 0, 2];2. 定义全息图平面的尺寸和分辨率:M = 512; N = 512;3. 计算全息图平面的坐标网格:x = linspace(-10e-3, 10e-3, M); y = linspace(-10e-3, 10e-3, N); [X, Y] = meshgrid(x, y);4. 计算物面光波的复振幅,这里假设物面光波是一个球面波:k = 2*pi/633e-9; R1 = sqrt((X-P1(1)).^2 + (Y-P1(2)).^2 + (P1(3)).^2); U1 = exp(1j*k*R1)./(1j*R1);5. 计算参考光波的复振幅,这里假设参考光波是一个平面波:R2 = sqrt((X).^2 + (Y).^2 + (P2(3)).^2); U2 = exp(1j*k*R2);6. 利用菲涅耳卷积法将物面光波的复振幅和参考光波的复振幅卷积到全息图平面上:dx = x(2) - x(1); dy = y(2) - y(1); H = exp(1j*k*(X.^2 + Y.^2)/(2*P2(3))); G = fftshift(fft2(U1.*H))*dx*dy.*U2;7. 在全息图平面上用博奇编码重新制作透过率函数,这里假设使用8位编码:G_int = round(abs(G)/max(max(abs(G)))*(2^8-1)); Encoded_G = de2bi(G_int, 8); Decoded_G = bi2de(Encoded_G);8. 绘制透过率函数的图像:figure; imagesc(x, y, Decoded_G); axis equal; colormap gray;其中,变量 Encoded_G 表示经过博奇编码后的二进制数字序列,变量 Decoded_G 表示解码后的透过率函数,使用 imagesc 函数绘制透过率函数的图像。
--- 光学专家Gpt |