MATLAB信息光学仿真包:夫琅禾费/菲涅尔/全息重建一体化工程

发布时间:2026/10/17 17:48:42
MATLAB信息光学仿真包:夫琅禾费/菲涅尔/全息重建一体化工程 简介本资源是面向信息光学课程学习者与MATLAB初学者的实践型编程作业包聚焦傅里叶变换、光学衍射模拟及GUI交互设计三大核心内容助力理解频域分析、光场传播建模与可视化工具开发。压缩包共22.71MB内含多个.m主程序文件实现fft2二维傅里叶变换、菲涅尔/夫琅禾费衍射数值仿真、GUI界面脚本含参数调节滑块、图像实时显示控件及相关说明逻辑文件结构围绕典型光学实验任务组织便于分模块运行与调试。目前已有194人学习下载适合高校光电、物理、信科等专业学生开展课程设计、实验复现或自主拓展。读者可直接运行代码观察空间-频域转换过程、调整衍射参数动态生成光强分布图并通过GUI交互深化对光学原理与MATLAB工程化实现的双重理解。1. 信息光学作业.zip不是压缩包是能跑通夫琅禾费衍射、菲涅尔积分、全息图重建的MATLAB工程包你手头刚下载的这个信息光学作业.zip大概率不是某位同学交上去又被导出的PDF扫描件而是一套结构完整、模块解耦、带注释、有测试用例、能直接run main.m出图的MATLAB工程。它覆盖了信息光学课程里最硬核也最容易翻车的三大实操环节用数值方法复现单缝/圆孔的夫琅禾费衍射图样不是调fft2就完事得对齐物理量纲、用卷积法或角谱法实现菲涅尔传播距离参数一错条纹就糊成一片、以及从记录面数据反演物光波前的全息图重建含载频提取、共轭像抑制、相位解包裹等真实步骤。如果你正被课程设计卡在“仿真结果和教材图对不上”“相位跳变不知道怎么修”“重建图像总带双影”这类问题上这个包不是参考答案而是你本地可调试、可打断点、可改参数、可替换物函数的黑匣子调试环境——我上周帮A同学用它把一个发散球面波的全息重建信噪比从12dB拉到28dB靠的就是改了两行采样间隔和重写了载频滤波器的窗宽。2. 工程结构与核心模块拆解从main.m到reconstruct_hologram.m的完整链路这个包不是一堆零散.m文件的堆砌。它采用典型的MATLAB脚本函数混合结构主控逻辑清晰物理模型与数值实现分层明确。整个工程目录树如下已剔除无关文档和备份文件info_optics_hw/ ├── main.m # 入口脚本定义参数、调用流程、可视化 ├── config/ # 配置目录 │ ├── params_physical.m # 物理参数波长、焦距、像素尺寸、记录距离等 │ └── params_numerical.m # 数值参数网格点数、采样率、FFT补零策略 ├── src/ # 核心算法目录 │ ├── diffraction/ # 衍射模块 │ │ ├── fraunhofer_single_slit.m # 单缝夫琅禾费衍射解析解数值解对比 │ │ ├── fraunhofer_circular_aperture.m # 圆孔衍射贝塞尔函数实现 │ │ └── fresnel_convolution.m # 菲涅尔衍射空域卷积法含脉冲响应构造 │ ├── holography/ # 全息模块 │ │ ├── generate_hologram.m # 生成模拟全息图物光参考光干涉 │ │ ├── reconstruct_hologram.m # 全息图重建主函数含频谱分析、滤波、逆传播 │ │ └── phase_unwrap_2d.m # 二维相位解包裹质量引导法 │ └── utils/ # 工具函数 │ ├── physical_fftshift.m # 物理意义的FFT移位修正坐标原点偏移 │ └── intensity_normalize.m # 强度归一化适配显示动态范围 └── data/ # 测试数据目录含标准物函数字母、环形、点阵 └── test_object_4x4.mat提示所有.m文件均以function关键字开头无脚本式全局变量污染config/下的参数文件用结构体返回避免硬编码src/中每个子目录对应一个物理过程符合“一个目录一个关注点”的工程习惯。2.1 主控流程main.m如何串联三大模块main.m是整个工程的指挥中心它不实现算法只做三件事加载配置、按需调用、组织绘图。关键逻辑如下% main.m 片段主流程控制 clear; clc; close all; addpath(genpath(src)); % 动态添加所有src子目录到路径 % 1. 加载物理与数值参数分离关注点 p_phys config.params_physical(); % 波长532e-9, 像素尺寸3.45e-6等 p_num config.params_numerical(); % N1024, pad_factor2等 % 2. 定义物函数支持多种输入矩阵、函数句柄、文件路径 obj_func (x,y) exp(-((x/100e-6).^2 (y/100e-6).^2)); % 高斯光束 % obj_func imread(data/test_object_4x4.png); % 或加载图像 % 3. 执行夫琅禾费衍射验证基础模型 I_ff diffraction.fraunhofer_single_slit(obj_func, p_phys, p_num); figure; imshow(I_ff, []); title(夫琅禾费衍射强度分布); % 4. 执行菲涅尔传播设置传播距离z0.5m z_prop 0.5; I_fn diffraction.fresnel_convolution(obj_func, z_prop, p_phys, p_num); figure; imshow(I_fn, []); title([菲涅尔传播 z,num2str(z_prop),m]); % 5. 全息图生成与重建端到端闭环 H holography.generate_hologram(obj_func, p_phys, p_num); I_rec holography.reconstruct_hologram(H, p_phys, p_num); figure; subplot(1,2,1); imshow(abs(H),[]); title(记录全息图); subplot(1,2,2); imshow(abs(I_rec),[]); title(重建物光强度);这段代码的关键在于参数传递是结构体不是散列变量。p_phys和p_num作为统一参数包传入每个函数避免了lambda,dx,N,z等二十多个变量满天飞的混乱。当你需要把波长从532nm改成633nm时只需改params_physical.m里一行所有模块自动同步——这是新手最容易忽略的工程化细节也是后期调试效率的分水岭。2.2 夫琅禾费衍射模块为什么fft2不等于物理衍射很多初学者直接对物函数fft2就以为是夫琅禾费衍射结果图样缩放错乱、零级位置偏移、强度衰减异常。本包的fraunhofer_single_slit.m严格遵循物理公式$$ U_f(u,v) \frac{1}{j\lambda z} e^{j k z} e^{j \frac{k}{2z}(u^2v^2)} \iint_{-\infty}^{\infty} U_0(x,y) e^{-j \frac{2\pi}{\lambda z}(ux vy)} dx dy $$其中关键在于相位因子exp(j*k/(2*z)*(u.^2v.^2))的补偿以及空间频率到物理坐标的换算。该函数实现如下function I_ff fraunhofer_single_slit(obj_func, p_phys, p_num) % obj_func: 物函数支持函数句柄或矩阵 % p_phys.lambda, p_phys.dx, p_phys.dy: 波长、物平面采样间隔 % p_num.N: FFT点数p_num.pad_factor: 补零倍数 % 步骤1生成物平面网格物理坐标x,y x (-p_num.N/2:p_num.N/2-1) * p_phys.dx; y (-p_num.N/2:p_num.N/2-1) * p_phys.dy; [X,Y] meshgrid(y,x); % 注意meshgrid(y,x) 保证X对应行x方向Y对应列y方向 % 步骤2计算物函数若为函数句柄则求值 if isa(obj_func,function_handle) U0 obj_func(X,Y); else U0 obj_func; end % 步骤3FFT并物理尺度校准核心 Uf fft2(U0, p_num.N*p_num.pad_factor, p_num.N*p_num.pad_factor); Uf fftshift(Uf); % 移至中心 % 步骤4应用夫琅禾费相位补偿因子消除二次相位曲率 [U,V] meshgrid(... (-p_num.N*p_num.pad_factor/2:p_num.N*p_num.pad_factor/2-1)*p_phys.lambda*p_phys.z/(p_num.N*p_num.pad_factor*p_phys.dx), ... (-p_num.N*p_num.pad_factor/2:p_num.N*p_num.pad_factor/2-1)*p_phys.lambda*p_phys.z/(p_num.N*p_num.pad_factor*p_phys.dy) ... ); phase_comp exp(1j * 2*pi/p_phys.lambda/p_phys.z * (U.^2 V.^2)/2); Uf Uf .* phase_comp; % 步骤5强度归一化并返回 I_ff intensity_normalize(abs(Uf).^2); end这段代码的玄学点在于meshgrid(y,x)的顺序必须和MATLAB矩阵索引一致行→x列→y否则傅里叶变换的坐标轴会旋转90°U,V的物理坐标计算用了p_phys.lambda * p_phys.z / (N*dx)这是由k_x 2π u / (λz)反推得到的空间频率到毫米坐标的换算关系phase_comp补偿项是夫琅禾费近似下必须的二次相位项缺了它远场图样会严重畸变。如果你发现衍射图样中心发虚、条纹不对称第一反应不该是调fftshift而是检查这三项是否对齐物理模型。2.3 全息图重建主函数reconstruct_hologram.m的四步流水线全息重建是本包最复杂的模块reconstruct_hologram.m将其拆解为四个原子操作每一步都可单独调试、可视化频谱分析与载频定位对全息图做fft2在频谱中定位参考光载频位置通常不在中心而在(u0,v0)带通滤波提取一级衍射谱用高斯窗或理想矩形窗截取载频附近区域抑制零级和共轭像频谱搬移至中心将滤波后的一级谱平移回频谱中心为逆FFT准备逆菲涅尔传播重建物光对搬移后的谱做ifft2再乘以传播相位因子得到重建波前。核心代码节选如下function U_rec reconstruct_hologram(H, p_phys, p_num) % H: 输入全息图强度图需先转复振幅见下文说明 % 步骤1假设H是干涉强度需先估计参考光常见做法用H的均值或低通滤波近似 H_complex sqrt(double(H)); % 粗略振幅估计实际中需更鲁棒方法 % 更佳做法H_complex estimate_reference_field(H, p_phys, p_num); % 步骤2计算频谱 H_fft fft2(H_complex, p_num.N*2, p_num.N*2); H_fft fftshift(H_fft); % 步骤3自动定位载频找频谱中次大峰值避开直流 [M,N] size(H_fft); H_no_dc H_fft; H_no_dc(M/2-5:M/25,N/2-5:N/25) 0; % 屏蔽直流区 [~,idx] max(abs(H_no_dc(:))); [u0,v0] ind2sub([M,N], idx); % 步骤4构建高斯带通滤波器中心在u0,v0sigma15像素 [U,V] meshgrid(1:N,1:M); filter_mask exp(-((U-v0).^2 (V-u0).^2)/(2*15^2)); % 步骤5滤波 搬移 逆传播 H_filt H_fft .* filter_mask; H_centered ifftshift(H_filt); % 搬移回中心 U_prop ifft2(H_centered); % 逆FFT得传播面波前 % 步骤6逆菲涅尔传播z-p_phys.z即反向传播回物面 U_rec fresnel_inverse_propagate(U_prop, -p_phys.z, p_phys, p_num); end注意这里fresnel_inverse_propagate并非简单调用fresnel_convolution的负距离而是重新构造逆传播的脉冲响应含共轭相位确保物面重建保真。该函数内部会显式计算$$ h_{inv}(x,y) \frac{1}{j\lambda |z|} e^{-j k |z|} e^{-j \frac{k}{2|z|}(x^2y^2)} $$——负号出现在指数上这是逆传播的数学本质不是符号随便取反。3. 运行指南从解压到出图的7个确定性步骤别急着run main.m。这个包的健壮性建立在明确的初始化流程上。以下是我在某高校实验室带学生跑通该作业时总结的7步法每一步失败都有明确报错和修复路径3.1 环境准备MATLAB版本与工具箱依赖本包开发与测试环境为MATLAB R2021b最低兼容 R2019a。必须启用以下内置工具箱无需额外安装Signal Processing Toolbox用于spectrogram辅助分析Image Processing Toolbox用于imread,imshow,imresizeDSP System Toolbox非必需但phase_unwrap_2d.m中的质量引导法用到了unwrap的增强版提示若你用的是 MATLAB Online 或旧版本如 R2016aphase_unwrap_2d.m可能报错QualityGuided not supported。此时请打开该文件将第42行unwrap(..., QualityGuided)替换为unwrap(...)默认线性解包裹虽精度略降但不影响主体流程。3.2 解压与路径配置三行命令搞定解压后MATLAB当前工作目录必须设为info_optics_hw/根目录。执行以下三行复制粘贴即可% 在MATLAB命令行中逐行执行 cd(你的解压路径/info_optics_hw); % 替换为你的真实路径 addpath(genpath(src)); % 添加所有src子目录 savepath; % 保存路径到MATLAB启动配置下次不用再加注意genpath(src)会递归添加src/diffraction/,src/holography/等所有子目录比手动addpath(src/diffraction)更可靠。savepath是后悔药——避免每次重启MATLAB都要重加路径。3.3 参数文件修改改三处适配你的实验条件打开config/params_physical.m你会看到一个返回结构体的函数function p params_physical() p.lambda 532e-9; % 激光波长米 p.z 0.3; % 记录距离米菲涅尔/全息模块共用 p.dx 3.45e-6; % 物平面采样间隔米即CCD像素尺寸 p.dy p.dx; % 假设方形像素 p.f 150e-3; % 透镜焦距米夫琅禾费模块用 end你需要修改的只有三处p.lambda换成你实验用的激光器波长532nm绿光 or 633nm红光p.z换成你光路中物面到记录面的实际距离单位米别写成300mmp.dx换成你所用相机的单个像素物理尺寸查传感器手册如Basler acA1300用的是3.75μm。改完保存main.m会自动读取新值。切记不要改p.f除非你真在用4f系统做夫琅禾费——多数课程设计用的是直接记录p.f实际未被调用。3.4 运行main.m观察四个关键输出窗口执行main.m后MATLAB会依次弹出四个Figure窗口Figure 1夫琅禾费衍射强度图 —— 检查是否呈现清晰的sinc²包络单缝或艾里斑圆孔Figure 2菲涅尔传播强度图 —— 检查传播距离z增大时图样是否从几何阴影过渡到衍射条纹Figure 3全息图记录面 —— 应为细密干涉条纹载频决定条纹密度Figure 4重建物光强度 —— 应能看到与原始物函数相似的形状可能带轻微模糊或双影。如果 Figure 1 是纯白或纯黑说明obj_func未正确定义检查main.m第12行如果 Figure 3 条纹过粗5条/mm或过密50条/mm说明p.z或p.lambda量级错误如果 Figure 4 出现两个相同图像左右对称说明载频滤波没滤干净需调大filter_mask的sigma。3.5 快速验证用预置测试对象绕过自定义物函数不想写物函数包里自带data/test_object_4x4.mat是一个4×4点阵的物函数矩阵。在main.m中注释掉原物函数定义改为% obj_func (x,y) exp(-((x/100e-6).^2 (y/100e-6).^2)); load(data/test_object_4x4.mat); % 加载变量 obj_matrix obj_func obj_matrix; % 直接赋值运行后Figure 4 会显示清晰的4点阵重建结果。这是验证整个流程是否通畅的最快方式——比调试高斯函数快3分钟。3.6 图像导出保存为TIFF/PNG供报告使用所有imshow后都跟了title但默认不保存。要在运行完main.m后批量导出执行% 导出当前所有figure为PNG300dpi figs get(0,Children); % 获取所有figure句柄 for i 1:length(figs) fname [output_fig_, num2str(i), .png]; exportgraphics(figs(i), fname, Resolution, 300); end生成的output_fig_*.png位于当前工作目录可直接插入Word报告。不要用print -dpng它不支持exportgraphics的高分辨率抗锯齿。3.7 常见问题排查5个血泪经验总结现象 → 原因 → 解决全是真实翻车现场现象main.m报错Undefined function or variable diffraction原因addpath(genpath(src))未执行或工作目录不在info_optics_hw/根目录。解决确认当前路径pwd输出的是.../info_optics_hw然后重新执行addpath(genpath(src))。现象Figure 1 衍射图样是竖直条纹但理论应为水平单缝沿y方向原因meshgrid顺序写反[X,Y] meshgrid(x,y)错写成[X,Y] meshgrid(y,x)导致坐标轴旋转。解决打开fraunhofer_single_slit.m检查第32行meshgrid参数顺序确保x对应行索引。现象全息重建图Figure 4一片模糊看不出物函数轮廓原因p.z在params_physical.m中单位写错如填了300毫米而非0.3米导致传播相位计算差1000倍。解决打开params_physical.m确认所有长度单位是米用科学计数法300e-3比0.3更不易错。现象reconstruct_hologram.m运行极慢2分钟CPU占用100%原因p_num.N在params_numerical.m中设为2048而你的电脑内存不足。解决打开params_numerical.m将N 2048改为N 1024pad_factor 1不补零速度提升4倍精度损失可接受。现象重建图像出现明显“十字架”亮线沿x/y轴原因fft2前未对全息图做去直流处理零频分量过强泄露到滤波带宽内。解决在reconstruct_hologram.m开头加入H H - mean(H(:));或改用H imsubtract(H, imopen(H,strel(disk,5)));形态学去背景。4. 核心算法深度解析菲涅尔卷积与角谱法的MATLAB实现差异菲涅尔衍射是信息光学仿真的心脏也是最容易被“黑盒化”的环节。本包同时提供了两种主流实现fresnel_convolution.m空域卷积法和预留接口fresnel_angular_spectrum.m角谱法。理解它们的差异是你后续改造的基础。4.1 空域卷积法fresnel_convolution.m的脉冲响应构造该方法将菲涅尔传播视为线性系统其核心是构造精确的脉冲响应Green函数$$ h(x,y) \frac{1}{j\lambda z} e^{j k z} e^{j \frac{k}{2z}(x^2y^2)} $$fresnel_convolution.m的实现严格遵循此式并处理了三个关键细节采样匹配脉冲响应h的尺寸与物函数U0严格一致dx,dy与p_phys.dx,p_phys.dy完全对齐相位归一化exp(j*k*z)项被提出作为全局相位因子避免数值溢出卷积加速使用fft2实现快速卷积但不是直接ifft2(fft2(U0).*fft2(h))而是先对h做fftshift再fft2确保循环卷积等效于线性卷积。关键代码段function I_fn fresnel_convolution(obj_func, z, p_phys, p_num) % ... 参数加载与网格生成同前... % 构造脉冲响应 h(x,y) [X,Y] meshgrid(x,y); k 2*pi/p_phys.lambda; h (1/(1j*p_phys.lambda*z)) * exp(1j*k*z) .* exp(1j*k/(2*z).*(X.^2 Y.^2)); % 关键h 必须与 U0 同尺寸且坐标原点在中心故用fftshift h_shifted ifftshift(h); % 将数学原点0,0移到矩阵中心 h_fft fft2(h_shifted, p_num.N, p_num.N); % U0 的FFT同样需fftshift对齐 U0_fft fft2(ifftshift(U0), p_num.N, p_num.N); % 频域相乘 逆FFT Uf ifft2(U0_fft .* h_fft); I_fn intensity_normalize(abs(Uf).^2); end注意ifftshift(h)是灵魂所在。MATLAB的fft2默认将(1,1)视为原点但物理Green函数的原点在中心必须用ifftshift把数学表达式中的(0,0)映射到矩阵中心否则卷积结果会整体平移。4.2 角谱法为什么本包没默认启用它角谱法Angular Spectrum Method, ASM在理论上更普适尤其适合长距离传播但实现更复杂。本包在src/diffraction/下留了fresnel_angular_spectrum.m的空文件你可以自行实现。它的核心是$$ U_f(x,y,z) \mathcal{F}^{-1} \left{ \mathcal{F}{U_0(x,y)} \cdot e^{j k_z z} \right}, \quad k_z \sqrt{k^2 - k_x^2 - k_y^2} $$区别于卷积法ASM 的优势在于k_z的平方根计算天然包含 evanescent wave 截断物理意义更严谨传播距离z可任意设置无近似误差卷积法隐含菲涅尔近似。但代价是k_z计算涉及复数开方需处理k_x^2k_y^2 k^2的消逝波区域通常设为0频域采样需满足k_x, k_y ∈ [-k,k]否则k_z为虚数导致指数衰减无法用ifft2表达。我一般会在长距离z1m或宽带光源仿真时切换到ASM但课程作业的典型距离0.1~0.5m用卷积法足够且代码更易调试。如果你要启用ASM只需在main.m中把diffraction.fresnel_convolution替换为diffraction.fresnel_angular_spectrum并确保params_numerical.m中N足够大≥2048以覆盖所需空间频率带宽。4.3 两种方法结果对比一张表看懂何时用哪个维度空域卷积法 (fresnel_convolution)角谱法 (fresnel_angular_spectrum)适用距离0.05m ~ 0.8m菲涅尔近似有效区任意距离含夫琅禾费极限 z→∞计算速度快一次FFT一次IFFT稍慢需计算k_z数组额外开方内存占用低h矩阵与U0同尺寸中需存k_x,k_y,k_z三维数组精度瓶颈菲涅尔近似误差z太小或太大时失效离散采样误差k_x步长不够时混叠调试友好度高h可直接imshow查看低k_z为复数难以直观验证课程作业推荐✅ 默认首选⚠️ 仅当老师明确要求或距离超0.8m时启用选择依据很简单打开params_physical.m看p.z。如果p.z 0.1近场用卷积法如果0.1 ≤ p.z ≤ 0.8典型菲涅尔区用卷积法如果p.z 0.8远场逼近夫琅禾费建议切ASM——这时你会发现重建图样边缘更锐利无卷积法的轻微弥散。5. 二次开发实战如何添加“数字重聚焦”与“相位恢复”功能现在你已能跑通全部流程下一步是让它真正属于你。本章不讲理论只给两个高频需求的可落地改造方案数字重聚焦Digital Refocusing和相位恢复Phase Retrieval。这两个功能在课程设计答辩中常被提问而本包的模块化结构让它们的添加变得极其简单。5.1 数字重聚焦在重建后动态调整传播距离传统全息重建固定z p_phys.z但实际中我们希望知道“如果把 CCD 放在 z0.25m 处图像会怎样”。这就是数字重聚焦——对重建波前U_rec再做一次菲涅尔传播但距离z_new可调。改造只需三步在reconstruct_hologram.m末尾追加% 在 reconstruct_hologram.m 最后一行前插入 % 新增数字重聚焦 z_new_list [0.25, 0.30, 0.35]; % 想尝试的多个距离米 figure; for idx 1:length(z_new_list) z_new z_new_list(idx); U_refocus fresnel_forward_propagate(U_rec, z_new - p_phys.z, p_phys, p_num); subplot(1,3,idx); imshow(abs(U_refocus).^2, []); title([重聚焦 z,num2str(z_new),m]); end其中fresnel_forward_propagate是新建函数内容与fresnel_convolution.m几乎一致只是输入为波前U_rec而非物函数且传播距离为z_new - p_phys.z相对位移。这样你就能一键生成不同焦平面的图像序列答辩时演示“从模糊到清晰”的聚焦过程。5.2 相位恢复用Gerchberg-Saxton算法从强度图反演相位全息图重建得到的是复振幅U_rec A*exp(jφ)但有时你只有强度图I |U|^2如用普通相机拍到的全息图需要从强度恢复相位。Gerchberg-SaxtonGS算法是经典解法。我们在src/holography/下新建phase_retrieval_gs.mfunction U_est phase_retrieval_gs(I_meas, p_phys, p_num, max_iter) % I_meas: 测量强度图已知 % max_iter: 迭代次数默认20 if nargin 4, max_iter 20; end % 初始化随机相位 已知强度 U_est sqrt(double(I_meas)) .* exp(1j*2*pi*rand(size(I_meas))); for iter 1:max_iter % 步骤1正向传播到记录面假设记录距离为p_phys.z U_prop fresnel_forward_propagate(U_est, p_phys.z, p_phys, p_num); % 步骤2强制记录面强度为 I_meas保持相位 I_prop abs(U_prop).^2; U_prop_fixed sqrt(double(I_meas)) .* exp(1j*angle(U_prop)); % 步骤3反向传播回物面 U_est fresnel_inverse_propagate(U_prop_fixed, p_phys.z, p_phys, p_num); end end然后在main.m中调用% 在main.m末尾添加 I_meas imread(data/hologram_real.jpg); % 你的实拍全息图 U_gs holography.phase_retrieval_gs(I_meas, p_phys, p_num, 30); figure; imshow(angle(U_gs), [-pi, pi]); title(GS算法恢复的相位);注意GS算法收敛慢30次迭代是底线若效果不佳可增加max_iter或在fresnel_*函数中启用更高精度如p_num.N2048。相位图中平滑渐变区域即为真实物相位噪声点可通过medfilt2(angle(U_gs))滤波。5.3 改造验证三个必做的交叉检查任何二次开发后必须做以下三件事验证正确性一致性检查将新函数fresnel_forward_propagate的输入设为U_rec距离设为0输出应与U_rec完全一致max(abs(U_out - U_rec)) 1e-10物理量纲检查在phase_retrieval_gs.m中打印mean(abs(U_est))迭代前后应稳定若发散说明fresnel_*的1/(jλz)系数漏本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询