解决方案

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

本文介绍了如何使用 RP Photonics 的软件将数据导出到文件(全部从文件导入)。某些脚本命令和功能为您提供了最大的灵活性。

经常被问到是否可以从我们的软件中导出数据,以便在其他软件(如 MatLab 或 Origin)中进一步处理它们。因此,下面这篇文章为该主题撰写一篇文章。首先问以下问题:


概念确定真的要导出数据吗?


这个问题很有用,因为将数据传输到其他软件有不好之处:

· 您想要将多个数据合并到一个图中。

· 您想向图表添加更多功能(例如,各种标签,其他图解等)。

· 您想使用修改后的详细信息(如字体类型和字体大小)来更改图的样式。

· 您想使用修改后的详细信息(如字体类型和字体大小)来更改图的样式。

· 您想要生成更高分辨率的图形,例如在印刷出版物中使用。

为什么会有这些不好的原因?仅仅是因为通常在我们的软件中直接执行这些操作更为方便,避免了导出数据,启动其他软件,导入软件的麻烦,并且需要再次执行计算时从最开始进行所有操作。我们就不一一讨论如何在我们的软件中执行上述操作的详细信息。当然,还有导出数据的充分理由,例如:

· 您可能需要存储耗时的计算结果,以备后用。(当然,您也可以使用我们的软件读取这些数据,以便进一步处理和绘制它们。)


新功能:获取与图表相对应的数值数据


例如,有人会使用我们的软件生成一个图表,然后又希望以数字形式显示相应的数据点。我们实现了一项新功能,可以为您提供确切的功能。对于每个图,我们的软件都会生成一个图形窗口,该窗口现在包含一个附加的选项卡控件,您可以在该窗口中的图形输出(默认显示)和基础数值数据之间进行切换,例如,请参见屏幕截图:


您仅需单击一下即可查看数值数据,还可以自由修改数据点的格式,因为这是由简单的数学表达式列表定义的。很容易实现以下目标:

· 修改显示的有效位数,或在浮点数后设置固定位数。

· 使用制表符(char(9))而不是逗号作为分隔符。

· 以任何方式重新缩放数据,例如将其转换为其他单位。

· 交换列或添加另一列,该列显示从x和y计算得出的数量。

更改格式表达式后,只需按“重新格式化”按钮,显示的结果将相应地重新计算。

然后,您可以将数据复制到 Windows 剪贴板或将数据保存到文件。

如果您已经拥有我们的软件并想要了解该功能(除了 RP Fiber Calculator,我们所有程序现在都提供了该功能)这项新功能可能会受到很多人喜爱,但显然不能满足所有潜在需求。一些例子如下:

· 数据点的x值通常不是等距的:您可以精确地获得为绘图计算的那些点,并且x位置选择是通过具有自动步长控制的绘图算法完成的。

· 您需要导出一些数据而不是绘制它们。

· 您需要自动生成多个文件(即,无需进一步的手动操作)。

因此,需要其他导出数据的方式,如下所述。(这些功能已经存在了很长时间,但是,如果您的版本太旧,则可能需要先进行更新。)


使用脚本命令

假设,我们要使用我们的软件 RP Fiber Power 生成一个文件,该文件描述光纤放大器光纤中泵浦和信号功率的变化。可以使用几行脚本代码来完成此操作,如下所示:

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$)

显然,通过这种方式,您可以完全控制细节,例如数据点的步长,值的舍入,分隔符等。

请注意,即使在RP Fiber Power中使用交互式表单时,也可以使用此类命令:表单包含可在其中输入一些脚本代码的字段。


使用表达式具有更大的灵活性

通过在表达式中使用某些函数而不是命令,您可以享受更大的灵活性。这些专门功能对于将数据输出到文件很有用;您甚至可以导出或导入二进制数据。函数和命令之间的区别在于,可以在任何数学表达式或字符串表达式中调用函数。这样的表达式可以包含在脚本命令中。然后,您还可以从我们的数学引擎中的功能更加强大的控制结构中受益。

在下面的示例中,向您展示一个示例,其中在用户定义的函数中使用了这些函数,而这次我们以二进制形式导出数据:

SavePumpAndSignal(FileName$) :=

begin

global allow all;

var f;

f := open_file(FileName$, "wb");

{ open for writing a binary file }

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);

{ set the signal input power }

SavePumpAndSignal("pump and signal, input "

+ str(P_in_dBm:d6) + " dBm.txt");

end

您会看到,这些功能为您提供了极大的灵活性。您可以生成任何格式的文本文件和二进制文件。当然,您可以将任何数字或字符串数据序列写入二进制文件。另外,您可以在单精度和双精度数据之间进行选择。


汇入资料

与上面类似,如果您想知道文件格式,则可以导入最复杂的文件类型。例如,先从此类文件中读取多少个数据点,然后读取适当数量的点,之后从结果中计算出最小值,最大值,平均值和均方根值,这都是没有问题的。

希望您已经看到拥有如此强大的工具会非常有趣。研究人员可以使用它来相对快速地进行相当复杂的研究,并且在行业中,您可以快速分析系统的行为以优化系统或了解某些特性。另一种选择是在盲飞模式下工作–在实践中效率不高……

当然,超短脉冲仿真不是一件容易的事,涉及很多物理问题,也涉及很多重要的实践方面。因此,不仅要拥有一些好的软件,而且要获得强大的技术支持也很重要。