吾爱光设

 找回密码
 注册
会员须知
会员须知
实用帮助
实用帮助
查看: 50|回复: 0

[技术文章] Zemax—Matlab API 交互教程(8)_在FFT MTF中检索数据

[复制链接]
  • TA的每日心情
    慵懒
    2025-10-13 09:48
  • 签到天数: 310 天

    [LV.8]以坛为家I

    26

    主题

    46

    回帖

    5

    积分

    小白

    积分
    5
    发表于 2025-10-13 17:33 | 显示全部楼层 |阅读模式
    本帖最后由 伊人在水一方 于 2025-10-13 17:33 编辑

    Zemax—Matlab API 交互教程(8)_在FFT MTF中检索数据

    附件:

    相关教程:

    Zemax—Matlab API 交互教程(1) _初始化:http://www.optzmx.com/thread-42088-1-1.html
    Zemax—Matlab API 交互教程(2) _插入评价函数操作数:http://www.optzmx.com/thread-42091-1-1.html
    Zemax—Matlab API 交互教程(3) _插入操作数并进行优化:http://www.optzmx.com/thread-42095-1-1.html
    Zemax—Matlab API 交互教程(4) _批量添加操作数_从高斯光到平顶光:http://www.optzmx.com/thread-42099-1-1.html
    Zemax—Matlab API 交互教程(5)_新文件和快速聚焦:http://www.optzmx.com/thread-42325-1-1.html
    Zemax—Matlab API 交互教程(6)_NSC光线追迹:http://www.optzmx.com/thread-42382-1-1.html





    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


    % 代码功能:

    % 加载示例文件(….\sequence\Objectives\Cooke 40 degree field.zmx)
    % 并打开新的FFT MTF分析窗口。修改最大频率和采样。更新结果并绘制数据图;
    % OpticStudio 重新创建FFT MTF图。

    % 参考官方示例代码:"Documents\Zemax\ZOS-APISampleCode\MATLAB\MATLABStandalone_04_pull_data_from_FFTMTF.m"
    % 代码已测试成功
    % 相关附件已上传

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



    %% =============== 1. 初始化 Zemax 连接 ===============
    % 添加路径,此路径为你的:文档\Zemax\ZOS-APIProjects\MATLABZOSConnection1  
    addpath("C:\Users\Documents\Zemax\ZOS-APIProjects\MATLABZOSConnection1");
    TheApplication = MATLABZOSConnection1;
    TheSystem = TheApplication.PrimarySystem;

    %% =============== 2.打开示例文件 ==============

    sampleDir = TheApplication.SamplesDir; % 获取官方示例文件目录路径,SamplesDir表示的路径是: Documents\Zemax\SAMPLES
    % 构建示例文件路径(Cooke 40度视场镜头)

    testFile = System.String.Concat(sampleDir, '\Sequential\Objectives\Cooke 40 degree field.zos');
    TheSystem.LoadFile(testFile, false);% 加载文件(false表示不保存当前系统)

    %为了防止改变官方的示例文件,也可以把示例文件复制到到其他路径,改为自定义路径,别忘了路径后面还需要填写文件名和后缀.ZMX
    % sampleDir_yours ="C:\Users\Desktop\savefile";% sampleDir替换为其他的路径
    % testFile = fullfile(sampleDir_yours, 'new2.ZMX');% 路径拼接

    %%  ===============3.创建FFT MTF 分析==============

    newWin = TheSystem.Analyses.New_FftMtf(); % 创建FFT MTF 分析

    %% 配置分析参数
    newWin_Settings = newWin.GetSettings();  % 获取设置对象
    newWin_Settings.MaximumFrequency = 50;   % 设置最大空间频率为50cycles/mm
    newWin_Settings.SampleSize =ZOSAPI.Analysis.SampleSizes.S_256x256; % 采样尺寸256x256

    %% 执行分析并获取结果
    newWin.ApplyAndWaitForCompletion();      % 执行分析并等待完成
    newWin_Results = newWin.GetResults();    % 获取分析结果,注意,这里的分析结果并不是具体的数据,后面的数据处理需要从此进一步调用

    %% =============== 4.FFT MTF 绘图 ==============

    %% 创建绘图窗口
    figure('position', [50,150, 900, 600])  %指定窗口位置和大小
    hold on;    % 允许叠加绘图
    grid on;    % 显示网格

    %% newWin_Results中读取数据
    dataSeries = newWin_Results.DataSeries; % 获取分析数据

    % 生成颜色映射(根据数据系列数量)
    cc = lines(double(newWin_Results.NumberOfDataSeries));

    % 遍历所有数据系列
    for gridN =1:newWin_Results.NumberOfDataSeries
        data =dataSeries(gridN);% 获取当前数据系列
        % 提取Y数据(MTF值,包含子午方向和弧矢方向数据)
        y =data.YData.Data.double; % 矩阵格式:Nx2
        % 提取X数据(空间频率)
        x =data.XData.Data.double;

        % 绘制子午方向曲线(实线)
        plot(x, y(:,1), '-', 'color',cc(gridN, : );
        % 绘制弧矢方向曲线(虚线)
        plot(x, y(:,2), ':', 'color',cc(gridN, : );
    end

    %% 绘制图表
    title('FFT MTF'); % 标题
    xlabel('Spatial Frequency incycles per mm'); % X轴标签
    ylabel('Modulus of the OTF');% Y轴标签

    % 图例说明(对应不同视场角)
    legend('0^\circ tangential','0^\circ sagittal', '14^\circtangential', ...
        '14^\circ sagittal', '20^\circtangential', '20^\circ sagittal');





    ✨感谢阅读,您的点赞是我持续分享的动力。喜欢的话麻烦下方点个赞吧!✨








    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?注册

    ×
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    联系我们|本论坛只支持PC端注册|手机版|小黑屋|吾爱光设 ( 粤ICP备15067533号 )

    GMT+8, 2025-10-14 08:16 , Processed in 0.093750 second(s), 24 queries .

    Powered by Discuz! X3.5

    © 2001-2025 Discuz! Team.

    快速回复 返回顶部 返回列表