罗兰关于MATLAB的艺术

将想法转化为MATLAB

介绍信号分析仪应用程序

今天,我的客座博主是Rick Gentile,他是我们信号处理产品营销组的工程师。他将介绍一个新的应用程序,让你能够快速了解你的数据。

内容

介绍

信号处理工具箱已经帮助MATLAB用户生成和处理信号很多年了。在我们最近的版本中,我们扩展了在时间、频率和时频域分析和比较信号的能力。现在,您可以使用这些功能来洞察您的数据,这可以帮助您开发和验证算法。

开始使用信号分析仪

信号处理工具箱提供了函数和应用程序来预处理,探索和提取信号的特征。我们最近增加了信号分析仪应用程序到工具箱,使它非常简单,为您可视化和比较多个,基于时间的信号,生活在MATLAB工作区。你可以通过应用程序同时收集信号在时间和频率域的特性。你会发现这在数据分析和机器学习应用程序中非常有用,在这些应用程序中,识别模式和趋势、提取特征和开发自定义算法是工作流的关键方面。

为了演示该应用程序的一些新功能,我选择了易于可视化和理解的数据。下面这个简短的例子是基于你可能熟悉的数据集,蓝鲸呼叫。该文件bluewhale.au包含来自太平洋蓝鲸的音频数据。该文件来自于动物发声库,由康奈尔大学生物声学研究项目. 数据中的时间刻度被压缩了10倍,以提高音调并使呼叫更加清晰。

首先,我将数据读入MATLAB工作区。注意,您可以使用该命令声音(x, fs)在代码中,我启动信号分析仪来自应用程序选项卡在MATLAB环境工具条的顶部。我也可以通过打字来完成signalAnalyzer在MATLAB提示符处。

WhalFile=fullfile(matlabroot,“例子”“matlab”“蓝鲸,au”);[x, fs] = audioread (whaleFile);signalAnalyzer

探索你的信号

在下图中,应用程序打开后,我拖动信号x直接从工作区浏览器(应用程序的左下部分)进入显示区域。

所记录的数据包括四个感兴趣的信号成分。第一种通常被称为“颤音”,大约包含前10,000个样本。接下来的三个声音被称为“呻吟”。

你看到信号分析仪应用程序在下面的图片与时间,频谱和平移轴启用。中间的坐标轴表示信号的频谱。底部的轴包含一个平移器,您可以在其中缩放和导航到感兴趣的鲸鱼调用。

提取感兴趣信号

然后打开数据游标,查找每个声音在数据中的位置。接下来,我使用这些信息提取向量和感兴趣的信号片段。下面的代码根据特定呻吟的开始和结束提取这些向量。在数据分析应用程序中,这类似于探索数据集并在数据流中找到感兴趣的条件。

moan1=x(24396:31087);%提取呻吟1的信号moan2 = x (45499:52550);%提取呻吟2的信号moan3 = x (65571:72571);%提取呻吟3的信号

洞察你的数据

您可以使用Signal Processing Toolbox函数对数据进行一系列操作,包括查找更改和异常值、过滤和平滑,或在数据缺失的地方填充空白。信号处理工具箱还具有基于相似性度量在较大信号中查找信号段的功能。让我们看看如何使用它来自动化上面手工执行的工作。

findsignal函数返回数据数组段的开始和停止索引,数据,它与搜索数组最匹配,信号.最佳匹配段是这样的经销时,线段与搜索数组之间的欧氏距离最小。请注意,当没有指定输出参数时,信号处理工具箱中的许多函数可以方便地生成绘图。您将在下面的代码中看到,我在其中重复了一些指令以利用这一点,但如果只需要绘图或输出,则不需要重复这些行。

首先,我进一步观察了这款应用的兴趣信号。如下图所示,我通过简单地拖动来比较三种鲸鱼的叫声莫阿尼呻吟,呻吟直接进入显示区域。这三种声音在时域上重叠在上轴上。底部的坐标轴提供了这三个事件的重叠光谱。从这个角度来看,这三种现象的呻吟谱看起来比它们的时域对应物更相似。这表明,使用频率内容而不是通过它们的时域表示来寻找信号可能是最好的方法。

根据这个直觉,我现在试着用findsignal光谱图作为输入,查看其是否将感兴趣的信号与其他事件的光谱匹配。首先我看整个信号的频谱图。颤音和呻吟声在图像中可见。

光谱图(x,kaiser(64,3), 60, 256, fs,“桠溪”查看原始信号的声谱图

在数据中寻找信号

我现在计算整个信号的声谱图和参考声谱图的基础上,第一次呻吟,并把这些喂给findsignal以便找到所有呼叫信号的发生情况。

[~,F,T,PxxSignal] =摄谱图(x,kaiser(64,3), 60, 256, fs);[~,F,T,PxxMoan] = spectrogram(moan1,kaiser(64,3), 60, 256, fs);findsignal (PxxSignal PxxMoan,“正常化”“权力”“TimeAlignment”“dtw”“指标”“symmkl”...“MaxNumSegments”3);

后果

大家可以看到findsignal返回三个匹配项。图中突出显示了每个匹配的开始和停止索引。这证实了我们通过查看数据得到的直觉信号分析仪.为了完整起见,我使用输出参数进行了相同的调用,以捕获每个匹配的开始和停止索引。有了这些信息,现在在MATLAB工作空间,它是更容易自动化的信号提取较大的信号,特别是如果有更多的信号段寻找。自动生成这些位置将节省您通过自己的信号导航的时间。

[istart,istop,d]=findsignal(PxxSignal,PxxMoan,“正常化”“权力”“TimeAlignment”...“dtw”“指标”“symmkl”“MaxNumSegments”3);%获取每个匹配的开始和停止索引

了解更多关于信号分析仪

您还可以使用许多其他函数来提高数据质量。这些功能都可以以类似的方式使用,结合应用程序,可以让你更深入地了解你的数据和信号集。

你也可以在应用程序上找到更多信息在这里

我希望这个例子能帮助您理解如何可视化和比较多个基于时间的信号,并找到有趣的特征。这对你的工作领域有帮助吗?让我们知道在这里




发布与MATLAB®R2016b

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。