传感器数据信号处理和机器学习技术分析
越来越多的应用程序需要联合使用信号处理和机器学习技术在时间序列和传感器数据。MATLAB®可以加速发展的数据分析和传感器处理系统通过提供全面的建模和设计能力在一个环境。
在这个网络研讨会,我们提出一个分类系统能够识别人类主体从事的体育活动,仅仅基于加速度计信号由他或她的智能手机。
我们引入MATLAB中常见的信号处理方法(包括数字滤波和频域分析),帮助从原始波形,提取描述特性,我们展示如何并行计算可以加快处理大型数据集。然后,我们讨论如何探索和测试不同的分类算法(如决策树、支持向量机、神经网络)通过编程和交互。万博1manbetx
最后,我们将演示使用C / c++代码自动生成从MATLAB部署流分类算法对于嵌入式传感器分析。
记录:2018年3月21日
欢迎来到这个网络研讨会在信号处理和机器学习技术传感器数据分析使用MATLAB。我的名字叫Gabriele Bunkheila,我在MathWorks产品管理团队的一部分。我的背景是在信号处理,这也是我花了我的大部分职业生涯的地方,帮助工程科学家将MATLAB应用于自己的挑战。
在这个网络研讨会,我将讨论一些标准MATLAB的应用技术和产品设计工作流的研究问题,需要联合使用机器学习的例子,聚类或分类方法的信号时间序列,即采样会随时间变化。
我们会看到,这些问题的复杂性源于一个公平的需要在机器学习领域知识和信号处理。这往往也构成了挑战。你是否熟悉信号处理、机器学习,或者两者都是,或不是,我希望会话将帮助您了解如何MATLAB可以大大加快算法设计工作流这些问题。
我们也看到越来越多行业的趋势在推动机器学习算法与单一处理到嵌入式设备和接近实际的信号传感器。在这里,我将把这类应用程序的传感器数据分析或者嵌入式分析。因为此类产品的开发带来了额外的工程挑战,我认为这是有用的分配一些s manbetx 845时间在会议的结束审查MATLAB提供的额外支持这些类型的工作流。万博1manbetx
这是我们的课程列表。我们花了不少时间反思常见的信号处理方法可以应用到两个准备或预处理信号和提取描述性特性。我将展示如何选择、训练、测试分类或模式识别算法在MATLAB中,包括一些简单的方法来扩大计算密集型的性能问题。这样做会给我们一个机会去探索很多基本的MATLAB特性,从交互式应用程序内部语言结构,使开发工作流和加速算法。
最后,我们将讨论一些MATLAB功能在线预测系统的设计,包括DSP功能的设计和仿真和C源代码的生成预测算法运行在嵌入式架构。
现在,我将回到幻灯片。但是我要把大部分的时间花在这个时候讨论MATLAB运行的实例。你看到这里有三个组件使用智能手机加速度计信号的捕获。戴着智能手机主题生成的信号是在固定位置对他们的身体和在不同的体育活动。好像我们正在运行一个算法在信号。但在这种情况下,我们使用标签记录数据进行验证。
所以我们了解地面真理。但我们也试图自动了解他们在做什么活动完全基于信号处理和机器学习方法。,正如你所看到的,大多数时候我们成功猜谜活动。
现在我想做一个简单的点,这只是一个简单的例子与加速度计数据走。但是我将讨论相关的技术的广泛应用和大多数类型的采样信号或时间序列。
让我点,我收集了一个简短的列表的例子,我遇到个人与MATLAB的用户,,一般来说,使用相同类型的技术。这些已经捕获用例在许多不同的行业,如电子、航空航天、国防、金融、汽车。再一次,即使这只是一个随机的例子。这里我们讨论的相关性技术范围要广泛得多。
我会利用最后一个幻灯片之前回到MATLAB审查不同的例子,我们刚刚见过。我们把样品的三个分量加速度来自智能手机。和我们预测的物理活动主题的选择六个不同的选项或类,走路,爬楼梯,走下楼,坐着,站着,和铺设。
预测是通过分类算法。分类描述了一个受欢迎的类型的机器学习算法。的关键思想是猜测或预测新样本的类,在这种情况下,一个信号缓冲,根据以往类似的数据的知识。它的工作方式是,首先,该算法训练与大量的已知或标记的情况下优化其自由参数来识别那些已知的情况下,尽可能准确地。
一旦训练,它可以运行在未知的新数据,制定一个猜测或预测最可能是什么类的新数据。一般来说,培训阶段更多的数据和计算量比测试或运行时阶段。对于嵌入式应用程序,并不少见,在主机系统上运行培训阶段或计算机集群,但只部署一个固定,pretrained算法在嵌入式产品。
不管培训或运行时使用,是非常罕见的分类器能够在这样的原始波形。在实践中,对于每一个信号段或缓冲,一旦你有了一种提取一组有限的测量,通常称为特性,从原始波形,底线选择使用什么功能是他们应该捕获信号在同一类之间的相似之处和差异的不同。我们会花大部分的时间去展示如何使用MATLAB设计这两大算法步骤,开始从最初的探索阶段。
现在一个简短的说明,通过一个类似的关键部分任务或项目的可用性是一个参考的数据集。这将是一个集信号记录在控制实验和仔细标注,以便向右信号是已知的和相关的活动。对于这个示例,我借了一个漂亮的数据集提供两个研究小组,分别从西班牙和意大利,在这张幻灯片和可用的地址。
我希望,一般的问题是足够清晰了。让我回到MATLAB。在下面,我假设您熟悉MATLAB的基本知识,包括脚本和函数和基本的策划和可视化。
走你通过这个例子,我将使用一个脚本形成的细胞可以独立执行代码。我将跳过第一个细胞,用于发射我完成应用程序在一开始。执行这个细胞加载我的数据集和阴谋的一部分。
我们不要太多的现在关心我加载产生的数据或阴谋。让我们看看我们有可用的数据。我们有一个向量,acc,包含样品的垂直加速度的主题在一段时间内。数据集本身是3 d加速度记录30个不同的主题。加速度将样本以每秒50个样本。采样频率变量的意义,fs。我们也有时间向量,t, acc的长度相同,这是好的。
T和acc可以绘制一个对另一个。和情节告诉我们,对于这个话题,我们有大约8分钟的样品。知道时间是定期的间隔。在某些应用程序中,可能不会这样或样本可能失踪。但记住,MATLAB有大量的技术规范以及这些类型的信号进行预处理。
其他明显的东西要注意的事是长向量,actid,简称活动ID,它告诉我们什么活动每个数据样本对应1和6之间的一个整数。我们可以解释这些整数通过查看其余变量acc标签,所以1是步行,2,上楼梯,3,走楼梯,等等。
这里的情节看起来非常类似于我们的最终目标,这是确定的活动部分信号。但请记住,这是已知的,标签数据。我们只提供可视化信息。我们要做的就是设计一个方法,可以从这些信息来猜测新的数据没有以前的知识。
那么我们如何做呢?所有的第一次,我们将尝试使用直观的方法。举个例子,在这个阴谋,你已经看到,加速度波形确实不同的活动。你可以看到几乎所有的活动都平均约1克或9.8,而在0。你猜怎么着?铺设是因为身体有不同取向的引力场。
有那么三个看起来相当static-no奇怪的坐着,站着,和铺设,而其他三个似乎更多的上下摆动。所以我们可以先做一些很简单,只是用一些统计测量连续的一部分样品不管他们如何分布。
例如,看着行走和铺设样本的分布,分别可以看到,只是计算均值比较阙值你看,5,会给我们一个很好的机会使两者的区别。类似的考虑之间,说,走路和站立,但在这种情况下,我们可能想要测量的标准差和比较类似1或2米每秒的平方。
但是如果我们有解决普通的行走和爬楼梯的区别?在这种情况下,平均值和标准偏差或分布的宽度看起来非常相似。这里,你真的应该考虑的是一些更高级的分析值如何随时间改变,看看,说,利率或振荡的形状。
一个直观的原因可能是因为人们更快走楼梯时,说,相比,当他们走到楼梯,或为不同的活动类型的运动不同。这正是在信号处理方法开始被画面的一部分。
在去那里之前,让我把一个点在传递我刚刚做了什么。我刚刚随便画三个直方图情节和快速讨论它们的含义。甚至只有这个任务可以是一个相当难如果你从头开始做手工。但这些类型的可用MATLAB作为单个功能。所以尽管我使用pre-edited函数图中把这两块,给他们正确的颜色,里面一个调用直方图函数是为我做的所有的努力工作。
介绍了直方图与旧嘘和释放R 2014 b的MATLAB。它提供了一个新的、更有效的方式绘制直方图。
现在来分析变化随着时间的推移,我们希望专注于加速度引起的肢体动作。有理由假设身体运动产生更快的重力变化而贡献通常是几乎不变。如果我有两个贡献混合在一起成一个信号,我想把他们分开,然后经常应用数字滤波技术。
例如,在本例中,我们只希望保持振荡比每秒一个周期更快,说,这是一个粗略的图每秒平均数量的步骤,和缓慢振荡丢弃的贡献。使用正确的术语,需要设计和应用我们的数据一个适当的高通滤波器。我将重复这些想法,我们经历的过程。
现在设计和应用数字滤波器是很困难的,除非你有合适的工具。设计阶段尤其需要相当多的数学和特定领域的知识。在MATLAB中,有许多不同的方式可以设计一个数字滤波器。例如,一个可能选择完全编程的方式,这意味着只有使用MATLAB共享,或通过内置的应用程序。
让我们先看看后面的样子。使用一个应用程序通常是一个好主意,当你第一次方法的问题。要做到这一点,我去MATLAB工具的应用程序选项卡,我向下滚动到信号处理和通信应用程序组。在这里,我将选择滤波器的设计和分析工具。为更先进的过滤设计,你也可以尝试过滤器Builder应用。
滤波器的设计和分析工具有几个部分。例如,这个过滤器规格窗格将帮助我们指定正确的需求对我们的过滤器。下面左边就是我们开始定义我们想实现什么目标。在这种情况下,我会选择一个高通滤波器。但是你可以看到很多其他选择也成为可能。
在这里,有更多的技术选择。如果你知道数字滤波器,你可能会知道什么是冷杉和红外的意思。这里列出的设计方法可能会产生共鸣。在这里,我将跳过细节。我会选择其中一个IAR选项。向右移动,所有我需要做的就是捕获需求使用上述规范窗格。
我不得不说的事情包括我们使用的采样频率50赫兹。我们要保持不变的;我们想要减弱的因素1或0分贝。所有信号组件振动速度远远高于每秒一次或1赫兹。让我们成为慷慨的说0.8赫兹。然后一切左边的其他价值,fstop,由至少一个给定数量的减毒dB。我会设置,比如0.4赫兹,相应地,这Astop 60分贝。这意味着所有振荡低于每秒0.4次将小1000倍的过滤器。
最后,按设计、工具为我们做所有的工作。我们得到一个过滤器,满足我们的要求。我们有一组可用的分析工具在这个应用程序来验证滤波器的表现。
例如,现在我们看所谓的保证金单频率的响应。如果我需要证实这是纪念的规格,我可以覆盖一个规范的面具。如果我想理解瞬态行为,通过按下一个按钮,我可以快速可视化步骤或脉冲响应。
一旦我的滤波器设计,我真正想做的是使用MATLAB应用于我的信号。为此,我可以选择两种类型的方法。我可以导出过滤器到MATLAB工作区作为一个或多个变量。或者我可以生成一些MATLAB代码实现我刚刚做的一切交互通过编程脚本。
你看到刚刚的代码自动生成这个函数的头告诉我们。然而,我也可以独立决定使用类似的评论。为我有这个自动生成也可以帮助我获得一些启示,这样下次,我可以更快地设计过滤器以编程方式。但更重要的是,现在给我一个快速的方法实现过滤来自我自己的代码通过使用这个函数调用。
我不会放弃这个新功能,因为我有一个以前保存的版本已经在我的工作文件夹叫惠普过滤器。回到我的脚本中,您可以看到,我创建一个过滤器通过预设功能使用一行代码。下一行,我将过滤器应用于垂直加速度。和创建一个新的信号,我们只希望找到的贡献由于身体动作。如果我执行这一节中,我还策划新的过滤信号与原来的一个。
在情节中,我们可以看到,新的信号现在都集中在0。这是理想的。和一些瞬态行为由于滤波器存在,这是很正常的。
现在让我一次专注于一个活动。我怎么能这样做呢?有一个非常有效的MATLAB功能叫做逻辑索引,我可以使用。看看这个。说我想隔离这行走部分我的信号。活动类型存储在向量actid。我这里检查当actid = 1。因为我有两个工作部分,你只看的时候是小于250秒。
这里的结果是一个向量长度相同的信号,我可以只选择荣誉这些标准的样品。这是我们的工作。我们可以放大和定期确认信号振荡相当,几乎周期性。现在的问题是,我怎么能测出这是振荡或一些参数来量化这些振荡的形状或指纹吗?
一个好的答案将通过观察光谱表示我的信号,或者一些可以说通过计算FFT。比FFT-which短语这里是一个很低级的操作是可以用FFT功率谱密度以及其他一些零碎东西。再次,我最好是关注我的目标,看看MATLAB可以简单地这样做对我来说,是这样。
的许多功能可用来估计信号的功率谱密度在这里,我使用威尔士方法,很受欢迎。的代码,我有我的光谱。在x轴上的,我有我的采样频率的频率从0到1/2,50赫兹。轴,我dB /赫兹或功率密度。然后该地区当这个情节更高的值可能会携带的信息我。
为我们的信号,这种模式0和10赫兹之间的峰值较高的能源持有大量的可测信息。如果你有一个突然的信号理论类,你记得的光谱信号周期或概周期。我们可以看到一个基本频率,大概在1赫兹,和大量的谐波频率在多个位置。
从这中提取信息,这些山峰之间的频率的距离是时间域的速度振荡。描述的和相对振幅峰值振荡的形状,有点像音乐信号的音质。来验证这些,我还将向您展示上行走的频谱上楼梯的一个介于0和10赫兹。
这里,上楼梯生产慢和平滑运动因为这些山峰的慢的都推到左边。和时域平滑导致峰值基本下降很快,表明软时域转换。如果这听起来陌生,思考的光谱纯正弦波,它只有一个峰值相比,其频谱的方波,完整的高频谐波。
一旦建立了特殊的山峰携带信息,我们想要一个程序化的方法测量他们的高度和位置。这是下一个问题。你如何识别曲线峰值?相反有些人可能认为,这并不是微不足道的。信号处理工具箱来救援的函数发现山峰是建立这样做。
如果我们使用它,同时提供其他任何信息,但我们的原始谱密度,那么它将返回完整的当地山峰中发现我的阴谋。但是如果我们付出更多的努力在定义我们想要的,例如,有多少山峰它应该返回什么是我们需要的峰值突出或附近的山峰,我们期望之间的最小距离,然后更令人鼓舞的结果。就用几行代码,我们现在有一个编程,可以自动测量方法。它的高度描述信号的特征。
在我给你们的例子开始,我用几个测量信号处理提取其他特性。但我认为现在得到的普遍精神探索从信号中提取特征的方法。年底我所做的这个阶段是收集所有有用的测量确定为每个新信号细分到一个函数,这样,我能自动产生的集合我所有的测量或特性,描述它。
让我给你很快。对于每一个新缓冲区三个方向的加速度样本,我计算均值,过滤掉重力的贡献,计算RMS,测量光谱的峰值,以及一些其它的东西。如果我看谱特征子功能,你可以识别功能PWELCH山峰从几分钟前。
总的来说,这个函数返回66高度描述性特性对于每一个新的信号传递给作为输入缓冲区。我真的很喜欢,如果我测量净的代码行数,不包括注释和空行,总结仅54岁。54行代码为66的特性或远低于每一行功能,我发现表明MATLAB语言简洁的理解和生产力的优势。
,我认为我们现在可以说我们中途探索性工作流程。我们建立一个方法来提取一组有限的特性对于每一个给定的信号。现在我们需要设计一个分类器能够学习如何关联测量,或66套特性在这种情况下,一个类或一个活动6可用选项的选择。
使用一个标识符,我们首先需要我们所有的数据映射到新的特征表示。让我打开这个脚本给你很快我的意思。想象我们第一次重组数据,8乘以30分钟的样品,在大量的小缓冲区长度相等,说,128个样本。我们现在做的是,对于每一个缓冲区,我们调用我们的特征提取函数来计算66年特性。我们最终得到的一个新特性数据集和尽可能多的列的数量特征和尽可能多的可用行缓冲。
因为分类算法通常需要大量的数据来学习,从整个数据中提取特征可以很长一段时间。如果沿着这个探索性阶段决定使用不同的特性,然后整个操作需要重新开始。让我展示我的意思是在小范围内。
我们减少数据缓冲区的数量只有600和运行。我之前启动一个计时器循环之后,停止吧。我们可以监控进展作为我600年的数据缓冲区转换为一个接一个的特性。这个过程大概在17秒后终止。让缓冲区的数量不断增长,而这将线性增长。
现在想想这个。for循环的计算在每一个周期都是相互独立的。如果我们有更多的计算资源可用,我们可以开始考虑分布在可用的计算节点的负担。我猜你们中的大多数会认为这将是一个艰巨的任务。让我感知的挑战。
我要做的是改变我的关键字parfor,确保我有一个平行启用池,然后再次运行我的循环。缓冲池现在异步处理的四个服务器MATLAB工人会话在后台运行。我完成了在原始时间的一小部分。
实际的性能将会改变取决于特定的问题。底线是,因为我有并行计算工具箱安装机器,我可以打开本地MATLAB工人的数量等于在我的机器上可用内核的数量。我这里有四核。但与外部资源,比如一个集群,可以推高了。然后我能够分配独立的for循环迭代的简单地通过改变成parfor,像平行。
一旦我们完成,我们可以拯救我们的数据集和回到我们离开我们的问题。我们离开我们的问题的阶段,我们需要选择一个分类算法。现在我们有数据准备继续。当你需要一个分类器,你可以选择在大量的不同类型的算法。MATLAB的文档提供了一些指导哪些类型是最适合哪些问题,但整个过程的试验和错误,则可能让人生畏,特别是如果你不熟悉机器学习在一般或特殊,数量合理的分类算法。
MATLAB从发布2015年解决这个问题,有一个名为分类学习者的新应用程序。你可以选择从应用程序选项卡。但是让我用预设功能数据加载和开放应用程序通过运行常见分类学习者从我的脚本。
开始,我负荷数据,选择这个选项右边离开我的一小部分数据集进行验证。知道,在我的脚本加载数据之前,我还为MATLAB表范围。这将允许工具把名字给我功能和显示一些简单的统计数据。我的数据还包括一个actid和活动标签为每个可用的特征向量。
当我点击右边的进口数据,我有一个简单的视觉2 d-feature空间数据点。我可以选择我的66功能使用的x和y,了解我的样本数据是可分的。在这一点上,我们只是开始从这个目录,选择不同的分类器算法训练他们一个接一个在我们的数据集使用这个按钮。
你真的不需要知道这些算法或他们如何工作,甚至他们需要什么参数都因为工具选择潇洒地给你。如果你想,你可以改变他们使用这种先进的按钮。我希望你能看到,当训练完成后,该工具将显示一个准确总结旁边的每个选择选项和突出绿色精度最好的选择。
在这个阶段,您可能还需要了解更紧密的分类器的性能。和这个程序有一些诊断中选择正确的,喜欢,例如,混淆矩阵,它显示了我们的预测如何映射到实际的数据集内的已知值。例如,一个完整的绿色对角线外没有实例,这就表示100%的预测精度。
与MATLAB应用在许多其他情况下,你可以把你的互动探索性工作为一些代码以编程方式自动执行相同的步骤。在我们的脚本中,我们使用一个预置版本完全相同的工作流。有趣的是其选择的设置代码模式组成的分类器,训练它按合适的关键字在此——运行新数据回归预测类。
我们从内部可以使用这个函数生成脚本返回训练分类器,用它新的未知的特征向量。我不会那样做,因为有更多的东西,我需要提及。分类学习者提供了一种直观的方式来访问很多传统分类器,船的统计和机器学习工具。
另一种方法解决这个问题的一个例子是神经网络。同样,在这种情况下,从头开始设计和训练一个网络将是非常复杂的。但是神经网络工具箱提供了应用程序和函数开始迅速和设计功能网络只有几行代码。
的时间和不同的角度,让我分享一个如何使用编程方法在这种情况下做同样的工作。这里我初始化一个模式识别在一个隐层神经元网络与80一行代码。然后我训练它并返回测试集预测类几更多的线。
如果你遇到了神经网络的理论,那么你就会知道,数学的复杂性在这些操作是相当大的。想想使用反向传播(听不清)网络体系结构和优化选项,您可能需要考虑成本函数。在这种情况下,大多数的算法就可以使用,这样你就可以专注于解决一个特定问题。执行该代码时,我得到一个接口监控培训进展也证实了网络的体系结构:80个神经元隐层,66输入的数量特性,输出和6类。
当我们完成时,经过训练的神经网络可以在我的工作区。再一次,通过编程的方法,我可以使用它来运行整个测试集上的预测我的数据集的一部分。我们交互之前,我可以以编程方式生成诊断这种混淆矩阵的情况下。
这报告准确性92%左右,很好,连同一个详细视图如何预测类与已知值相匹配。作为一个例子,我们可以注意到很多站坐是困惑的,反之亦然。这是在我们的算法改进的一个区域。
现在让我后退一步,回顾一下我们所取得的成就。我们可以培训和使用分类器操作与信号处理方法提取高质量特性。我们解决一个问题,需要两个域的重要专业领域信号处理和机器学习,没有单一的方式解决,可能已经很长一段时间才能解决。相反,这只花费了几个迭代周期。我使用几个不同的应用程序和算法是现成的使用,而不需要任何复杂的书从头任何数学和程序。一个了不起的结果是一个信号处理函数只能提取66特性54行代码。
现在我想花过去10分钟左右我们的会话需要考虑一些常见的工程挑战稍微超出了算法的探索阶段,我们讨论了直到现在。想象一下,我们的最终目标是运行我们的预测来自一个新的加速度传感器的信号。在本例中,我们使用一个现有的数据集,我们没有问自己许多问题如何被收集。
一般来说,相关的数据很可能是第一个问题在我们的列表。我经常跟工程师认为获得真实世界的信号和探索你的算法需要两种不同的工具,谁最终花费很长一段时间过渡MATLAB之间数据和一些外部数据采集软件。但事实证明,MATLAB可以直接连接到一个数量的传感器和数据采集设备。发现和使用这个连接可以进一步加速你的周期。
因为我们的示例使用加速度计和数据从一个智能手机,我想还包括一个参考两个免费的支持从MathWorks包下载网站,允许从iOS和Android设备流传感器信号直接进入MATLAB。万博1manbetx
现在考虑的开发流程,试想你的闪亮的MATLAB算法必须上实现一个实时系统;例如,在嵌入式设备上接近加速度计本身。在这种情况下,不仅最终实时软件可能会有助于在C或c++重写,但实际功能的算法必须却在最终的产品。
机器学习部分可能需要简单。这是常见的,例如,对于嵌入式分类器pretrained离线,实现在一个轻量级版本,只有在线预测。信号处理也将变化可能更重要。例如,过滤器工作从传感器将信号流不断接受新的样本,并相应地更新他们的内部状态。
如果原始MATLAB模型没有考虑这些影响,那么很有可能在最后的实现不可能匹配原始的性能模拟、实际的最终产品的成功造成了潜在的威胁。
好消息是,MATLAB不仅是最初的信号分析和相关算法的探索阶段;它们也可以用来模拟实时系统并生成可嵌入C代码来源。它超出了这个网络研讨会的范围涉及这些方面的细节。但我给你一个想法的可能。
最快的点覆盖是分类器的部署。当我们训练和测试神经网络分类器,一切已经通过一个网络对象,我们称为净。这有丰富的功能。数学和实际代码用于预测可能非常难找。但从我的对象,我可以运行这个genFunction方法和生成一个简单的预测函数,只有模型实时需要发生什么只使用基本的结构。
现在让我们看看建模的数字信号处理。在左边,在extractSignalFeatures。米我54-line特征提取函数之前,我们回顾了。这里使用更多的信号处理函数来自信号处理工具箱。这些都是极其宝贵的探索阶段。数据分析任务的最佳选择。但他们并不打算模型实时系统的行为。这不是我们所想要的,当我们把这段代码放在一起放在第一位。
例如,在我们如何过滤信号。我第一个考虑真的只是一个边注。但它可能帮助我们进入正确的心态。这里我们计算滤波器系数为每一个新的信号部分即使他们总是相同的。我们在条目的完整序列。我们假设操作在一个相当长。当我们这样做,每次我们假设开始与一个过滤器清洁历史零内部状态。
现在比较,让我看看另一种模型这一过程,实时实现。这是在这个从buffer.m其他功能特性。最右边函数的信号处理来自一个DSP系统工具箱。这些对象开发与系统设计和仿真。他们可能不太实用的用于信号分析。但是他们可以用来准确地实时DSP系统模型。
如果我们只看过滤器相比,这是一个过滤器对象内部结构的概念。你可以看到通过简单地创建一个在MATLAB中,一个甚至可以获得更好的精确的行为获取完整的数据类型规范;例如,对于一个定点实现。
对象一直持有它的内部状态和被声明为持久的。所以退出和重新进入功能将再次找到它在其之前的状态。所以,如果需要,它甚至能在一个样本。它仍然会如预期运作。
至于系数,它们只计算一次第一次调用这个函数当这个持久变量初始化。然后他们只是使用在运行时通过调用步骤方法在每一个新的缓冲区的数据。作为一个副作用,这个过滤器运行得非常有效,因为它只初始化一次。从第二次,只有严格执行必要的计算过程的输入。这些属性使它理想的上下文中使用它与流信号信号设计和仿真。首先利用这个新的系统模型,我们可以叫它现在,是通过模拟它,我们可以在早期验证算法的设计嵌入式系统和检查的行为预期。
我相信这个可视化现在看起来熟悉。这就是我给你们在此会话的开始介绍我们的例子。这里的动态模拟提供了不同的视角。例如,我可以检查的稳定性预测的转换从一个活动到另一个。或另一个应用程序,我需要分析信号,我会做一个示波器,例如,使用触发器和标记。
这是一个时间范围。但是其他类型的可视化也possible-including,显然,在频域频谱分析仪。但是现在我们不会看。
如果我们看看产生模拟的代码,我们会再相见的编程实践我们看到在新的特征提取功能。例如,我们使用一个while循环新数据在每一个迭代过程。这段代码对象是我们使用从连续在线可视化。在while循环,我们继续推动更多的数据使用相同的简单结构的步骤方法,我们已经看到。
这个循环开始时我们使用文件读者对象以类似的方式逐步推进一个数据文件,而不需要在内存中加载一个潜在的巨大的文件或做任何复杂的索引到源数据。一开始我们只是通过文件名并获得样本,每一个迭代的新框架。
这里我也用一个缓冲区来帮我操作更长的数据窗口的系统可能在一个迭代接收所有封装在一个单独的对象隐藏在索引通过相同的步骤和使用的接口。和循环的中间,你可以看到预测函数,我们正在与我们的新模拟完成DSP模型和轻量级的神经网络分类器。
在线模拟系统以外的能力,第二个巨大优势的实时DSP处理组件和部署模型神经网络是我们现在可以自动生成C或c++源代码。可以使用在嵌入式产品,嵌入式原型,或者只是作为参考与下游软件工程团队分享。
将会有更多的说,包括能力,直接生成定点或target-optimized c。但是我要告诉你的总体想法,是如何工作的。虽然第一次你也可以通过这个工作流通过专用的内置应用程序,一般的想法是,这种简单的常见codegen,我们可以把我们的MATLAB函数预测活动从信号缓冲到一个完全开放的C函数不附加任何库。生成的C是完全开放的。在这种情况下,我把没有努力优化生成的代码。但是有很多功能,包括能够生成所有定点代码。
好吧。我想我们已经看到在行动我计划给你。现在我回到我的幻灯片。我会后退一步,回顾我们所做的功能和工具,我使用在本课程的各个部分。
信号分析是第一个领域事实上的标准内置函数的使用节省了我们很多的时间。和信号处理工具箱是所有这些有用的功能是从哪里来的。想象一下从头开始实现所有这些公式,更不用说看他们,试着去理解他们。并行计算工具箱我们分配计算密集型for循环仅仅通过改变一个for循环parfor循环。额外的并行计算选项可用来扩展框架,我们使用更大的架构,包括计算机集群和云。
统计和机器学习工具箱不仅允许我们测试的分类器也迅速探索和比较不同选项分类学习者的交互应用。我觉得我们发现周期大大加快。探索一些传统分类器后,我们还利用神经网络工具箱创建一个公共网络拓扑用于模式识别,训练它,并测试它。我们也生成一个轻量级pretrained版本的网络,它捕获运行时计算使用基本MATLAB构造完全支持C热电联产的引擎。万博1manbetx
我们的信号处理算法的基本原理已经合并,我们使用对象的数量从DSP系统工具箱模型算法的实时实现。我们运行一个在线模拟系统设计使用的流对象,促进长信号存储在磁盘上的数据。我们使用范围,优化处理连续的可视化流信号,类似于一个如何想象真实信号和台式仪器。
作为一个副作用,我们的在线建模努力我们的算法已经在模拟和更高效的执行也让他们准备生成C或c++源代码可以直接部署到嵌入式处理器。这就是我们使用MATLAB编码器。
MATLAB编码器是一个热电联产引擎,可以把MATLAB算法变成完全开放C或c++源代码。将会有很多关于MATLAB编码器能做什么,特别是通过生成可嵌入的源代码。所以我想向你介绍一个伟大的入门研讨会在预先录制的格式在我们的网站上称,“MATLAB C容易。”
,那我们结束研讨会对传感器数据信号处理和机器学习技术分析。我希望这是有用的在强调一些MATLAB功能,您还不熟悉。我将致力于提供使用的代码,我在未来几周内,这样你就可以查看示例以自己的节奏。
如果你要忘记我了今天的一切,我希望至少你带走以下三个关键的想法。首先,我们的项目成为可能通过提供一个广泛范围的内置函数,信号处理和机器学习。允许我们快速实验,不同的选择,而无需从头开始实现任何数学。
补充的部分照片是MATLAB环境本身,从基本的可视化功能内置应用程序生成可重用的代码,让经常使用的一种语言,很容易让先进的事情发生在几行代码。
最后,它带你去通过一组抽象概念转变的MATLAB功能实时算法实现。我们把信号处理算法变成了详细的DSP系统模型,可以模拟。从这些,我们生成的C源代码,可以在嵌入式平台上重新编译。
下载代码和文件
了解更多
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。