现场混沌检测
科学家和工程师是最早注意到 Linux 内核和 GNU 工具强大组合的人群。因此,毫不奇怪的是,正是严谨的科学家开始用廉价的 GNU/Linux 系统网络取代昂贵的 超级计算机。尽管 GNU/Linux 在科学计算的各个领域都占据着强大的地位,但 Linux 内核的某些方面仍然被工程师们忽视。其中之一就是声卡接口。
在 Linux 的早期,声卡在处理数据和连续信号方面的能力非常不可靠。它们本应处理游戏中的声音,仅此而已;很少有人尝试用它们来记录数据。如今,现代声卡允许同时测量信号和实时控制过程,而且好的声卡可以与昂贵的 数据采集卡 相媲美,后者的价格甚至超过了周围的 PC。本文演示了如何滥用声卡进行现场测量。
借助合适的软件,普通的 PC 可以做更多的事情,而不仅仅是在现场记录数据,然后在办公室离线分析。由于现代 CPU 的极端计算能力,可以在实时记录数据的同时对其进行分析。在线分析允许在现场交互式探索环境,就像早期的示波器一样,但增加了一个维度。
首先,您需要在 Linux 系统中安装声卡及其驱动程序。通常,您的 Linux 发行版附带的书籍应该会有很大帮助,互联网上的 HOWTO 指南提供了必要的说明(请参阅侧边栏“声音安装”)。当您的声卡及其驱动程序安装完毕后,您应该对其进行一些测试。在调整混音器增益的同时进行录音,并通过扬声器播放录音。混音器是声卡的一个重要功能,因为它允许您将 A/D 转换器的灵敏度调整到要记录的信号的电平。当以 8 位分辨率进行录音时,这一点尤为重要。请记住,我们正在寻找对定性效果的快速而稳健的度量,而不是精确的定量测量。
如果您的 GNU/Linux 系统尚未安装任何音频应用程序,请参阅资源部分,其中收集了互联网上的地址。在那里,您会找到像 smix 这样的应用程序,这是一个具有良好设计的用户界面的混音器。它可以处理多个声卡,并具有严肃工作所需的功能
交互式图形用户界面
命令行界面
配置文件设置
对于您的声卡来说,记录的信号来自声学麦克风还是工业传感器都没有区别。任何来源的信号始终存储为在固定时间间隔(即,时间上等距)测量的值序列。例如,CD 上的声音信号以每秒 44,100 次的频率采样,从而每 1/44100 = 22.7 微秒产生一个(立体声)值。
虽然音乐家可能对数字滤波这些信号(从而使它们失真)感兴趣,但我们更感兴趣的是找到和分析测量的、未失真的信号的属性。我们正在努力寻找控制采样值序列变化的规则。非线性信号处理中用于寻找运动规律的主要工具是 延迟坐标嵌入,它从单个时间序列创建所谓的 相空间肖像(图 1 和图 2)。如果您对技术细节不感兴趣,您可以将其视为一种工具,它将采样数字序列转换为空间曲线,空间中的每个方向代表一个独立的变量。如果您对技术细节感兴趣,您将在 相空间 侧边栏中找到它们。无论如何,您都应该查看新闻组 sci.nonlinear 的常见问题解答列表(请参阅资源)。这些解释了基本概念和一些误解,并提供了进一步阅读的资源。
在深入研究多维空间之前,让我们看一个例子。将麦克风插入声卡插孔,对着麦克风吹口哨,并使用任何免费提供的声音编辑器(请参阅资源)录制口哨声。生成的录音看起来非常像图 3 中的正弦波。您录制的波形看起来类似于图 3 中摆锤的波形,这并不奇怪。振动物质(气体或固体)可能不同,但运动规律非常相似;因此,波形也相同。
您可以从 Linux Journal 的 FTP 服务器下载一些软件,该软件可以记录您的口哨声并为您进行相空间分析(请参阅资源)。该软件不是显示波形,而是仅提取信号的重要度量,这些度量可以帮助您改进测量(图 4)。请记住,我的目的不是向您展示如何呈现令人惊叹的、光鲜亮丽的图片;相反,它是为了演示当在现场分析真实世界信号时,您的 Linux 机器是一个多么有价值的工具。
通过键入以下内容启动软件
wish -f embed.tcl | dmm
将弹出一个窗口,看起来像图 4。在此窗口中,您可以控制软件测量来自麦克风的口哨声的方式。您可以从左到右更改采样率(单击 44,100Hz)、分析块的长度(单击 1 秒)以及参数 tau 和 de,这些参数是用于从仅一个测量的信号重建 相空间肖像 所需的。这与图 1 的位移相当;我们这里没有速度测量。
每次我们分析未知信号时,我们都必须从对两个参数进行一些有根据的猜测开始
tau 是空间坐标之间的时间距离或延迟
de 是重建的相空间的维数
这些参数对于信号在重建的相空间中良好展开至关重要(请参阅侧边栏 嵌入)。在图 5 中,您可以看到 tau 的选择如何影响肖像。太小的值无法展开肖像;未显示太大的值,但通常会导致毫无意义的(嘈杂的、不相关的)肖像。该软件支持您找到 tau 和 de 的良好值。经过多年的深入研究,科学家们仍然依靠一些启发式方法来选择这些参数的合适值。
在您的口哨声的特定情况下,图 4 中的值应该会很好地展开肖像。不要担心填充终端窗口的文本行。它们是检查展开质量所必需的。通过键入以下内容重新启动软件
wish -f embed.tcl | dmm | wish -f out.tcl
文本行将被转换为图 6 中更易读的形式。在现在弹出的附加窗口中,您将看到几列。在左侧(灰色),重复了第一个窗口的独立参数。从左侧起的第二列告诉您,测量的信号的响度是否已很好地调整到声卡输入的灵敏度。一般规则是,只要第二列中有红线,您就必须调整灵敏度(使用单独的混音器软件)或响度。现在,转到第三列,我们看到更高级的参数
Spread 是以 AD 转换器单位测量的最大值和最小值之间的差值。小值表示信号强度不足。
Inf 是每个样本的平均信息内容,以比特为单位测量。恒定的基线信号产生 0 比特(最小值),而随机噪声具有 8 比特(使用 8 位采样的最大值)。
MutInf 是一个样本和延迟样本的平均互信息。因此,它告诉您图 5 中两个轴的信号有多么 相似。值为 1 表示它们完全耦合(在概率依赖性的意义上),0 表示完全独立。
AutoCorr (自相关)是另一种相似性度量。自 20 世纪 80 年代后期以来,一直存在一个(有问题的)经验法则,即接近 0 的值表示重建的肖像的良好展开。最大值为 1。
PrErHy 测量信号的可预测性,因此也测量信号的确定性。预测的底层算法是传统的线性预测滤波器,就像许多自适应滤波应用(如调制解调器)中使用的一样。最小值 0 表示完美的(线性)可预测性,而最大值 1 表示通过线性滤波完全不可预测。
同样,规则是,只要第三列中有红线,相空间就没有正确重建。现在,转到最后两列,您会注意到它们看起来相同。的确,它们是相同的。区别在于:当评估第四列的参数时,软件使用反转的时间轴。当反转时间时,即交换过去和未来,预测变为后测,反之亦然。反转时间轴是检查特别容易受到测量误差影响的参数有效性的简单有效方法。一般来说,如果时间反转改变了参数,则该参数不可信,这使我们得出下一个参数
如果 FNearN (错误最近邻居的百分比)是可靠的,则线条将变为绿色,并且在两列中都相同(接近 0)。否则,它将变为红色,并指示当更改参数 de 时,相空间中点的邻域关系未得到保留,这表明嵌入不足。
PrErLi 是在整个数据块上重新计算参数 PrErHy 的结果。它们应该始终大致相同。如果不是,则必须有原因,并且事情变得有趣。
PrErN 使用非线性预测算法测量可预测性。来自线性系统的信号通常通过 PrErLi 更精确地预测,而来自非线性源的信号通常通过非线性预测更好地预测。
MaxLyap 测量相空间中附近点的分离(随时间推移)。根据定义,大于 0 的值表示混沌。
当测量来自非线性系统的信号时,PrErLi 通常会变为红色(表示线性可预测性不足),而 PrErN 保持绿色(表示非线性可预测性足够)。在真正的混沌信号的情况下,MaxLyap 将变为绿色(有效),并且在最右侧的列上具有相反的符号。这表明当时间向前移动时,附近的点正在随时间推移而分离,并且当时间向后移动时,它们以相同的速率相互接近。
目前,参数和值的数量可能令人感到不知所措。如果您从玩弄软件并实际分析现场的一些信号开始,您将很快熟悉参数及其颜色和列。第一次,您应该只查看图 6 中最左侧的两列。那里的所有参数都具有直观的含义,您将很快能够预知当应用于不同的信号、削波信号或过采样信号时,它们会如何变化。以下是一些典型情况以及如何识别它们
正弦波:就像在图 6 中一样,de (嵌入维度)应为 2 或 3。Mean (即,平均值)和 Median (即,“中间值”)是相同的。Modus 在 Maximum 和 Minimum 之间来回跳跃。如果 Spread 达到其最大值 (256),则 Inf 接近 8(比特)。
零基线(短路或关闭)可以通过查看第 2 列来识别。所有值都相同。在第 3 列中,Spread 和 Inf 几乎为 0。
打开麦克风时,会有一个短暂而尖锐的脉冲,导致 Spread 突然变化;其他变化很少。
锯齿波(图 7)看起来很像正弦波,除了 Modus 之外,它会疯狂跳跃。MutInf 处于最大值,线性预测仅适用于高阶滤波器,而非线性预测在低嵌入维度下效果更好。
噪声有许多不同的类型,所有这些类型都具有较低的 AutoCorr 值,并且大多数都具有较低的 MutInf 值。
为什么不计算信号的某种 分形维数 呢?根据定义,维度的计算必须查看广泛尺度范围内的值。使用 8 位分辨率,这是不可能的或值得怀疑的。但是,即使我们有一些 分形维数 值,它也不会像最大的李雅普诺夫指数那样有用。此外,所有这些测量都好吗?是的,有一些应用领域
系统辨识:在某些应用中,注意力更多地集中在信号的质量上(随机的还是确定性的,线性的还是非线性的,混沌的还是非混沌的)。
预测:如今,线性预测是电信领域数字信号处理器 (DSP) 最重要的算法之一,无论是移动电话、调制解调器还是噪声消除。如果涉及到具有非线性行为的系统,则非线性预测可能是有利的(请参阅侧边栏“确定性、预测和滤波”)。
控制:如果您足够了解系统的相空间结构,您可以尝试像这样控制系统
识别相空间中的周期轨道。
寻找满足给定要求的轨道(穿过某个点,或具有最小能量或成本)。
稍微修改合适的参数或变量,以稳定所需的周期轨道。
当 Ott、Grebogi 和 Yorke 在 1990 年首次发表这种方法(称为 OGY 方法)的成功应用时,他们甚至设法在混沌存在的情况下控制系统。
在 20 世纪 90 年代后期,一些人分析了金融市场的时间序列,以寻找非线性或混沌的迹象(例如,Blake LeBaron 在 Weigend 和 Gershenfeld 的书第 457 页中)。有些人希望能够以这种方式预测股票价值的时间序列。Kantz 和 Schreiber 将这个想法向前推进了一步,并考虑将 OGY 方法应用于控制股票市场。但在他们书的第 223 页的脚注中,他们承认,“我们尚不清楚是否有任何尝试控制股票市场。” 当我在 1999 年末查看 Red Hat 股票的图表时,我想知道是否有人最终设法将 OGY 方法应用于 Red Hat 股价的时间序列。
电子邮件:Juergen.Kahrs@t-online.de
Juergen Kahrs (Juergen.Kahrs@t-online.de) 是德国不来梅 STN Atlas Elektronik 的一名开发工程师。在那里,他使用 Linux 为教育模拟器生成声音。他喜欢 GNU AWK 和 Tcl/Tk 等老式工具。Juergen 还为将 TCP/IP 支持集成到 gawk 中做了初步工作。