Gabriele Bunkheila,Mathworks
在许多研究和开发领域,信号普遍存在。工程师和科学家需要处理,分析和提取时域数据的信息作为日常责任的一部分。一系列预测分析应用程序,信号是机器学习系统必须能够利用的原始数据,以便创造理解和信息。
在本视频中,我们展示了一个分类系统的示例,该系统能够识别人类主体所从事的身体活动,仅基于其智能手机生成的加速计信号。我们使用整合的信号处理方法来提取相当少的高度描述性特征,并最终训练一个小型神经网络,将特征向量映射到预记录数据集的六个不同活动类别中。我们展示了如何联合使用MATLAB®图书馆函数有助于提供高性能结果,只需少数设计迭代和简洁,即明确的代码。
讨论的主题包括:
您好,每个人,欢迎使用MATLAB获取机器学习的信号处理技术的网络研讨会。我的名字是Gabriele Bunkheila,我是Mathworks的高级应用工程师。我的工作中的一大部分是关于帮助Matlab用户在信号处理领域,这是我的背景的位置。
因此,当人们谈论信号时,它们通常会引用一些表示随时间变化的值的某些特定类型的数据。在本网络研讨会中,我将讨论Matlab中可用的一些标准技术,以获取信号的定量测量并在更广泛的数据分析工作流程中使用它们,包括例如机器学习算法,如聚类或分类。
在本次网络研讨会结束时,我希望你们已经对一些标准技术有了一些熟悉,从一些简单的事情开始,比如基本的信号处理和可视化,包括绘制、检查和选择信号的部分,然后到简单的统计估计,然后是更高级或更具体的信号处理主题,比如,使用数字滤波器,来分离信号的单个组件或计算频域变换以进一步了解信号随时间的变化,最后,自动测量信号并从时域信号中提取群敏感特征。
这里的想法是从实际波形的蒸馏信息,并使用户可以在机器学习区域中产生对数据的了解的进一步算法。此列表中的技术很重要,因为它们对许多数据分析和算法设计工作流是常见的。尽管与许多工程师的工作相关,但其中许多人经常觉得他们有挑战性。即使是实际的事实,如果使用合适的工具,它们也很容易到达。
现在,当我有更多幻灯片来向您展示 - 对于大多数这个网络研讨会,我将在Matlab讨论一个单一的实用例子。让我切换到MATLAB一分钟,然后快速描述这个例子是关于的。在这一持续更新的剧情中,我们正在查看使用手机捕获的三个加速度计输出信号,就像智能手机一样,您现在可能遇到的智能手机。
我们看到的信号对应于佩戴智能手机的人或受试者进行的不同身体活动。在这种情况下,我们碰巧知道基本真相。但我们也在尝试使用计算方法自动理解这是什么活动。这完全是基于对信号的测量。
正如您所看到的,我们大部分时间都成功地猜测了实际的活动。现在,只需快速注意到我在此示例中使用的数据被记录,因此我们不必等待新数据就绪。我们可以一旦我们使用前一个完成,我们就可以立即到达下一个缓冲区。
因为我将非常高效地执行所有必需的计算,在我的笔记本电脑上,这使得它的运行速度比实时快了不到100倍。想想看,这是相当快的。我还想说的是,你们也可以很好地利用数据来做我刚才展示的。
MATLAB长期以来一直能够连接到各种专业的外部硬件,以获取真实世界的信号。如今,它也越来越能够连接到移动和低成本设备。例如,MATLAB Central上的文件交换™ 提供免费下载,从iPhone和Android将传感器信号传输到MATLAB™ 基于智能手机。如果你感兴趣的话,请看一下。
现在在这里看,在这里,在这里,虽然这恰好是加速度计数据,但即使我们不得不考虑共享类似分类的应用,我将讨论的技术也与大多数类型的样本信号或时间序列相比广泛相关捻。
这里,我在此简短列表中收集的例子已经涵盖了许多不同的行业,例如电子,航空航天,汽车,金融,防御或航空航天。所以这些是我在MathWorks职业生涯中遇到的申请。但是,综合清单将要长得多。
现在再一次,我把这个概念放在一起的原因是,即使信号分析对于许多应用和行业都是常见的,许多人仍然没有做得好。一个原因是,如果他们没有在UNI上学习信号处理,那么与信号分析相关的各个技术通常声音令人生畏。研究它们通常意味着必须学习许多特定于域的术语。
有些时候,它提前一直在清楚的是什么类型的分析会给你你正在寻找的答案,使得问题开放。最后,计算效率(缺乏广泛的算法库或刚性框架)等问题使许多人使用的一些常用工具在完成甚至中等复杂性的任务方面没有足够的方法。
我希望在会议结束时,您可以品尝为什么Matlab可以解决这些挑战,并且是这种类型的工作。在我回到Matlab之前,让我再次审查我们的榜样。我们正在使用来自智能加速度计的三个组件加速信号。
并仅基于对这三个标量信号的自动分析,目标是了解哪个活动的人在佩戴手机的人实际上是在六种不同的选择或课程之间进行选择,走上脚,走楼下,沿着楼下,坐着,站立和铺设。
为此,我们使用了一种分类算法。这是一类算法,可以根据一组合理的相似数据样本的先前知识来判断新数据样本属于哪一类。其工作方式是,首先将算法暴露于大量已知案例中,并对其进行训练或优化,以便尽可能准确地识别这些已知案例。
然后可以在新的未知数据样本上运行,例如,在这种情况下,新的单个缓冲区。如果达到,新的单次缓冲可以根据以前的经验在右类上制定猜测。现在事实证明,如果使用的数据和这里我正在谈论训练和测试步骤 - 是实际的原始波形,则分类算法的作业将非常硬或通常不可能。
在实践中,在实际分类之前发生的一个非常重要的步骤与提取来自波形的无限表征测量结果有关。例如,在这种情况下,这些测量应该能够捕获能够区分由不同载体产生的给定活动产生的信号的定量描述。
在机器学习的语言中,这种类型称为特征提取。该特征是来自信号的一组测量值。本网络研讨会的主要目的是识别主要基于信号处理技术的良好特征,也可以使用MATLAB语言自动化测量。
现在,最后要注意的是——为了选择正确的特征集,通常要使用已知的数据集——例如,在本例中,一个来自控制实验的数据集,我们已经看到,每个缓冲信号样本的活动都是已知的。数据的知识是特征选择初始探索阶段的关键。
对于这个例子,我正在使用两种研究小组提供的良好数据集,即意大利西班牙和热那亚的加泰罗尼亚。如果您有兴趣,您可以在下面的此地址中获取数据设置的数据。
所以我希望现在一般问题足够清楚。让我们更详细地看到我们如何使用MATLAB开发解决类似挑战的系统。要探索此示例,我将使用Matlab脚本。我将假设您熟悉Matlab中的脚本和函数。但是,如果你不是,你不需要太担心太多了。这些很容易掌握概念。
我希望你能够得到这个演示的核心思想。您在这里看到的所有内容都是诠释了该代码正在做的评论。您可以看到要将线路变为评论,您必须在它的开头使用百分号。例如,在此,在此,在此处,创建一个代码的单元格单元格,可以在隔离中突出显示,并且在编辑器中突出显示。
在这个脚本中,我有许多单元格,我将一次一个连续地执行和讨论这些单元格。脚本的第一个单元格是启动我已完成的应用程序的单元格。所以我不会再执行它了。下面的单元格加载部分数据并进行打印。
在这里,我有一个函数,我以前写的是从我们的数据集中读取一些数据并返回特定的变量集。结果,我们现在在一段时间内具有包含主题编号的垂直加速度的样本的向量x。值得注意的是,该地区套装自身录音来自30个不同的科目。
我们知道加速度信号每秒有50个采样,因为采样频率是50赫兹这里用变量fs表示。时间向量t也对应于加速度向量。两个t和x有完全相同的长度,这让我们可以把前者和后者画出来。
如果我看一下这个图以及它是如何实现的,这是一个很容易在MATLAB中实现的图。第二,只有一行短的代码来产生x变量,y变量。顺便说一下,如果您对立即使用MATLAB语言没有信心,也可以通过指向和单击来实现,例如,首先选择t,按住Control键,插入x。然后我用鼠标右键单击,选择“喜欢打印”或进入此处的“打印”选项卡并单击“打印”。
情节表明,记录了对象的加速近八分钟,这将是480秒。还值得注意的是,在某种程度上,这是一个简单的案例,你知道,时间样本已经过时定期间隔。所有这些都可以在许多现实世界应用中提供。一些样品可能缺失。所以我至少应该提到Matlab中还有其他技术来规范和重新处理这些类型的信号。
现在回到剧情 - 如果您熟悉在Matlab中的绘图,您将知道图形可以相互作用和以编程方式广泛定制。我不会在这里经历这个过程。在以下代码部分中,我将使用先前写的函数来产生稍微富有洞察力的情节。
除了具有现在的声音轴标签,标题和传奇之外,此绘图还在还使用关于我工作空间中可用的数据的其他信息,特别是变量动作ID,这是活动ID的速记。这告诉我们主题在每个单个数据样本中从事拍摄对象作为一个和siz之间的整数的活动。我们可以通过查看剩余的变量ACT标签来解释这些整数的含义。
如果我们回顾我们刚刚生产的剧情,这看起来非常类似于我们的最终目标,这是关于猜测每一部分信号的活动。或记住在这种情况下,这是已知数据。在这里,我们尚未猜测,但只能可视化一些已经可用的知识。
现在真正的问题是我们不知道每个活动是什么吗?我们将如何根据信号的数值分析解决问题?我认为这个剧情已经非常有用,因为它肯定会显示这种加速信号在涉及不同活动时会有所不同。
只是通过视觉检查这个剧情,我认为我们已经可以识别一些模式。例如,主体上部垂直呈现的所有活动似乎具有偏移或平均值为每秒10米的平方。这非常接近G,其理论值实现每秒9.81米的平方。
所以我想我可以自信地说这是由于引力场的垂直分量。当主题坐在时,似乎发生了略微的例外。但是,每个人都总是坐起来,可能取决于你坐的程度舒适。您可以向前或向后弯曲,这解释了较低的平均值。
另一种模式是来自行走活动的信号 - 无论是普通的行走,爬楼走,走在楼下 - 围绕它的价值远远超过其值,而不是在站立或坐姿等垂直位置中的更多静态活动。基于这些考虑,如果我们想为自己为自己工作,在某些情况下,这可能很直截了当。
例如,我们可以通过计算与阈值相比,通过计算我们缓冲中的样本的平均值来轻松区分。如果它低于说,五,它铺设了。否则,这是其他人之一。
我们还可以通过观察信号的统计数据来更严格地量化这一点。在这种情况下,单个直方图将证明这个点——直方图显示了在一个有限的间隔内出现的值的数量。顺便说一句,让我说明一点——从头开始制作这样一个仪器图需要相当多的努力。例如,您可能需要遍历数据,为每个数据样本查找值落在哪个区间,并为该区间增加这个值。
而是在我的这个功能下面,内置函数直方图正在做所有的努力工作。其余的代码只是在彼此顶部安排两个曲线并自定义外观。因此,您知道功能直方图是引入并释放了MATLAB的R2014B,它提供了一种新的,更有效的绘制直方图。
顺便说一下,还假设计算平均值,一些偏差的根均比值将容易。因为matlab是。如果您使用不同的环境或没有数学支持的通用编程语言,则可能会发现您有很容易的操作,这些操作可能需要有点点击或至少关于基本数学的新记忆,并开始调用这些金宝app从头开始。
现在回到类似的方式易于区分不同的活动。我们可以轻松地基于其他测量来分离站立和行走,例如,例如标准偏差或作为该另一个直方图所示的根均方向值的标准偏差或RMS。
但是,如果我们不得不在这种情况下散步和走上楼之间的差异,那么呢?这就是我们所看到的。对于这两个,我会说,这在这种情况下显示了类似的平均值和类似的标准偏差。如果您了解统计数据,您可能会思考更高阶时刻更有的东西可能会给我们更多信息。而且我猜你可能想要继续热情,因为从统计观点来看,如果你在这里看各种科目,你很快就会意识到这两件事几乎是一样的。
所以对我来说,这里的主要外卖是为了区分这两个统计分析的信号是不够的。真的,我们需要做的是看看事情随着时间的推移,因为这将允许我们测量像信号加速信号的振荡速率。
例如,这对人们移动得更快的假设可能是有用的,例如,当他们在楼下走下楼时,他们在楼上走上楼或甚至振荡自己的形状时。如果我们认为在滑动普通行走的同时完成的运动类型与捕获的方式不同,这将是相关的,例如,在落下楼梯时。
为了准备随着时间的推移分析变化,需要进行一个重要的观点。我相信我们已经建立了我们有两种主要类型的原因,这些原因有助于数据集中的加速信号。一个是对象相对于引力场的对准,另一个是由它们的主体运动产生的能量。
两者之间的一个大区别是重力贡献几乎是恒定的。如果我们想要减少自信,我们可能会说轴承更慢。相反,身体运动是更快的。当我们专注于信号如何随着时间的推移而变化时,我们非常希望限制我们对身体运动产生的贡献的关注,因为这就是我们试图对的贡献。
然后他们的相关问题是,有没有办法将现在混合在一起的两种贡献,以便我们可以查看,分析每个人?虽然存在这种任务的情况非常困难,但对于各种实际情况,标准方法是设计和应用线性数字滤波器或简单的数字滤波器,以便短,因此数据。
当我们想要隔离或删除的信号分量时,数字滤波器特别好在随时间的变化率或使用一些更具体的术语,通过其所谓的光谱频率域分量来定义。在这种情况下,例如,我们希望只保留由于身体运动引起的贡献。让我们说那些比每秒大约一个振荡更快的人。这是关于平均助行器的每秒步骤的数量。
我们希望丢弃具有较慢变化的贡献。在单个处理术语中,这意味着愿意设计并应用于适当的高脉冲滤波器。当我们经历过程时,我会重复这些想法。
现在,如果我不得不使用一种通用语言,而没有特定的信号处理库,那么设计和应用数字滤波器的任务将非常艰巨。特别是在设计阶段,需要相当多的数学知识和许多特定领域的知识。在MATLAB中,有许多不同的方法可以用来设计数字滤波器。
例如,您可以选择完全通过编程来完成,这意味着使用MATLAB注释或实际上使用内置应用程序。让我们首先看看后者是什么样子的。当你第一次处理一个问题时,使用应用程序通常是一个好主意。要做到这一点,我到MATLAB工具栏的Apps标签,向下滚动到信号处理和通信区域。
在此,我们将选择过滤器设计和分析工具。对于更高级的过滤器设计,您可能还想尝试过滤器构建器应用程序。过滤器设计分析工具由几个部分组成。例如,此筛选器规范窗格将帮助我们为我们的过滤器指定正确的要求。在这里到左边,我们开始定义我们正在寻求实现的目标。在这种情况下,我将选择高通滤波器,但您可以看到很多选择也是可能的。这是通过标准的低通,带通,带停止过滤器,以及一系列更先进的设计。
现在在这里进一步下来,我们被要求在FIR和IIR之间进行选择。这些是数字过滤器的两个主要的大家庭。如果您了解数字过滤器,您可能对其中哪一个选择,并且此处列出的设计方法将共鸣。
我将跳过详细信息,我只需使用此选项。然后我向右移动,我继续捕获上面规范窗格的帮助。我要说的事情包括,我们正在使用50赫兹的采样频率。我们希望保持不妨碍 - 也就是说,我们希望衰减1或0 DB-All信号分量比每秒一个类型或1赫兹更快地振荡。
让我们实际上稍微慷慨,并将这个FS值设置为0.8赫兹。我们还希望确保该文件左侧的所有内容小于F传代F STOP至少由给定数量的DBS衰减。我会把这个设置为0.4,并相应地这个停止到60 dB。这确保所有振荡速度慢于0.4赫兹或每秒的时间,通过滤波器比较小1,000倍。
最后,通过按下设计,我们实现了一个过滤器,满足我们的要求,我们有一套分析工具,可以在这个应用程序中验证过滤器的行为是预期的。例如,现在我们在研究所谓的频率控制响应。如果我需要确认这是符合规格,我可以覆盖规格掩模和放大与滤镜所有者的要求。你可以看到0.4,0.8。
或者如果我想了解运输行为,通过此按下按钮,我可以访问像脉冲响应或阶跃响应等的内容。一旦我的过滤器设计,我真正想要做的就是将它应用于我的信号。请记住,在这种情况下,由于加速度计与引力场的对准,目标是摆脱缓慢的贡献。
要使用MATLAB代码使用此过滤器,我可以选择两种类型的方法。我可以转到文件并将过滤器导出到MATLAB工作区作为一个或多个变量。或者我可以生成一些MATLAB代码,以通过程序方法来实现我刚刚交互方式的所有代码。
您在此处看到的代码刚刚自动生成。但是,要注意的事情是我可以刚刚决定独立使用类似的评论。并自动为我生成这种生成,也可以帮助我获得一些洞察力,因此我周围的下次可以更快地以编程方式设计我的过滤器。
但更重要的是,它现在可以通过使用此功能代码来实现从我的代码中实现过滤器的快速方式。我不会丢弃这个函数,因为我之前已保存的版本已在我的工作中可用IT文件夹,称为HB Filter。
你可以看到这看起来就像我们刚刚生成的那样。返回到我的脚本,您可以通过使用一行代码通过我的预先函数创建过滤器。在下一行中,我正在将字段播放到我的垂直加速度。这创造了一个新的信号,我们希望只发现由于身体运动导致的贡献。如果我执行该部分,
我还绘制了对原始的新滤波器信号。在块中,我们可以看到新信号现在全部居中0,由于重力,没有偏移。每次新活动都开始时,您也可以看到一些瞬态行为。这完全正常。并且可以在几分钟前在设计时详细定量过滤器。
所以现在我们可以重新开始分析信号随时间变化的行为。让我们再回顾一下我们要做的事情。我们试图选择一套合适的测量方法来捕捉不同活动产生的信号之间的差异。
为了调查哪些技术更有可能是有效的,有用的事情是单独看待个别活动。我想向您展示一个非常有效的方法,基于我们称之为逻辑索引的Matlab中的一部分信号。例如,当我看这个曲线时,我想将这部分信号隔离相对于行走。
该信息一旦这些样本存储在我的工作区中的矢量ID中。因为这里我们有一个以上的一项活动的一个例子,我们可能会说我们只想要那些样本,比如,比如少于250毫秒。如果我们正式化我刚才以普通英语说的话,那就转化为这一代码。
这里的结果是与其他地方的感兴趣区域中的信号和零的信号相同的传染媒介。当我们使用此向量索引到我们的信号或实际时间向量时,结果是我们感兴趣的信号的单个信号。
现在我们可以更详细地轻松地看待这个步行段。我们可以放大并确认信号定期振荡。粗略地说,可以说信号是序数周期性的。
现在是一个很好的问题,我如何测量这是振荡越来越快的速度甚至捕获关于这种振荡形状的定量描述?并且通过观察其光谱表示来将信号转换为频域来实现良好的答案。
例如,我现在认识的很多人都会加入计算NFFT的想法,NFFT是快速傅里叶变换的缩写。事实上,孤立地使用简单的FFT算法所得到的结果离真正有用仍然只有几步之遥。
更一般来说,您要查找的是称为光谱密度或功率谱密度。你现在知道如何从头开始计算那个吗?您可能会根据FFT功能的可用性而进行,它配备了基本MATLAB安装。但更一般地,如果您知道操作的名称或您需要使用的算法,那么您可以在此处搜索MATLAB文档或此功能浏览器。键入频谱密度在这里带来了大量的函数名称。
例如,这里我识别我记得从威尔士的UNI记住的特殊密度估计方法的名称。有关如何使用此功能的一些快速指导,我可以将鼠标悬停在其名称上并浏览左侧的上下文指南。
或者我可以遵循完整文档的链接。这里可以使用语法列表。我还可以找到关于与讨论技术主题的相关页面的算法和链接的解释,例如这里,频谱分析中的一个页面,包括对主题的简介,可用的方法列表以及讨论当每个特定方法更合适时。
现在回到我的脚本,只是在我的信号上运行这个p威尔士函数,并指定采样频率给了我一些很快的洞察力结果。产生的东西是这样的图。在X轴上,我的采样频率的0到一半的频率为50赫兹。在Y轴上,我的电力密度为赫兹的DB单位。
和该地区的区域较高时可能携带我以后的信息。在这种情况下,在0到10赫兹之间的这种峰值模式是关于我们时域振荡的速率和形状的大量可测量信息。
对于那些至少有点熟悉信号理论的人来说,即使在这种情况下,它也可能是用乐器产生的信号的并行信号,即使在这种情况下也不是一个声音信号。在这里,您将谈论大约1赫兹的基本频率,并且在该频率的频率倍数左右的谐波。
这些峰之间的频率的距离告诉我们我们的信号振荡速率,并且峰的相对幅度与振荡的形状密切相关,有点像被称为音乐信号的木材。为了验证这些陈述,让我绘制频谱在楼上行走的频谱,并将视图限制在0到10赫兹之间的范围内。
我在这里注意到,走路楼上的山峰在一起更近,向左推,告诉我,在这种情况下,振荡速度较低。此外,基本右侧右侧的峰值的幅度很快地减少,告诉我,走路上楼的振荡的形状突然突然,几乎光滑,更类似于一个简单的正弦信号,理想地由刚刚形成一个单峰。
因此,那些峰值的位置和幅度携带描述性定量信息,如果测量,则构成良好的描述性功能。为了进一步说服自己,我还可以比较Spectrum如何在数据集中的30个科目中的所有工作信号看起来。尽管这里用于垂直轴和所产生的曲线的不同尺度,但实际上,您可以看到前几个峰值的位置及其相对缩放的位置在可用的30个录像中相同。这是我数据集的30个不同主题。
现在回到我们的频谱进行行走信号,我们的目标是在视觉上的目的地检查这个剧情,而是放置一个程序机制,以便我们可以自动化系统的每一部分信号测量的过程被介绍。
您可以看到从该图中提取这些峰值的位置和幅度的信息很容易,但如果您在生命中至少尝试过一次,那么您可能意识到它实际上并不像最初出现的那样容易。例如,可以通过使用MATLAB函数MAX以最大值快速获取最高峰值的位置和幅度,但随后从那里脱离差异。
幸运的是,MATLAB的信号处理工具盒具有称为精细峰的函数,该峰值是为此而构建的。现在,如果我们使用此功能精细的峰值而不提供任何其他信息,但我们的原始特殊密度,那么这就是它的回归。这是我在图中发现的完整本地峰。剩下的代码都不只是照顾策划。
虽然这尚不擅长我们所寻求的,但是如果我们努力定义这一点 - 例如,讲述它应该返回多少峰值,以及我们所要求的峰值突出的峰值是什么?我们预期的附近的峰值 - 那么结果会更加令人鼓舞。
并只是使用几行代码,我们现在具有可以自动化的程序测量方法,并且在我们的信号特征上具有高度描述性。在此用于光谱密度的速度测量方法也可用于其他类型的分析。
我想到的一个例子是自相关函数,这对于估计与单个采样频率相比非常低的基本频率特别有用。我只是去展示了一个快速的例子。
这就是我们行走信号的自相关方式的样子。自相关始终对称,中间高峰值,表示信号的能量。并且对于周期信号,中央右侧的最大峰的位置定义了信号的基本频率。
为了让我的观点更好,让我覆盖自相关曲线,沿楼走路,沿着楼下行走,并在右边的第一个峰值周围放大。这两个信号具有非常相似的频率,并且它们各自的第一峰可以相对良好地分离,至少用于彼此的采样周期。
再次计算自相关,我不需要记住任何公式,只需要一行代码。现在我可以继续讨论相关的度量和自动化策略,但是为了演示的目的,我将在这里停止。
一旦我选择了许多测量,我认为我的问题讨论了我的问题的不同类别之间的差异,我需要将其组合在一起,以便为每个新的单个缓冲区 - 我们会设置样本 - 我能够生产为该特定实例的所有测量或功能的集合。
这是我这样做的方式是,我收集了我们在叫做Buffer.M的各个函数的所有函数中都完成了所有步骤。这里用于每个新的缓冲区在三个方向上的所有加速度样本,我都在应用滤波器,计算平均值和rms值,然后使用辅助功能在此处计算协方差和频谱特征。
如果我在这里下来,你可以识别X COR进行自相关,查找峰值功能与P威尔士函数和类似的方式,找到峰值。这与几分钟前我们一起完成的内容非常相似,加上我尚未详细讨论的时间,这是一种简单地衡量振荡能量如何分布在功率范围内我的信号。
我真正喜欢这个函数是,如果我测量除了注释和空行的净数量,那么最多可达65行代码。在这里,我正在使用此日志功能,可免费提供MATLAB中央文件Exchange。
因此,此时回顾,现在对于每个新的信号缓冲区,我们有一种方法来提取包含表征信号的66测量的特征向量。此时,如果我们的问题足够简单,我们可能会考虑放置一些定制逻辑,这些定制逻辑查看要素矢量,并根据其中的值,实现猜测信号的正确等级是什么策略。理论上是可能的。
如果平均值大于X并且RMS大于y并且第一峰值的位置大于z并且第一峰值的幅度小于w,则该逻辑可能看起来像是那样,并且第一峰值小于w,那么信号由楼上行走,说。现实是,随着问题的复杂性上升,提出了这种手动逻辑机制非常不切实际。
另外,它也不能保证我们充分利用特征向量中的所有信息。这些特征被广泛使用的方式是通过我们之前说过的分类算法。有许多类型的分类算法,特别是在MATLAB中。在这里,我用的是神经网络。
在这里的一行代码中,我正在创建一个网络。如果您熟悉神经网络,您可能想知道在这种情况下,这种简单的语法创建了一种馈送前向网络,其中18个神经元的单个内部层,可选择这些魔术数字。但是让我们忽略这个简单的例子。
在这一行中,我正在使用我的一部分数据集培训网络。培训过程适应模型的内部参数 - 在这种情况下,网络 - 使其最佳地标识提供的信号段的正确活动。请记住,我的数据集将由记录的记录和已知活动ID值组成。在这里培训网络,我们都提供两者。
当我触发网络培训时,您就会注意到用户界面出现。这正在更新我们对培训过程的进度,并且对监测复杂网络的优化可能非常有用,这可能需要更长时间。在这种情况下,一切都很快就发生了。我的网络现已接受培训以对其以前从未见过的新信号段进行分类。
现在,我可以在新数据上运行网络,并定性地查看它的运行情况。我们现在终于来到了我们最初开始的地方。对于每一个新的缓冲区,我们在这里绘制加速度的三个分量,实时在线计算66个特征,最后使用我们的列车网络预测我们在做什么。
因为这些新信号仍然来自数据集,即使它们对我们的分类算法来说是新的,我们仍然知道它们属于什么活动,所以我们可以将我们的自动猜测与实际情况进行比较。
最后,为了真正评估分类算法的性能,我们通常会让它以批处理模式对数据集的一个新部分进行分类,以便一次对所有数据进行分类,然后计算一些统计数据,而不是像我们刚才所做的那样在线观察分类算法的运行情况。例如,直观总结分类算法性能的一种常见方法是混淆矩阵,我在本代码部分创建了混淆矩阵。如果我们想去掉一个数字,我们可能会从右边往下看,说我们的系统在测试集上的准确率接近92%。
更多通常,该矩阵显示给定目标类别和算法的猜测之间的所有耦合的计数,右猜测位于矩阵对角线和对角线的其余部分。例如,在这种情况下,这两个区域在这里显示出坐着和站立之间的重要猜测。如果我们想提高我们的算法的表现,我们可能会专注于识别更多功能,以确定有助于更好地区分这两个特定情况。
好的。此时,让我回到我的幻灯片。如果我不得不总结这个例子,我们的主要目标是识别从时域数据或信号中提取高度描述性功能的方法。我的三个主要外带是我们能够通过重用开箱即用的现有信号处理功能来完全这样做。总共使用仅65行代码自动测量66个功能。
我们也掌握了语言和内置可视化功能的优势,以建立有效的工作以及没有。通过这样做,我们能够快速地到达这项任务的底部。关于我们所做的内置功能的大量使用,我特别热衷于提醒您是让我们不得不重新发明的事情的数量。
如果我看看我们使用的示例功能,那么这些是我们将需要从网络中的一些底层公式,或者在网站上详细挖掘,并在Matlab中的代码。具有信号处理工具盒可用的允许我们简单地保存所有时间。
我们也占据了神经网络工具箱的优势,使我们能够在两行代码中建立和培训传统类型的神经网络。如果您曾经研究过神经网络,则可能会记得甚至培训具有基本优化算法的简单网络非常复杂,并且如果从头开始完成,则易于出错。
我还提到了神经网络全部代表了分类算法的特定可能选择。对于来自贝叶斯分类器的所有其他通用分类算法来支持向量机,看起来很好的位置是统计和机器学习工具箱™。金宝app
统计和机器学习工具箱还包括其他机器学习技术,如聚类或回归。
这让我达到了这个网络研讨会的结论。我希望你享受它,如果没有其他任何东西,至少我设法可以了解大量功能,可以使用Matlab及其工具箱可用的信号处理和数据分析。我也希望我能够传达可视化功能和内置Matlab应用程序的概念,毕竟可以快速地制作复杂的发现周期。这也归功于简明的Matlab语言,使我们能够在几行代码中进行高级处理和分析任务。
现在,如果此时遇到疑问,请将它们贴入Q&A面板,该面板由WebEx面板的问号表示在屏幕顶部。我们将花几分钟时间来审查它们,然后在线回来回答您的问题。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。