首页 > 解决方案 > DM中计算微分/导数的函数

问题描述

我记得这是一个计算 DM 版本中线图的微分/导数的函数,它在过程中看起来很像 - 非线性滤波器 - 导数。但是我不记得哪个版本有这个功能,有什么建议吗?

标签: dm-script

解决方案


频谱过滤的 UI 功能可在Spectrum菜单中找到: 频谱菜单

自 GMS 3 以来,此功能是免费软件的一部分,之前它是光谱许可证(任何)的一部分。该菜单仅适用于谱线轮廓,需要时将使用Convert Data To菜单。

与所有“菜单”命令ChooseMenuItem一样,您可以使用以下命令访问它们:

GetFrontImage().SelectImage() // Make sure the image window is selected, or the menu is disabled if the script-window is frontmost!
ChooseMenuItem("Spectrum","Numerical Filters","First derivative")

此菜单背后的数学函数也可用作(非官方的、未记录的)脚本命令。他们不使用偏好,而是直接使用参数,使用未校准的“通道”比例。所以你也可以使用:

image src := GetFrontImage()
number chWidth = 5  // The values matching the settings
number chDelta = 1  // The values matching the settings
number chShift = trunc((chWidth + chDelta)/2 + 0.5)
number norm = chWidth + chDelta 
image fDev := src.FDeriv_Spectrum( chWidth, chShift, norm )
fDev.ShowImage()

请注意,不能保证该命令FDeriv_Spectrum会在 GMS 的未来版本中继续使用(它不是官方支持的命令。)


最后,一阶导数的数学非常简单,因此您可以使用纯 DM 脚本命令(如offset算术运算符)重新创建函数。一个简单的、非平滑的 1 通道导数就是:

image src := GetFrontImage()
image fdev := src - src.offset(-1,0)
fdev.ShowImage()

推荐阅读