吾爱光设

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

如何从软件中导出数据| RP 系列

[复制链接]
  • TA的每日心情
    开心
    2025-3-6 09:39
  • 签到天数: 39 天

    [LV.5]常住居民I

    623

    主题

    151

    回帖

    6

    积分

    小白

    积分
    6
    发表于 2025-6-16 15:33 | 显示全部楼层 |阅读模式
    本帖最后由 dannie 于 2025-6-16 15:35 编辑

    本文介绍如何使用 RP Photonics 软件将数据导出到文件(或从文件导入全部数据)。通过特定的脚本命令和功能,您可以实现高度灵活的数据操作。许多用户经常询问:是否可以将数据从 RP Photonics 软件导出,以便在 MATLAB 或 Origin 等其他软件中进行进一步处理? 为此,我们撰写了本文来详细探讨这一主题。
    首先,请思考:是否真的需要导出数据?

    这个问题非常重要,因为将数据导出到其他软件可能存在一些弊端:
      您希望将多个数据合并到同一张图中
      您需要为图表添加额外功能(例如标签、图例等)
      您想调整图的样式(如修改字体、字号等细节)
      您需要生成更高分辨率的图形(例如用于印刷出版物)

    为什么这些情况下导出数据可能并非最佳选择?
    因为在大多数情况下,直接在 RP Photonics 软件中完成这些操作会更加方便,避免以下繁琐步骤:
    1.导出数据
    2.启动其他软件
    3.重新导入数据
    4.如需重新计算,还需从头开始操作
    新功能:获取与图表相对应的数值数据
    许多用户在使用我们的软件生成图表后,还希望查看对应的数值数据。为此,我们新增了一项实用功能:
    • 每个图表窗口均配备选项卡控件,可一键切换图形显示模式(默认)和原始数值数据模式(如下图所示)。
    • 数据格式支持完全自定义,用户可通过简单的数学表达式列表灵活调整:
      • 修改有效数字位数,或固定小数位显示
      • 将分隔符从逗号替换为制表符(char(9))
      • 自由缩放数据(如单位转换)
      • 调整列顺序,或新增计算列(基于现有x/y数据生成)
    • 修改表达式后,点击"重新格式化"按钮即可实时更新显示。
    • 支持将数据复制到剪贴板或直接保存为文件。
    (适用性说明:该功能已覆盖除RP Fiber Calculator外的所有程序版本,若您的软件未显示此功能,请检查是否为最新版本。)
    功能局限性及补充方案尽管此功能广受欢迎,但仍存在以下未覆盖的场景:
    • 非等距x值数据:绘图算法的自动步长控制可能导致x值非均匀分布。
    • 仅导出数据不绘图:需直接提取原始数据而非可视化结果。
    • 批量自动化导出:需无需人工干预的批量文件生成。
    针对这些需求,我们提供了以下长期支持的补充方案(若版本过旧请先升级):
    (具体方法将在后续章节详细说明)

    使用脚本命令导出数据如果需要通过 RP Fiber Power 软件生成描述光纤放大器中泵浦和信号功率变化的文件,可以使用以下脚本代码实现:
    示例 1:导出文本格式数据FileName$ := "pump_and_signal_vs_position.txt";
    write "; Position (m), Pump Power (W), Signal Power (dBm)", >(FileName$);
    for z := 0 to L_f step 0.1 do
      write [z:f1, ",", P(pump, z):d6, ",",
             10 * lg(P(signal, z) / mW):f1], >>(FileName$);
    说明:
    • 完全自定义控制:可调整数据步长(step 0.1)、数值格式(f1 保留 1 位小数,d6 显示 6 位有效数字)、分隔符(逗号)等。
    • 交互式表单支持:即使在使用 RP Fiber Power 的交互式表单时,也可在脚本输入栏中直接运行此类命令。
    示例 2:导出二进制格式数据(更高灵活性)通过函数式编程,可实现更复杂的数据导出逻辑,例如二进制文件写入:
    function SavePumpAndSignal(FileName$) :=
      begin
        global all;
        var f;
        f := open_file(FileName$, "wb");  {以二进制写入模式打开文件}
        for z := 0 to L_f step 0.1 do
          write_bin(f, P(pump, z), 10 * lg(P(signal, z) / mW));
        close_file(f);
      end;
    调用示例(批量生成不同输入功率的文件):
    for P_in_dBm := -30 to -20 step 2 do
      begin
        set_P_in(signal, expd(P_in_dBm / 10) * mW);  {设置信号输入功率}
        SavePumpAndSignal("pump_and_signal_input_"
          + str(P_in_dBm:d6) + "dBm.txt");
      end;
    优势:
    • 支持二进制/文本格式:可选择单精度或双精度存储数据。
    • 动态文件名:通过字符串拼接(str())自动生成带参数的文件名。
    • 复用性强:函数定义后可在脚本任意位置调用。
    数据导入功能导入数据时,软件同样支持灵活的文件解析,例如:
    • 读取文件头信息(如数据点数量)。
    • 批量加载数据后计算统计量(最小值、最大值、平均值、均方根值等)。
    • 自适应格式处理:可解析自定义分隔符、单位转换等。
    发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-6-17 06:51 , Processed in 0.312500 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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