解决方案
本文介绍了如何使用 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
您会看到,这些功能为您提供了极大的灵活性。您可以生成任何格式的文本文件和二进制文件。当然,您可以将任何数字或字符串数据序列写入二进制文件。另外,您可以在单精度和双精度数据之间进行选择。
汇入资料
与上面类似,如果您想知道文件格式,则可以导入最复杂的文件类型。例如,先从此类文件中读取多少个数据点,然后读取适当数量的点,之后从结果中计算出最小值,最大值,平均值和均方根值,这都是没有问题的。
希望您已经看到拥有如此强大的工具会非常有趣。研究人员可以使用它来相对快速地进行相当复杂的研究,并且在行业中,您可以快速分析系统的行为以优化系统或了解某些特性。另一种选择是在盲飞模式下工作–在实践中效率不高……
当然,超短脉冲仿真不是一件容易的事,涉及很多物理问题,也涉及很多重要的实践方面。因此,不仅要拥有一些好的软件,而且要获得强大的技术支持也很重要。
ASAP/APEX技术交流群 373021576
SYNOPSYS光学设计与优化交流群 965722997
RP激光软件交流群 302099202
武汉墨光科技有限公司
Copyright © 2012-2021 武汉墨光科技有限公司版权所有
许可证:鄂ICP备17024342号-1