MATLAB与信号处理课程手册

Matlab与信号处理课程手册

文章目录

  • Matlab与信号处理课程手册
  • 1. 采用思维导图描述本课程知识点脉络
  • 2. MATLAB 编程
    • 2.1. 脚本
    • 2.2. 函数
    • 2.3. 实时脚本和函数
      • 2.3.1. 什么是实时脚本或实时函数
      • 2.3.2. 实时脚本和纯代码脚本的区别
      • 2.3.3. 共享实时脚本和函数
    • 2.4. 类
      • 2.4.1. 使用 MATLAB 进行面向对象的设计
        • 2.4.1.1. 为什么使用面向对象的设计
      • 2.4.2. 什么是 System Object
        • 2.4.2.1. 采用 System Object 编程的特点
        • 2.4.2.2. System Object 与 MATLAB 函数
  • 3. 描述 MATLAB 产品架构和帮助文档架构
    • 3.1. matlab 产品架构
    • 3.2. 帮助文档架构
      • 3.2.1. matlab 帮助文档介绍
      • 3.2.2. matlab 帮助文档的架构
  • 4. APP designer 的编写回调函数的流程
    • 4.1. 方法1
    • 4.2. 方法2
  • 5. Signal Processing Toolbox
    • 5.1. 信号分析和可视化
      • 5.1.1. 使用 Signal Analyzer App
    • 5.2. 信号生成和预处理
    • 5.3. 测量和特征提取
    • 5.4. 变换、相关性和建模
    • 5.5. 数字和模拟滤波器
    • 5.6. 频谱分析
    • 5.7. 时频分析
    • 5.8. 振动分析
    • 5.9. 信号的机器学习和深度学习延伸
  • 6. DSP System Toolbox
    • 6.1. 信号的产生、处理和分析
    • 6.2. Filter Design and Analysis
    • 6.3. Filter Implementation
    • 6.4. Transforms and Spectral Analysis
    • 6.5. 统计和线性代数
    • 6.6. Fixed-Point Design
    • 6.7. Simulink 中的信号处理和线性代数模块
      • 6.7.1. 针对 DSP 系统设计、实现和测试的信号处理模块
      • 6.7.2. 多速率系统建模
    • 6.8. MATLAB 中的流信号处理
      • 6.8.1. DSP 系统设计、实现和测试的算法库
      • 6.8.2. 多速率系统
    • 6.9. 单速率和多速率 FIR 和 IIR 滤波器设计以及自适应滤波器
      • 6.9.1. 自适应滤波器
      • 6.9.2. 多速率和多级滤波器和分析
    • 6.10. 信号示波器、分析器和测量工具
    • 6.11. 定点建模和仿真
      • 6.11.1. 定点滤波器设计
  • 7. Signal Processing Toolbox 和 DSP System Toolbox 的联系和区别
    • 7.1. 联系
    • 7.2. 区别
  • 8. Simulink
    • 8.1. 应用领域
    • 8.2. Simulink 环境基础知识
      • 8.2.1. Simulink 概念
        • 8.2.1.1. Systems and Models
        • 8.2.1.2. Simulink Models
        • 8.2.1.3. Simulink Simulation
    • 8.3. 建模
    • 8.4. 仿真
    • 8.5. 怎样理解 Simulink 建模
    • 8.6. 怎样理解 Simulink 仿真
  • 9. Deep Learning Toolbox
    • 9.1. 图像深度学习
    • 9.2. 时序、序列和文本深度学习

1. 采用思维导图描述本课程知识点脉络

周次 课程内容
1 matlab与信号处理课程绪论
2 Document目录
3 实施编辑器
4 App
5 国庆放假
6 Signal Analyser App
7 Signal Processing Toolbox
8 DSP System Toolbox
9 Simulink
10 Deep Learning 与 matlab
11 复习串讲
MATLAB 与信号处理
MATLAB 官方文档
官方文档的介绍
官方文档的架构
如何使用好matlab官方文档
实施编辑器
实时编辑器的使用
脚本和代码的区别
实时脚本和纯代码脚本的区别
System Object
System Object 的介绍
类的介绍
System Object 编程的特点
运用 APP designer 进行 APP 设计
界面的设计
回调函数的编写
Signal Processing Toolbox
Signal Analyser 的使用
利用信号处理工具箱对信号进行处理, 分析, 提取特征等
DSP System Toolbox
DSP System Toolbox 联合 Simulink 对信号进行处理
Simulink 建模及仿真
建模方法
Deeplearning Toolbox

2. MATLAB 编程

2.1. 脚本

基本程序文件

脚本是最简单的程序文件类型。它们可用于自动执行一系列 MATLAB® 命令,例如您必须从命令行重复执行的计算或必须引用的一系列命令。

2.2. 函数

接受输入并返回输出的程序

脚本和函数都允许您通过将命令序列存储在程序文件中来重用它们。函数提供的灵活性更大,主要因为您可以传递输入值并返回输出值。此外,函数能够避免在基础工作区中存储临时变量,并且运行速度比脚本更快。

2.3. 实时脚本和函数

程序文件,其中可包括用于解释代码的格式化文本、图形和输出

实时脚本和实时函数是用于与一系列 MATLAB® 命令进行交互的程序文件。实时脚本包含输出和图形以及生成这些输出和图形的代码,它们共同显示在一个称为实时编辑器的交互式环境中。实时函数提供额外的灵活性,您可以通过它传递输入值并返回输出值。您可以在实时脚本和实时函数中添加格式化文本、图像、超链接和方程,以生成可与他人共享的交互式记叙脚本。

2.3.1. 什么是实时脚本或实时函数

MATLAB® 实时脚本和实时函数是交互式文档,它们在一个称为实时编辑器的环境中将 MATLAB 代码与格式化文本、方程和图像组合到一起。此外,实时脚本可存储输出,并将其显示在创建它的代码旁。

实时脚本和函数可用于:
(1)直观浏览和分析问题

  • 在单个交互式环境中编写、执行和测试代码
  • 逐个运行代码或作为整个文件运行,查看结果和图形以及生成它们对应的源代码
    MATLAB与信号处理课程手册_第1张图片

(2)共享富文本格式的可执行记叙脚本

  • 添加标题、题头和格式化文本以描述相应过程,并纳入方程、图像和超链接作为支撑材料
  • 将您的记叙脚本另存问富文本格式的可执行文档,并与同事或 MATLAB 社区共享它们,或者将其转换为 HTML、PDF、Microsoft® Word 或 LaTeX 文档以供发布。
    MATLAB与信号处理课程手册_第2张图片

(3)创建交互式教学课件

  • 将代码和结果与格式化文本和数学方程结合使用。
  • 创建分步式课件并逐步进行计算以说明教学主题。
  • 随时修改代码以回答问题或探讨相关主题。
  • 将课件作为交互式文档与学生共享或以硬拷贝形式共享,将部分完成的文件作为作业发给学生。
    MATLAB与信号处理课程手册_第3张图片

2.3.2. 实时脚本和纯代码脚本的区别

脚本和代码的区别
(1)分类范围的区别:脚本是代码的一种。代码是指程序员在工作时使用编程软件敲出的字符、符号等元素组成的源文件,而脚本则是特指纯文字文本的程序,该程序同样是由程序源文件构成。因此代码的涵盖分类范围远远比脚本大。

(2)实现的结果区别:脚本就是写一个或多个工具使得一个或者一系列任务自动化。而代码的作用效果同样能带到脚本的作用,其次更是把多个源代码进程互相关联使用,而且还可以组成一个程序让计算机按照设计好的思路进行运行。

参阅 matlab 官方文档

实时脚本和函数 纯代码脚本和函数
文件格式 MATLAB在带有.mlx扩展名的文件中使用实时代码文件格式存储实时脚本和函数。实时代码文件格式使用 Open Packaging Conventions 技术,这是 zip 文件格式的扩展。代码和格式化内容使用 Office Open XML (ECMA-376) 格式存储在与输出不同的 XML 文档中。参阅实时代码文件格式 普通文本文件格式
文件扩展名 .mlx .m
输出显示 在实时编辑器中,与代码一起显示 在命令行窗口中
文本格式设置 在实施编辑器中添加和查看格式化文本 使用发布标记添加格式化文本,发布到视图
视觉表示

2.3.3. 共享实时脚本和函数

您可与其他人共享实时脚本和函数以供教学或演示之用,或提供代码的可读外部文档。您可以与其他 MATLAB® 用户共享文件,也可以共享文件的静态 PDF、Microsoft® Word、HTML 和 LaTeX 版本以在 MATLAB 外部查看。

下表显示了共享实时脚本和函数的不同方式。

共享方式 说明
作为交互式文档共享 分发实时代码文件 (.mlx)。该文件的接收者可以在 MATLAB 中打开它,并以您上次保存它的状态查看它。这包括生成的输出。
MATLAB 支持 R2016a 及更高版本中的实时脚本,以及 R2018a 及更高版本中的实时函数。
作为全屏演示文稿 打开实时脚本或函数,转至视图选项卡并点击全屏 按钮。MATLAB 以全屏模式打开文件。
要退出全屏模式,请将鼠标移至屏幕顶部以显示视图选项卡,然后再次点击全屏按钮。
与 MATLAB 旧版本用户共享 将实时脚本或函数另存为纯代码文件 (.m) 并分发它。该文件的接收者可以在 MATLAB 中打开和查看它。MATLAB 会将实时脚本或函数中的格式化内容转换为新脚本或函数中的发布标记。
作为能够在 MATLAB 之外查看的静态文档共享 将脚本或函数导出为标准格式。可用的格式包括 PDF、Microsoft Word、HTML 和 LaTeX。
要将实时脚本或函数导出为其中一种格式,请在实时编辑器选项卡上选择保存 > 导出为 PDF、保存 > 导出为 Word、保存 > 导出为 HTML 或保存 > 导出为 LaTeX。
所保存文件的外观与实时脚本或函数在实时编辑器中以内嵌输出布局显示的外观非常相似。
导出为 LaTeX 时,MATLAB 将在输出文档所在的文件夹中另行创建一个 matlab.sty 文件(如果尚不存在)。.sty 文件也称为 LaTeX 样式文档,可让您更好地控制输出文档的外观。

2.4. 类

创建类可以简化涉及与特殊类型的数据交互的专用数据结构体或大量函数的编程任务。

MATLAB 类支持函数和运算符重载、对属性和方法的控制访问、引用和值语义以及事件和侦听程序。

2.4.1. 使用 MATLAB 进行面向对象的设计

2.4.1.1. 为什么使用面向对象的设计

(1)MATLAB 程序的编程方式
创建软件应用程序通常包括设计应用程序数据和实施对这些数据执行的操作。过程式程序将数据传递给函数,函数对数据执行必要的操作。面向对象的软件将数据和操作封装在各个对象中,这些对象通过各自的接口进行交互。

您可以通过 MATLAB® 语言使用过程式编程方式和面向对象的编程方式来创建程序,并在程序中结合使用对象和普通函数。

过程式程序设计
在过程式编程中,您需要设计一系列步骤,通过执行这些步骤来实现所需状态。通常,您会将数据表示为结构体的单个变量或字段。您可以将操作实现为以变量为参数的函数。程序通常调用一系列函数,每个函数都接受传递的数据,然后返回修改后的数据。每个函数都会对数据执行一项或多项操作。

面向对象的程序设计
面向对象的程序设计包括:

  • 确定要构建的系统或应用程序的组件
  • 分析和识别模式,以确定哪些组件会重用或共享特征
  • 基于相似性和差异性对组件进行分类

执行此分析后,您可以定义类来说明应用程序所使用的对象。

类和对象
类描述一组具有共同特征的对象。对象是类的特定实例。对象属性中包含的值使对象不同于同一类的其他对象。由类定义的函数(称为方法)实现类中所有对象通用的对象行为。

(2)何时创建面向对象的程序
简单的编程任务可以用简单的函数来实现。然而,随着任务的规模和复杂度的增加,函数会变得更加复杂和难以管理。

当函数变得太大时,您可以将它们分成较小的函数,并将数据从一个函数传递到另一个函数。然而,随着函数数量的增加,设计和管理传递给函数的数据也变得困难和容易出错。在这种情况下,可以考虑将您的 MATLAB 编程任务转向面向对象的设计。

从对象的角度来理解问题
对某些问题来说,从对象的角度来考虑会更简单、更自然。将问题陈述中的名词视为要定义的对象,动词视为要执行的操作。

例如,我们可以设计类来表示货币借贷机构,如银行、抵押贷款公司、个人货币贷方等。上述各种类型的贷方很难用过程表示。但是,您可以将每类贷方表示为执行特定操作并包含特定数据的对象。设计对象的过程包括识别对您的应用程序很重要的贷方特征。

确定共同点. 所有贷方有哪些共同点?例如,所有 MoneyLender 对象都可能具有 loan 方法和 InterestRate 属性。

确定差异. 每个贷方有什么不同?一个贷方可以向企业提供贷款,而另一个贷方只向个人提供贷款。因此,对于不同类型的贷款机构,loan 操作可能需要有所不同。MoneyLender 基类的子类可特化 loan 方法的子类版本。每个贷方可以为其 InterestRate 属性设置不同值。

将共性析出为一个超类,并实现子类中每种类型的贷方的特性。

只添加必要的内容. 这些机构从事的某些活动可能与您的应用程序无关。在设计阶段,请根据您的问题定义来确定对象必须包含的操作和数据。

对象管理内部状态
对象可提供结构体和元胞数组中无法提供的一些有用功能。例如,对象可以:

  • 约束赋给任何给定属性的数据值
  • 仅在查询属性时计算属性值
  • 查询或更改任何属性值时广播通知
  • 限制对属性和方法的访问

减少冗余
随着程序复杂度的增加,面向对象的设计的好处变得更加明显。例如,假设您将以下过程作为应用程序的一部分来实现:

  1. 检查输入
  2. 对第一个输入参数执行计算
  3. 基于第二个输入参数转换步骤 2 的结果
  4. 检查输出和返回值的有效性

您可以将此过程作为普通函数来实现。但是,假设您要在应用程序中的某个地方再次使用此过程,则除步骤 2 之外,您必须执行不同的计算。您可以复制并粘贴第一个实现,然后重写步骤 2。您也可以创建一个根据选项执行相应计算的函数,然后依此类推。然而,这些选项会导致代码更复杂。

面向对象的设计可以将公共代码析出为一个基类。该基类将定义所使用的算法,并实现在所有使用该代码的情况下都通用的内容。步骤 2 可以通过语法进行定义,但不进行实现,而将特化实现留给从这个基类派生的类。

Step 1
function checkInputs()
   % actual implementation
end

Step 2
function results = computeOnFirstArg()
   % specify syntax only
end

Step 3
function transformResults()
   % actual implementation
end
 
Step 4
function out = checkOutputs()
   % actual implementation
end

不必复制或修改基类中的代码。从基类派生的类会继承这些代码。继承能减少要测试的代码量,并将程序与对基本过程的更改隔离开来。

定义一致的接口
在面向对象的编程中,一种有用的编程方式是基于某个类来创建类似但更特化的类。此类定义公用接口。在您的程序设计中使用这种类可以:

  • 确定特定目标的需求
  • 将需求作为接口类编写到您的程序中

降低复杂度
对象减少了您使用组件或系统时必须具备的知识,从而降低了复杂度:

  • 对象提供隐藏实现细节的接口。
  • 对象实施控制对象交互方式的规则。

便于模块化
当您将系统分解成对象(汽车 –> 引擎 –> 燃油系统 –> 氧气传感器)时,您就根据自然边界划分了模块。类对代码模块化提供三个级别的控制:

  • 公共 - 任何代码都可以访问此特定属性或调用此方法。
  • 受保护 - 只有此对象的方法和从此对象的类派生的对象的方法才能访问此属性或调用此方法。
  • 私有 - 只有对象自己的方法才能访问此属性或调用此方法。

重载的函数和运算符
定义类时,可以重载现有 MATLAB 函数来处理新对象。例如,MATLAB 串行端口类可重载 fread 函数,从连接到此对象所代表的端口的设备读取数据。如果您定义了用于表示数据的类,您可以为其定义各种运算,例如相等 (eq) 或加法 (plus)。

2.4.2. 什么是 System Object

System object™ 是一种 MATLAB® 类,具有用于算法建模的特定方法和属性。System object 适用于为动态系统建模和处理流式数据。您可以使用系统工具箱产品中包含的预定义 System object,也可以定义自己的 System object。

System object™ 是一种专用的 MATLAB® 对象。许多工具箱中都包含 System object。System object 专为实现和仿真输入随时间变化的动态系统而设计。许多信号处理、通信和控制系统都是动态的。在动态系统中,输出信号的值同时取决于输入信号的瞬时值以及系统的过往行为。System object 使用内部状态来存储下一个计算步骤中使用的系统过往行为。因此,System object 非常适用于分段处理大型数据流的迭代计算,例如视频和音频处理系统。这种处理流化数据的功能具有不必在内存中保存大量数据的优点。采用流化数据,您还可以使用可高效利用循环的简化程序。

例如,您可以在系统中使用 System object,以便从某个文件中读取数据、对该数据进行滤波,然后将滤波后的输出写入其他文件。通常,每次循环迭代中都会将指定数量的数据传递给滤波器。文件读取器对象使用状态来跟踪在文件中开始下一次数据读取的位置。同样,文件写入器对象会跟踪其最后将数据写入输出文件的位置,以使数据不会被覆盖。滤波器对象保留其自身的内部状态,以确保滤波正常执行。下图表示系统的单个循环。

这些优点使得 System object 适用于处理流化数据。

(1)运行 System Object

要运行某个 System object 并执行其算法定义的操作,您可以调用该对象,就好像它是一个函数一样。

(2)System object 函数
在创建 System object 之后,可以使用各种对象函数来处理该对象的数据,或获取有关该对象的信息。

2.4.2.1. 采用 System Object 编程的特点

2.4.2.2. System Object 与 MATLAB 函数

(1)System Object 与 MATLAB 函数
许多 System object 都具有对应的 MATLAB® 函数。对于简单的一次性计算,使用 MATLAB 函数。但是,如果您需要设计和模拟一个带有许多组件的系统,请使用 System object。如果您的计算需要管理内部状态、包含随时间而变化的输入或者要处理大型数据流,则使用 System object 也是适合的。

仅使用 MATLAB 函数来构建具有不同执行阶段和内部状态的动态系统将需要进行复杂的编程。您需要编写代码以初始化系统、验证数据、管理内部状态以及重置和终止系统。System object 可在执行期间自动完成其中许多管理操作。通过将程序中的 System object 与其他 MATLAB 函数组合使用,您可以简化代码并提高效率。

此 System object 代码避免了仅使用 MATLAB 代码存在的问题。在不需要使用显式索引的情况下,文件读取器对象即可管理数据帧大小,而滤波器可管理状态。音频设备写入器对象会播放每个经过处理的音频帧。

(2)使用仅包含 MATLAB 函数的代码处理音频数据

此示例说明如何编写仅包含 MATLAB 函数的代码来读取音频数据。

该代码会从文件中读取音频数据、对音频数据进行滤波,并播放滤波后的音频数据。音频数据是按帧读取的。该代码与下一示例中的 System object 代码生成相同的结果,您可对方法进行比较。

找到源音频文件。

fname = 'speech_dft_8kHz.wav';

从源文件中获取样本总数和采样率。

audioInfo = audioinfo(fname);
maxSamples = audioInfo.TotalSamples;
fs = audioInfo.SampleRate;

定义要使用的滤波器。

b = fir1(160,.15);

初始化滤波器状态。

z = zeros(1,numel(b)-1);

定义要一次处理的音频数据量,然后初始化 while 循环索引。

frameSize = 1024;
nIdx = 1;

定义 while 循环以处理音频数据。

while nIdx <= maxSamples(1)-frameSize+1
    audio = audioread(fname,[nIdx nIdx+frameSize-1]);
    [y,z] = filter(b,1,audio,z);
    sound(y,fs);
    nIdx = nIdx+frameSize;
end  

该循环使用显式的索引和状态管理,此方法可能很繁琐且容易出错。您必须详尽了解各种状态,例如大小和数据类型。这种仅包含 MATLAB 的代码存在的另一个问题是,声音函数未设计为实时运行。生成的音频断断续续,几乎听不见。

(3)使用 System object 处理音频数据
此示例说明如何编写 System object 代码来读取音频数据。

该代码使用 DSP System Toolbox™ 软件中的 System object 来从文件中读取音频数据、对音频数据进行滤波,然后播放滤波后的音频数据。该代码与前面显示的 MATLAB 代码生成相同的结果,允许您对方法进行比较。

找到源音频文件。

fname = "speech_dft_8kHz.wav";

定义 System object™ 以读取文件。

audioIn = dsp.AudioFileReader(fname,'OutputDataType','single');

定义 System object 以进行数据滤波。

filtLP = dsp.FIRFilter('Numerator',fir1(160,.15));

定义 System object 以播放滤波后的音频数据。

audioOut = audioDeviceWriter('SampleRate',audioIn.SampleRate);

定义 while 循环以处理音频数据。

while ~isDone(audioIn)
    audio = audioIn();    % Read audio source file
    y = filtLP(audio);   % Filter the data
    audioOut(y);         % Play the filtered data
end

此 System object 代码避免了仅使用 MATLAB 代码存在的问题。在不需要使用显式索引的情况下,文件读取器对象即可管理数据帧大小,而滤波器可管理状态。音频设备写入器对象会播放每个经过处理的音频帧。

3. 描述 MATLAB 产品架构和帮助文档架构

3.1. matlab 产品架构

MATLAB是MATLAB产品家族的计算核心与基础,是集高性能数值计算与数据可视化于一体的高效编程语言。围绕着MATLAB这个计算核心,形成了诸多针对不同应用领域的算法程序包,被称为专用工具箱(Toolbox),这些工具箱的列表以及每个工具箱的使用详见MATLAB在线帮助文档。MATLAB本身所提供的工具箱大概有40多个,另外还有其他公司或研究单位开发提供的工具箱,这些工具箱的总数已有100多个,而且新的工具箱还在不断增加。如果你有特别的应用领域,可以首先到网上查找是否已有相关的工具箱,很可能已有人将你要做的应用程序作成工具箱了。

围绕着Simulink仿真核心所开发的应用程序包,称为模块集(Blocksets),MATLAB产品提供许多专用模块集,如Communication Blockset、DSP Blockset、SimPowerSystem Blockset、Signal Processing Blockset等,详见MATLAB在线帮助文档。Simulink是窗口图形方式的、专门用于连续时间或离散时间的动态系统建模、分析和仿真的核心。

MATLAB Compiler这种编译器可以将MATLAB程序文件编译生成标准的C/C++语言文件,而生成的标准的C/C++文件可以被任何一种C/C++编译器编译生成函数库或可执行文件,以提高程序的运行效率。

Real-Time Workshop是一种实时代码生成工具,它能够根据Simulink模型生成程序源代码,并打包、编译所生成的源代码生成实时应用程序。Stateflow是基于有限状态机理论针对复杂的事件驱动系统进行建模、仿真的工具。

从现有的Simulink 和Stateflow自动生成C语言程序代码的功能、定点运算模块集(Fixed-point Blockset)与C语言程序代码到VHDL(Very High Speed Integrated Circuit Hardware Description Language,一种标准的硬件电路设计语言 )的自动转换功能,可以看出,高级的系統仿真或低级的芯片算法设计,都可用MATLAB、Simulink、Stateflow及相关的工具箱来完成。

被调用
构建
构建
构建
构建
构建
被调用
Toolbox
matlab核心
Simulink核心
建模
仿真
Blocksets
各种其他语言

3.2. 帮助文档架构

3.2.1. matlab 帮助文档介绍

所有 MATLAB® 函数都有辅助文档,这些文档包含一些示例,并介绍函数输入、输出和调用语法。从命令行访问此信息有多种方法:

  • 使用doc命令在单独的窗口中打开看书文档
  • 使用help命令可在命令行窗口中查看相应函数的简明文档
  • 在键入函数输入参数的左括号之后暂停,此时命令行窗口中会显示相应函数的提示(函数文档的语法部分)。如mean(

3.2.2. matlab 帮助文档的架构

帮助文档的架构围绕 matlab 产品的架构展开,首先是对 matlab 和 simlink 的介绍。然后再介绍围绕 matlab 和 simlink 开发出来的 toolbox 和 blockset。

对每一个模块,matlab 帮助文档首先都有一个快速入门,帮助用户快速对本模块有一个大致的了解,然后再介绍本模块的基本知识,再介绍此模块的详细内容和详细操作

且在每一个模块,都有很多示例,且对此有详细的分析,并可以直接在 matlab 中输入命令打开此示例或直接在 matlab online 中打开,为用户提供了很大的便利。

4. APP designer 的编写回调函数的流程

回调是在用户与 App 中的 UI 组件交互时执行的函数。大多数组件都至少包含一个回调。但是,某些组件(如标签和信号灯)没有回调,因为这些组件仅显示信息。

要查看某个组件支持的回调的列表,请选择该组件,然后点击组件浏览器中的回调选项卡。

4.1. 方法1

右键点击画布中的一个组件或组件浏览器或 App 布局窗格
选择回调
选择添加回调

4.2. 方法2

在组件浏览器中选择回调选项卡。回调选项卡的左侧将显示受支持的回调属性列表。每个回调属性旁边的文本字段允许您指定回调函数的名称。该文本字段旁边的向下箭头允许您选择以尖括号 <> 括起来的默认名称。如果您的 App 有现有回调,则下拉列表中会包含这些回调。当需要多个 UI 组件执行相同代码时,请选择一个现有回调。

5. Signal Processing Toolbox

Signal Processing Toolbox™ 提供了一些函数和 App,用来分析、预处理及提取均匀和非均匀采样信号的特征。该工具箱包含可用于滤波器设计和分析、重新采样、平滑处理、去趋势和功率谱估计的工具。该工具箱还提供了提取特征(如变化点和包络)、寻找波峰和信号模式、量化信号相似性以及执行 SNR 和失真等测量的功能。您还可以对振动信号执行模态和阶次分析。

使用 Signal Analyzer App,您可以:在时域、频域和时频域同时预处理和分析多个信号,而无需编写代码;探查长信号;以及提取关注的区域。通过 Filter Designer App,您可以从多种算法和响应中进行选择来设计和分析数字滤波器。这两个 App 都生成 MATLAB® 代码。

其主要功能为:

  1. 信号分析和可视化
    使用 Signal Analyzer 来可视化、预处理和探查信号
  2. 信号生成和预处理
    对信号进行创建、重新采样、平滑、去噪和去趋势处理
  3. 测量和特征提取
    波峰、信号统计、脉冲和瞬态指标、功率、带宽、失真
  4. 变换、相关性和建模
    互相关、自相关、傅里叶、DCT、Hilbert、Goertzel、参数化建模、线性预测编码
  5. 数字和模拟滤波器
    FIR 和 IIR、单速率和多速率滤波器设计、分析和实现
  6. 频谱分析
    功率谱、相干性、窗口
  7. 时域分析
    频谱图、交叉频谱图、同步压缩、重排、Wigner-Ville、Hilbert-Huang、kurtogram
  8. 振动分析
    阶数分析、时间同步平均、包络频谱、模态分析、雨流计数
  9. 信号的及去学习和深度学习延伸
    信号标注、特征工程、数据集生成

5.1. 信号分析和可视化

使用 Signal Analyzer 来可视化、预处理和探查信号

Signal Analyzer App 是一款交互式工具,用于在时域、频域和时频域中可视化、测量、分析和比较信号。通过该 App 可同时和在同一视图中处理不同持续时间的许多信号。

从 MATLAB® 工具条上的 Apps 选项卡中选择该 App 将其启动。您也可以通过在 MATLAB 命令提示符下键入 signalAnalyzer 来启动该 App。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ncwxuera-1606572446391)(https://ww2.mathworks.cn/help/signal/ug/using-signal-analyzer-app.html)]

5.1.1. 使用 Signal Analyzer App

(1)APP 工作流
使用 Signal Analyzer App 检查和比较信号的典型工作流如下:

  1. 选择要分析的信号 - 选择 MATLAB® 工作区中可用的任何信号。该 App 接受具有固有时间信息的数值数组和信号,例如 MATLABtimetable 数组、timeseries 对象和 labeledSignalSet 对象。有关详细信息,请参阅Data Types Supported by Signal Analyzer。

  2. Preprocess Signals - 低通、高通、带通或带阻滤波器信号。去趋势并计算信号包络。使用移动平均值、回归、Savitzky-Golay 滤波器或其他方法对信号进行平滑处理。更改信号的采样率或将非均匀采样的信号插值到均匀网格上。使用您自己的自定义函数预处理信号。生成 MATLAB 函数来自动执行预处理操作。

  3. 探查信号 - 使用采样率、数值向量、duration 数组或 MATLAB 表达式向信号添加时间信息。绘制、测量和比较数据、其频谱、频谱图或尺度图。寻找时域、频域和时频域中的特性和模式。计算持久性频谱以分析偶发信号,并使用重排来锐化频谱图估计。从信号中提取关注的区域。

  4. 共享分析 - 将显示内容作为图像从 App 复制到剪贴板。将信号导出到 MATLAB 工作区或将其保存到 MAT 文件。生成 MATLAB 脚本,以自动计算功率谱、频谱图或持久性频谱估计,并自动提取关注区域。保存 Signal Analyzer 会话,以便以后或在另一台机器上继续分析。

(2)频谱和时域分析

5.2. 信号生成和预处理

对信号进行创建、重新采样、平滑、去噪和去趋势处理

Signal Processing Toolbox™ 提供的函数可让您对信号进行去噪、平滑和去趋势处理,为进一步分析做好准备。从数据中去除噪声、离群值和乱真内容。增强信号以对其可视化并发现模式。更改信号的采样率,或者使不规则采样信号或带缺失数据信号的采样率趋于恒定。为仿真和算法测试生成脉冲信号和 chirp 等合成信号。

some theme

  1. Signal Generation and Visualization
  2. 将开始时间不同的信号对齐
  3. Find a Signal in a Measurement
  4. Reconstruct a Signal from Irregularly Sampled Data

平滑和去噪
从信号中去除不需要的峰值、趋势和离群值。使用 Savitzky-Golay 滤波器、移动平均值、移动中位数、线性回归或二次回归对信号进行平滑处理。

波形生成
使用 chirp 生成线性、二次和对数 chirp。使用 square、rectpuls 和 sawtooth 创建方波、矩形波和三角形波。

5.3. 测量和特征提取

波峰、信号统计、脉冲和瞬态指标、功率、带宽、失真

Signal Processing Toolbox™ 提供的函数可用于测量信号的常见不同特征。定位信号波峰并确定其高度、宽度和与邻点的距离。测量时域特征,如峰间幅值和信号包络。测量脉冲指标,如过冲和占空比。

在频域中,测量基频、均值频率、中位数频率和谐波频率、通道带宽和频带功率。通过测量无乱真动态范围 (SFDR)、信噪比 (SNR)、总谐波失真 (THD)、信号与噪声失真比 (SINAD) 和三阶截距 (TOI) 来表征系统。

some theme

  • Peak Analysis
  • Detecting Outbreaks and Significant Changes in Signals
  • Finding a Signal in Data
  • Measurement of Pulse and Transition Characteristics
  • Analyzing Harmonic Distortion
  • Extracting Classification Features from Physiological Signals

描述性统计量
峰值、RMS 水平、峰间幅值、波峰因子、动态时间畸变、CUSUM 控制图、编辑距离

脉冲和瞬态指标
上升时间、下降时间、压摆率、过冲、欠冲、稳定时间、脉冲宽度、占空比

频谱测量
通道功率、带宽、均值频率、中位数频率、谐波失真

5.4. 变换、相关性和建模

互相关、自相关、傅里叶、DCT、Hilbert、Goertzel、参数化建模、线性预测编码

Signal Processing Toolbox™ 提供了用于计算信号的相关性、卷积和变换的函数。使用快速傅里叶变换将数据分解成若干频率分量。通过使用传递函数对信号求卷积对信号进行滤波。使用相关性量化信号相似性。使用离散余弦变换来压缩数据。

突出显示的主题

  • 离散傅里叶变换
  • 使用自相关求周期性
  • 使用 FFT 获得功率频谱密度估计
  • 线性和循环卷积

变换
傅里叶、chirp Z、DCT、Hilbert、倒频谱、Walsh-Hadamard

相关性和卷积
互相关、自相关、互协方差、自协方差、线性卷积和循环卷积

信号建模
线性预测、自回归 (AR) 模型、Yule-Walker、Levinson-Durbin

5.5. 数字和模拟滤波器

FIR 和 IIR、单速率和多速率滤波器设计、分析和实现

Signal Processing Toolbox™ 提供的函数和 App 可用于设计、分析和实现各种数字 FIR 和 IIR 滤波器,如低通滤波器、高通滤波器和带阻滤波器。可视化幅值、相位、群延迟、脉冲和阶跃响应。检查滤波器极点和零点。通过测试稳定性和相位线性来计算滤波器性能。对数据应用滤波器,并使用零相位滤波消除延迟和相位失真。

Signal Processing Toolbox 还提供一些函数,用于设计和分析模拟滤波器,包括 Butterworth、Chebyshev、Bessel 和椭圆设计。使用脉冲不变性和双线性变换等离散化方法执行模数滤波器转换。

数字滤波器设计
FIR、IIR、加窗、等波纹、最小二乘、Butterworth、Chebyshev、椭圆、脉冲整形

数字滤波器分析
幅值、相位、脉冲和阶跃响应、相位和群延迟、极点-零点分析

数字滤波
零相位滤波、中位数滤波、叠加滤波、传递函数表示

多采样率信号处理
抽取、插值、下采样、上采样、抗混叠滤波器

模拟滤波器
Bessel、Butterworth、Chebyshev、椭圆、双线性变换、分析函数

5.6. 频谱分析

功率谱、相干性、窗口

Signal Processing Toolbox™ 提供一系列频谱分析函数和 App,用于表征信号的频谱。基于 FFT 的非参数化方法,如 Welch 的方法或周期图,对输入数据不做任何假设,可用于任何类型的信号。参数化方法和子空间方法,如 Burg 法、协方差法和 MUSIC 法,结合信号的先验知识,可以产生更准确的频谱估计。

使用 Lomb-Scargle 法计算非均匀采样信号或具有缺失采样的信号的功率谱。通过估计信号的频谱相干性来测量频域中的信号相似性。设计和分析 Hamming、Kaiser、高斯和其他数据窗。

频谱估计
周期图,Welch 和 Lomb-Scargle PSD,相干性,传递函数,频率重排

参数化频谱估计
Burg、Yule-Walker、协方差和修正协方差方法

子空间方法
频率和伪频谱估计、多信号分类 (MUSIC)、根 MUSIC

加窗法
Hamming、Blackman、Bartlett、Chebyshev、Taylor、Kaiser

5.7. 时频分析

频谱图、交叉频谱图、同步压缩、重排、Wigner-Ville、Hilbert-Huang、kurtogram

Signal Processing Toolbox™ 提供的函数和 App 可用于可视化和比较非平稳信号的时频内容。计算短时傅里叶变换及其逆变换。使用重排或傅里叶同步压缩获得清晰的频谱估计。绘制交叉频谱图、Wigner-Ville 分布和持久性频谱。提取并跟踪时频脊。估计瞬时频率、谱峭度和频谱熵。使用经验模态分解和 Hilbert-Huang 变换执行数据自适应时频分析。

5.8. 振动分析

阶数分析、时间同步平均、包络频谱、模态分析、雨流计数

Signal Processing Toolbox™ 提供的函数可用于研究和表征机械系统中的振动。使用阶数分析来分析和可视化旋转机械中出现的频谱内容。跟踪和提取阶数及其时域波形。将信号的平均频谱估计为阶数的函数。通过估计频率-响应函数、固有频率、阻尼比和模态形状来执行试验模态分析。绘制稳定图。使用时间同步平均法连贯地去除噪声,并使用包络频谱分析磨损。为疲劳分析生成高循环雨流计数。

5.9. 信号的机器学习和深度学习延伸

信号标注、特征工程、数据集生成

Signal Processing Toolbox™ 为机器学习和深度学习工作流提供执行信号标注、特征工程和数据集生成的功能。

6. DSP System Toolbox

DSP System Toolbox™ 提供多种算法、App 和示波器,用于在 MATLAB® 和 Simulink® 中设计、仿真和分析信号处理系统。您可以为通信、雷达、音频、医疗设备、IoT 和其它应用进行实时 DSP 系统建模。

DSP System Toolbox 支持您设计和分析 FIR、IIR、多速率、多级和自适应滤波器。您可以从变量、数据文件和网络设备流式传输信号以进行系统开发和验证。时域示波器、频谱分析器和逻辑分析器支持您对流信号进行动态可视化和测量。在桌面原型构建和嵌入式处理器(包括 ARM® Cortex® 架构)部署方面,该系统工具箱支持 C/C++ 代码生成。它还支持从滤波器、FFT、IFFT 和其他算法进行位真定点建模和 HDL 代码生成。

算法采用多种形式,包括 MATLAB 函数、System object™ 和 Simulink 模块。

其主要功能为:

  1. Signal Generation, Manipulation, and Analysis
    Create, import, export, display, and manage signals

  2. Filter Design and Analysis
    FIR, IIR, frequency transformations

  3. Filter Implementation
    Single-rate, multirate, and adaptive filters

  4. Transforms and Spectral Analysis
    FFT, DCT, spectral analysis, linear prediction

  5. Statistics and Linear Algebra
    Measurements, statistics, matrix math, linear algebra

  6. Fixed-Point Design
    Floating-point to fixed-point conversion, fixed-point algorithm design

  7. Code Generation
    Simulation acceleration, code generation, optimization for ARM Cortex-M Processors and ARM Cortex-A Processors

  8. Applications
    Simulate radar, communication, and biomedical systems

6.1. 信号的产生、处理和分析

创建、导入、导出、显示和管理信号

DSP System Toolbox™ 提供了使用 MATLAB 或 Simulink 在时间和频率域分析、测量和可视化信号的工具。您可以生成和传输信号,对这些信号执行操作,并实时可视化这些变化。要动态地可视化信号,可以使用频谱分析仪、时间范围、数组图和逻辑分析器块或系统对象。

Signal Operations 信号操作
Delay, interpolate, reorder, resample, window 延迟,插值,重新排序,重采样,窗口

Signal Generation 信号产生
Create signals 创建信号

Signal Input and Output 信号输入和输出
Interface with external signals 与外部信号接口

Scopes and Data Logging 范围和数据记录
Display and record data 显示和记录数据

Buffers, Switches, and Counters 缓冲器、开关和计数器
Change sample rate or frame rate of signals, count events, detect edges, perform actions when events occur 改变采样率或帧速率的信号,计数事件,检测边缘,执行行动时,事件发生

Signal Attributes and Indexing 信号属性和索引
Inspect and modify data and signal attributes and select data subsets 检查和修改数据和信号属性,并选择数据子集

6.2. Filter Design and Analysis

FIR, IIR, frequency transformations

You can design and analyze a variety of digital FIR and IIR filters using DSP System Toolbox™ functions and apps. Some of these filters include advanced filters such as Nyquist filters, halfband filters, advanced equiripple filters, and quasi-linear phase IIR filters.

The design techniques compute the filter coefficients of based on the specifications. The analysis techniques help you validate the specifications of the designed filter. Analysis techniques include plotting the frequency response of the filter, finding the group delay of the filter, or determining if the filter is stable.

Filter design and analysis are complementary and iterative. After you design a filter, analysis tools help you determine if the filter meets the required specifications. The toolbox provides design and analysis apps such as filterBuilder and fvtool. To learn how to use filterBuilder, see Filter Builder Design Process.

You can also transform filters from one form to another form using functions such as firlp2hp, iirlp2bs, iirlp2bpc.

Filter Design
FIR, IIR

Filter Analysis
Analyze filters and filter objects

Frequency Transformations
Transform filters to other forms, use features in a filter to develop another filter

6.3. Filter Implementation

Single-rate, multirate, and adaptive filters

DSP System Toolbox™ provides filter blocks and System objects that enable you to filter a streaming signal in MATLAB® and Simulink®. In addition to the conventional FIR and IIR filters, this toolbox also provides specialized filters such as multirate multistage filters, wave digital filters, and Farrow filters.

Single-Rate Filters 单速率过滤器
FIR, IIR, overlap-add FIR, biquad, lattice, Farrow

Multirate and Multistage Filters 多速率多级滤波器
Decimation, interpolation, rate conversion 抽取,插值,速率转换

Adaptive Filters 自适应滤波器
LMS, RLS, frequency domain filters, affine projection filter, adaptive lattice filter LMS,RLS,频域滤波器,仿射投影滤波器,自适应格型滤波器

6.4. Transforms and Spectral Analysis

FFT, DCT, spectral analysis, linear prediction

The frequency-domain representation of a signal reveals important signal characteristics that are difficult to analyze in the time domain. Spectral analysis lets you characterize the frequency content of a signal. The FFT and IFFT System objects and blocks in DSP System Toolbox™ enable you to convert a streaming time-domain signal into the frequency-domain, and vice versa. To compute the spectral estimate of the signal, use the dsp.SpectrumEstimator System object™ in MATLAB® and the Spectrum Estimator block in Simulink®. You can visualize the spectral estimate using the spectrum analyzer System object and block.

The spectrum analyzer in DSP System Toolbox uses the Welch’s method of averaging modified periodogram and the filter bank method. Both these methods are FFT-based spectral estimation methods that make no assumptions about the input data and can be used with any kind of signal. For more information on the algorithm the spectrum analyzer uses, see Spectral Analysis.

Transforms
DCT, FFT, HDL FFT, HDL IFFT, IDCT, IFFT

Linear Prediction
Convert between linear predictive coefficients (LPC) and cepstral coefficients, LSF, LSP, and RC

Spectral Analysis
Parametric and nonparametric methods

6.5. 统计和线性代数

测量,统计,矩阵数学,线性代数

DSP System Toolbox™ 提供了用于测量流信号统计的功能,例如 MATLAB® 和 Simulink® 中的均值,中值,RMS 和峰峰值。 您可以对这些信号执行多种操作,例如沿指定尺寸添加信号值并将信号值转换为 dB 标度。

DSP System Toolbox 系统线性代数模块使您可以处理矩阵。 例如,要通过Levinson-Durbin 和 Cholesky 方法求解一组线性方程,请使用 Levinson-Durbin 和Cholesky Solver 块。 这些技术通常用于诸如 Yule-Walker AR 问题和线性预测编码之类的应用中。 要将方矩阵分解为上下分量,请使用 LDL分解,LU 分解和 QR 分解等方法。

DSP System Toolbox™ provides functionality for measuring streaming signal statistics such as mean, median, RMS, and peak-to-peak values in MATLAB® and Simulink®. You can perform several operations on these signals, such as adding the signal values along a specified dimension and converting the signal values into a dB scale.

DSP System Toolbox system linear algebra blocks enable you to work with matrices. For example, to solve a set of linear equations through Levinson-Durbin and Cholesky methods, use the Levinson-Durbin and Cholesky Solver blocks. These techniques are commonly used in applications such as the Yule-Walker AR problem and linear predictive coding. To factorize a square matrix into upper and lower components, use methods such as LDL factorization, LU factorization, and the QR factorization.

Measurements and Statistics
Bistate waveform measurements, variance, histogram, autocorrelation

Array and Matrix Mathematics
Array and matrix operations, polynomial fitting

Linear Algebra
Solve linear equations, factor and invert matrices

6.6. Fixed-Point Design

Floating-point to fixed-point conversion, fixed-point algorithm design

To model fixed-point signal processing algorithms and analyze the effects of quantization on system behavior and performance, you can use the DSP System Toolbox™ and Fixed-Point Designer™ functionality.

Perform design tradeoff analyses and optimizations on these algorithms by simulating them with different word lengths, scaling, overflow handling, and rounding method choices before you commit to hardware.

Fixed-Point Overview 定点概览
Basics of fixed-point concepts and terminology 定点概念和术语基础

Fixed-Point Filters 定点滤波器
Fixed-point filter design 定点滤波器设计

Floating-Point to Fixed-Point Conversion 浮点到定点的转换
Algorithm and model conversion 算法与模型转换

Quantizers 量化器
Encoders, decoders, scalar and vector quantizers 编码器,解码器,标量和矢量量化器

6.7. Simulink 中的信号处理和线性代数模块

Simulink 包含 DSP System Toolbox™ 信号处理算法模块库,涉及滤波器、变换和线性代数。这些模块将流输入信号处理为单个采样或采样集合(又称“帧”)。基于采样的处理模式支持需要标量处理的低延迟处理和应用。基于帧的处理模式支持以延迟换取更高吞吐量。系统工具箱可同时支持基于采样和基于帧的处理模式。

使用 System object 的 MATLAB 程序可通过 MATLAB Function 模块或 MATLAB System 模块合并到 Simulink 模型中。大多数 System object 都对应具有相同功能的 Simulink 模块。

MATLAB与信号处理课程手册_第4张图片

基于帧的操作,在每个中断服务例程之间采集一帧,每帧采样数为 16,可以看到,基于帧的吞吐率相比基于采样高出许多倍。

6.7.1. 针对 DSP 系统设计、实现和测试的信号处理模块

Simulink 信号处理模块支持双精度和单精度浮点数据类型和整数数据类型,与 Fixed-Point Designer 配合使用时,还支持定点数据类型。

DSP System Toolbox 中的信号处理模块包括:

  • 信号变换,如快速傅立叶变换 (FFT)、离散余弦变换 (DCT)、短时傅立叶变换 (STFT) 和离散小波变换 (DWT)
  • FIR、IIR 和模拟滤波器的滤波器设计和实现
  • 用于采样率转换的多速率和多级滤波器,如CIC、半带、多相和 Farrow
  • 用于频谱估计、均衡和噪声抑制的统计和自适应信号处理技术
  • 信号操作和测量,如卷积、加窗、填充、延迟、峰值查找和过零
  • 使用时域示波器、频谱分析器等工具进行的流信号可视化和测量
  • 信号管理方法,如缓冲、索引、切换、堆栈和队列
  • 接收端和发送端,如线性调频和有色噪声生成器、NCO、UDP 接收机和发射机等
  • 数值线性代数例程,包括线性方程组求解器、矩阵分解和矩阵求逆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xc9ConBh-1606572446393)(https://ww2.mathworks.cn/content/mathworks/cn/zh/products/dsp-system/_jcr_content/mainParsys/band_copy_688706585__1595870678/mainParsys/columns_copy_1135913496/2/image_copy.adapt.full.high.jpg/1602870364073.jpg)]

Simulink 中的 DSP System Toolbox 信号处理模块库(上),以及线性方程组求解器(左下)和变换(右下)的扩展视图。

6.7.2. 多速率系统建模

在 MATLAB 中,DSP System Toolbox 支持采样率转换的多速率处理,并支持为需要对接不同采样率或时钟频率的系统建模。多速率功能包括多级和多速率滤波器,如 FIR 和 IIR 半带、多相滤波器、CIC 滤波器和 Farrow 滤波器。该功能还包括插值、抽取和任意采样率转换等信号操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJmnyc9W-1606572446394)(https://ww2.mathworks.cn/content/mathworks/cn/zh/products/dsp-system/_jcr_content/mainParsys/band_copy_688706585__1595870678/mainParsys/columns_copy_1135913/2/image.adapt.full.high.jpg/1602870364215.jpg)]

用作 Sigma-Delta 模数转换器的多级抽取滤波器的 Simulink 模型

6.8. MATLAB 中的流信号处理

DSP System Toolbox 为 MATLAB 中的流信号处理提供框架。该系统工具箱带有一个针对流信号处理进行优化的信号处理算法库,涉及单速率和多速率滤波器、自适应滤波器和 FFT。该系统工具箱是您设计、仿真和部署信号处理解决方案的理想选择,适用于音频、生物医学、通信、控制、地震、传感器和语音等多种应用领域。

流信号处理方法能够处理持续流动的数据流,通常可以通过将输入数据划分为帧并在采集每个帧时对其进行处理来加速仿真。例如,MATLAB 中的流信号处理能够实时处理多声道音频。

流信号处理依托于一个 DSP 算法组件库,这些组件属于 System object™,可表示数据驱动算法、发送端和接收端。System object 可通过自动执行数据索引、缓冲和算法状态管理等任务来帮助您创建流应用程序。您可以将 MATLAB System object 与标准 MATLAB 函数及运算符混合使用。

您可以使用时域示波器和频谱分析器对流信号进行可视化和测量。

您可使用针对流信号和数据进行优化的算法,将单速率、多速率和自适应滤波器应用到流数据。
MATLAB与信号处理课程手册_第5张图片

MATLAB 代码实现基本流循环(左)。时域示波器(右上)和频谱分析器(右下)在实时信号生成和处理的同时对其进行可视化和测量。

6.8.1. DSP 系统设计、实现和测试的算法库

DSP System Toolbox 提供超过 350 种针对流系统的设计、实现和验证进行优化的算法,无论作为 MATLAB 函数实现还是作为 MATLAB System object实现。这些算法均支持双精度和单精度浮点数据类型。大多数算法还支持整数数据类型,也支持定点数据类型(需要 Fixed-Point Designer™)。

在 MATLAB 中,该系统工具箱包含以下类型的算法:

  • 信号变换,如快速傅立叶变换 (FFT)、离散余弦变换 (DCT)
  • 用于数字 FIR 和 IIR 滤波器的设计和实现方法
  • 用于采样率转换的多速率和多级滤波器,如 FIR 和 IIR 半带、多相滤波器、CIC 滤波器和 Farrow 滤波器
  • 用于频谱估计、均衡和噪声抑制的统计和自适应信号处理方法
  • 信号操作和测量,如卷积、加窗、填充、建模延迟、峰值查找和可变分数延迟
  • 运行时信号可视化,借助时域示波器、频谱分析器和逻辑分析器实现

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlEd97t5-1606572446397)(https://ww2.mathworks.cn/content/mathworks/cn/zh/products/dsp-system/jcr_content/mainParsys/band_copy_688706585/mainParsys/columns_copy_1135913496/2/image_copy.adapt.full.high.jpg/1602870364660.jpg)]

MATLAB 中提供的部分信号处理算法,可由命令行帮助显示,也可通过 Tab 键自动填充查找。

6.8.2. 多速率系统

在 MATLAB 中,DSP System Toolbox 支持采样率转换的多速率处理,并支持为需要对接不同采样率或时钟频率的系统进行建模。多速率功能包括多级和多速率滤波器,如 FIR 和 IIR 半带、多相滤波器、CIC 滤波器和 Farrow 滤波器。该功能还包括插值、抽取和任意采样率转换等信号操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VhHYHXXq-1606572446397)(https://ww2.mathworks.cn/content/mathworks/cn/zh/products/dsp-system/jcr_content/mainParsys/band_copy_688706585/mainParsys/columns_copy_1135913/2/image.adapt.full.high.jpg/1602870364802.jpg)]

多级数字下变频器的各级频率响应

6.9. 单速率和多速率 FIR 和 IIR 滤波器设计以及自适应滤波器

DSP System Toolbox 提供了大量 FIR、IIR、多级、多速率和自适应滤波器的滤波器设计和实现算法。您可以设计低通、高通、带通、带阻以及其他响应类型的滤波器。您还可以采用直接型 FIR、叠加 FIR、IIR 二阶节(双二阶)、级联全通和格型结构等滤波器结构来实现这些滤波器。

您可以使用 Filterbuilder、MATLAB 代码或 Simulink 模块来设计滤波器。此外,您还可以分析 FIR 和 IIR 滤波器的定点量化效应,并确定滤波器系数的最佳字长。

您也可以设计可调滤波器,以在运行时调节带宽和增益等滤波器关键参数。

在 MATLAB 中使用 DSP System Toolbox 设计的数字滤波器也可以用于 Simulink 中的系统级模型。该系统工具箱包含一个即用型滤波器模块库,支持您直接在 Simulink 中设计、仿真和实现低通、高通和其他滤波器。

除了传统的 FIR 和 IIR 滤波器设计算法,DSP System Toolbox 还支持以下专用滤波器和设计方法:

  • 高级等波纹 FIR 滤波器,包括最小阶、约束波纹和最小相位设计
  • Nyquist、FIR 半带和 IIR 多相滤波器,提供线性相位、最小相位和准线性相位半带设计以及等波纹、斜向频率阻带和窗函数方法
  • CIC 插值器和抽取器滤波器,用于软件定义无线电和 Sigma-Delta 转换器中的无乘法实现
  • 优化的多级设计,可通过优化级联的级数实现最低的计算复杂度
  • 分数延迟滤波器,包括基于 Farrow 滤波器结构的实现,适用于可调滤波应用
  • 具有任意群延迟的全通 IIR 滤波器,可以补偿其他 IIR 滤波器的群延迟,从而获得近似线性的通带相位响应
  • 格波数字 IIR 滤波器,具有稳健的实现
  • 任意幅值和相位的 FIR 和 IIR 滤波器,支持各种滤波器设定的设计

6.9.1. 自适应滤波器

DSP System Toolbox 提供多种方法,支持在 MATLAB 和 Simulink 中进行自适应滤波。这些技术广泛运用于系统识别、频谱估计、均衡和噪声抑制等应用场合。此类自适应滤波器包括基于 LMS、基于 RLS、仿射投影、快速横向、频域、基于格型和卡尔曼滤波器。该系统工具箱还包含用于分析这些自适应滤波器的算法,包括系数跟踪、学习曲线和收敛。

6.9.2. 多速率和多级滤波器和分析

DSP System Toolbox 提供多速率滤波器的设计和实现,包括多相插值器、抽取器、采样率转换器、FIR 半带和 IIR 半带、Farrow 滤波器以及 CIC 滤波器和补偿器,并且支持多级设计方法。该系统工具箱还提供专用分析函数,用于估计多速率和多级滤波器的计算复杂度。

6.10. 信号示波器、分析器和测量工具

DSP System Toolbox 提供示波器和数据记录功能,可用于 MATLAB 和 Simulink 中流信号的时域或频域可视化、测量和分析。这些示波器的测量和统计功能与行业标准示波器和频谱分析器类似,符合用户习惯。

该系统工具箱还提供用于显示时域信号中转换的逻辑分析器,有助于调试面向 HDL 实现的模型。

您还可以创建任意绘图以将数据向量可视化,如一段时间内的滤波器系数变化。

时域示波器在时域中显示信号,它支持各种信号,包括连续、离散、固定大小、可变大小、浮点数据、定点数据以及多信道 I/O 系统中的 N 维信号。时域示波器支持同时显示多个信号,可以是在同一坐标轴上显示具有不同维度、采样率和数据类型的多个信号,也可以是在示波器窗口中以不同画面分别显示各个数据信道上的信号。时域示波器可执行分析、测量和统计功能,包括均方根 (RMS)、峰间值、均值和中位数。

频谱分析器可计算各种输入信号的频谱,并以线性刻度或对数刻度显示其频谱。频谱分析器可执行各种测量和分析,如谐波失真测量(THD、SNR、SINAD、SFDR)、三阶交调失真测量 (TOI)、邻信道功率比测量 (ACPR)、互补累积分布函数 (CCDF) 和峰均功率比 (PAPR)。频谱分析器的频谱模式视图显示如何查看时变频谱,并支持自动峰值检测。

DSP System Toolbox 还提供一系列可视化工具,可用于显示和测量各种信号或数据,包括实数值或复数值数据、向量、数组和任意数据类型(包括定点、双精度或用户定义的数据输入序列)的帧。其中一些可视化工具提供流数据或信号的三维显示,以便您持续分析数据直至仿真停止。

6.11. 定点建模和仿真

可以将 DSP System Toolbox 与 Fixed-Point Designer 结合使用,来对定点信号处理算法进行建模,并分析作用于系统行为和性能的量化效应。也可以从 MATLAB 代码或 Simulink 模型生成定点 C 代码。

可以在该系统工具箱中针对定点运算模式配置 MATLAB System object 和 Simulink 模块,以便事先使用不同字长、定标、溢出处理和舍入方法选项运行仿真来执行设计权衡分析和优化,之后再提交给硬件。

许多 DSP 算法都支持定点模式,包括 FFT、滤波器、统计和线性代数算法。DSP System Toolbox 会为定点运算自动配置 System object 和模块。

6.11.1. 定点滤波器设计

在 DSP System Toolbox 中,您可以使用滤波器设计函数和 Filterbuilder 设计浮点滤波器,然后使用 Fixed-Point Designer 将其转换为定点数据类型。此设计流程简化了定点滤波器的设计和优化过程,并支持对量化效应开展分析。

7. Signal Processing Toolbox 和 DSP System Toolbox 的联系和区别

7.1. 联系

  • Signal Processing Toolbox 和 DSP System Toolbox 均是利用基本的信号与系统知识,可以对信号做一些基本的分析和处理。
  • 均可产生一些特定的信号,如 chirp 信号,脉冲信号等。
  • 均可设计数字滤波器如 FIR, IIR 滤波器
  • 均可对信号在时域和频域进行转化并分析
  • 等等

7.2. 区别

  • Signal Processing Toolbox 侧重于对信号进行分析,提取信号的各种特征;而 DSP System Toolbox 侧重于对信号进行处理。
  • Signal Processing Toolbox 提供了很多函数,侧重于面向过程编程,而DSP System Toolbox 更侧重于面向对象编程。
  • DSP System Toolbox 提供了很多 System Object 和 Blockset,和Simulink 联系很紧密。可以在 Simulink 利用 DSP System Toolbox所提供的各种 Blockset 进行建模和仿真,并利用示波器等达到数据的可视化。
  • DSP System Toolbox 提供了很多算法库可以对流信号进行处理,而 SPToolbox 确没有提供这样的算法库。
  • 等等,总之,DSP System Toolbox 更加强大,更加侧重于工程应用,
  • SPToolbox 侧重于对信号进行分析,并可以对信号进行一些简单的处理如去趋势,平滑去噪等。

8. Simulink

仿真和基于模型的设计

Simulink® 是一个模块图环境,用于多域仿真以及基于模型的设计。它支持系统级设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。Simulink 提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。Simulink 与 MATLAB® 相集成,这样您不仅能够在 Simulink 中将 MATLAB 算法融入模型,还能将仿真结果导出至 MATLAB 做进一步分析。

8.1. 应用领域

  • 一般应用领域
    说明一般应用的示例模型
  • 汽车应用领域
    使用 Simulink® 和其他 MathWorks® 产品对汽车系统进行建模和仿真
  • 航空应用领域
    使用 Simulink 和 Aerospace Blockset™ 软件进行航空航天系统建模
  • 工业自动化应用领域
    说明工业自动化应用的示例模型
  • 信号处理
    使用 DSP System Toolbox™ 软件对信号处理和通信系统建模
  • 物理建模
    使用 Simscape™ 软件进行物理系统建模
  • 复杂逻辑
    使用 Stateflow® 图为复杂逻辑建模
  • 离散事件仿真
    进行离散事件系统建模和仿真
  • 系统工程
    使用 System Composer™ 软件设计和分析系统体系结构
  • 大型建模
    适用于大型模型和多用户开发团队的模型架构

8.2. Simulink 环境基础知识

以交互方式或编程方式构建模块图,从模块库中选择模块

Simulink 提供可自定义的模块库、用于交互式模型编辑的图形编辑器和用于编程式模型编辑的 API。

一个全面的预定义模块库可以帮助您构建模型来表示动态系统。使用 Simulink Editor 将库中的模块添加到模型中。然后,使用信号线连接模块,以确立各系统组件之间的数学关系。您可以优化模型的外观,并控制用户如何与模型交互。

8.2.1. Simulink 概念

Simulink® 中有关动态系统建模和仿真的概念

有关动态系统建模和仿真的术语和定义在使用中存在不一致甚至混同的情况。以下主题中所述的概念为各种 Simulink 软件工具的使用提供一致且通用的表述。

8.2.1.1. Systems and Models

Mathematical description of systems and models for those systems

The concept in this topic provide a common language for using Simulink software tools.

(1)System
A system is a group of interdependent physical and functional parts with measurable characteristics that change over time.

For example, a vehicle is a system with multiple parts. Measurable characteristics include the linear speed of the vehicle and the rotational speed of the wheels.

(2)System Component
A system component is part of a system that interacts with the other parts of the system. The interactions between components define the structure and behavior of the system.

For example, a cruise control module is a system component in a vehicle system. A microcontroller and the hardware associated with it define the structure while a software algorithm to control speed defines the behavior.

(3)Model
A model is a mathematical description of a system derived either from physical laws or experimental data. The description typically uses a set of variables with a set of differential and difference equations that define the relationships between the variables.

In the following example for a vehicle, u ( t ) u(t) u(t) is the force (N) moving a vehicle forward, v ( t ) v(t) v(t) is the velocity ( m / s m/s m/s), b is a drag coefficient ( N ׂ ׂ ⋅ s / m Nׂׂ·s/m Nׂׂs/m), and m m m is the mass of the vehicle (kg).

The vehicle is a continuous system. For continuous systems, differential equations describe the rate of change for variables with the equations defined for all values of time. The velocity of the vehicle v(t) and its acceleration v'(t) are defined with the following first order differential equation.

m v ′ ( t ) + b v ( t ) = u ( t ) mv'(t) + bv(t) = u(t) mv(t)+bv(t)=u(t)

You can create a Simulink model for this equation by adding blocks, specifying block behavior, and using signal lines to connect the blocks to each other. The following Simulink block diagram implements the differential equation.
MATLAB与信号处理课程手册_第6张图片

(4)Model Component
A model component is part of a model that interacts with the other parts through an interface of inputs and outputs. Simulink implements model components using Subsystem and Model blocks. A Model block references another Simulink model saved in a separate file.

In the following example, the control model was saved in the Simulink model file control_model.slx, and then referenced from a Model block in a second Simulink model. A Subsystem block was added for modeling the vehicle mechanics.
MATLAB与信号处理课程手册_第7张图片

Typically, controllers are built with discrete systems using a computer to implement the control algorithm. For discrete systems, difference equations describe the rate of change for variables defined only at specific times. For example, the control signal for a simple discrete PI (proportional–integral) controller can be defined with the following difference equation.

P I [ n ] = e [ n ] K p + ( e [ n ] + i n t e g r a l [ n − 1 ] ) K i PI[n] = e[n]Kp + (e[n]+integral[n-1])Ki PI[n]=e[n]Kp+(e[n]+integral[n1])Ki

Where e[n] is the error between a signal whose value is controlled (velocity) and the specified value (set velocity), Kp is the proportion constant, Ki is the integration constant, and n is the time step.

The following Simulink block diagram implements the difference equation.
MATLAB与信号处理课程手册_第8张图片

8.2.1.2. Simulink Models

A model is an abstract and simplified description of a system using mathematical equations and diagrams. The modeling concepts in this topic provide context for understanding the process of mathematically describing a system with Simulink® software tools.

(1)Block Diagram
A block diagram is a visual representation of a model in the Simulink Editor. The editor allows you to add blocks selected from block libraries representing elementary model components. Elementary components include integrator, gain, and sum blocks. Blocks are connected to each other with signal and event lines to visually construct the model equations.

MATLAB与信号处理课程手册_第9张图片

Block Diagram Semantics
A classic block diagram of a system is drawn graphically with blocks and lines. The history of these block diagrams is derived from engineering areas such as Feedback Control Theory and Signal Processing. A block within a block diagram defines a model in itself. The relationships between elementary models are represented by signal lines connecting the blocks. The blocks and lines in a block diagram collectively describe the overall model of a system.

MATLAB与信号处理课程手册_第10张图片

Simulink extends classic block diagrams by:

  • Adding a set of equations (block methods) to each block that defines the time-based relationships between the input signals, output signals, and block state variables.

  • Adding parameters to each block that specify the coefficients from the model equations.

  • Providing an engine for numerical solution of the block diagram by evaluating the relationships over time, where time starts at a user-specified “start time” and ends at a user-specified “stop time.”

(2)Blocks

A block is a basic modeling construct of the Simulink Editor. Add blocks from the built-in Simulink libraries to perform specific operations. You can also create custom blocks. Some blocks have input signals, output signals, and states. Most blocks have parameters that you use to specify block behavior. Whether a block has parameters and the nature of those parameters is specific to each block.

Each block represents a set of equations for the Simulink engine. The equations are represented as block methods. The blocks shown above have the following block methods.

Block methods are evaluated during the simulation of a block diagram. The evaluation of the block methods is performed within a simulation loop, where each cycle through the simulation loop represents the evaluation of the block diagram at a given point in time.

Virtual Blocks

Virtual blocks organize and provide graphical hierarchy in a model, but they do not affect the simulation result. During model simulation, Simulink expands the blocks in place before execution, a process known as flattening. This expansion is similar to the way macros work in a programming language such as C or C++.

Simulink defines the following virtual blocks:

  • Virtual Subsystem – Use a virtual subsystem to encapsulate related and functional parts within a larger model. A Virtual Subsystem block has the check box for the parameter Treat as atomic unit cleared.
    MATLAB与信号处理课程手册_第11张图片

  • Inport and Outport – Use port blocks to move data (signals) and events (function calls) from outside a Subsystem block or referenced Model block to within the block, and vice versa.
    MATLAB与信号处理课程手册_第12张图片

  • Bus Creator, Bus Assignment, Bus Selector – Bus blocks combine signals into a virtual bus and manage the routing of signals around a complex block diagram. Virtual buses are a graphical convenience and do not change the behavior of the model.
    MATLAB与信号处理课程手册_第13张图片

Nonvirtual Blocks
Nonvirtual blocks provide execution control and graphical hierarchy in a model.

(3)Lines
A line is a basic modeling construct of the Simulink Editor. Lines connect the output ports of blocks with the input ports of other blocks.

(4)Data

Data includes the parameter and input signal values that Simulink uses to produce the output values resulting from simulating the behavior of a model.

(5)Parameters
Parameters are Simulink model characteristics that affect the simulation and code generation result.

(6)Properties
Properties are Simulink model characteristics that generally do not affect the simulation result. To specify properties, in the Modeling tab, under Design, click Property Inspector.

(7)State variables
The state of a model is defined by the values of its state variables. State variables are the set of variables whose values at time zero, along with the values of model inputs and the model equations, can determine the behavior of a model during a simulation. Examples of state variables include motor position and velocity, inductor current, capacitor voltage, solution temperature, and gas pressure.

If the current output value of a block is a function of the previous output value, the block defines a state variable that needs to be saved between time steps. Computing a block output hence entails saving the value of the state variable at the current time step for use in computing the output at a subsequent time step.

8.2.1.3. Simulink Simulation

Simulating the model of a dynamic system allows you to gain insight about the behavior of a proposed system design without the time consuming process of actually building the system. The concepts in this topic provide a context for understanding how to control a model simulation with Simulink® software tools.

(1)Compilation
Compilation is the Simulink process where the block diagram is translated to an internal representation that interacts with the Simulink engine.

There are no model-level sets of differential equations that are solved numerically as a whole. Instead, the model-level equations correspond to the individual block equations that are solved numerically in a specific order.

Block Methods
The functionality of a single block is defined by multiple equations. These equations are represented as block methods. These block methods are evaluated (executed) during the execution of a block diagram. The evaluation of these block methods is performed within a simulation loop, where each cycle through the simulation loop represent the evaluation of the block diagram at a given point in time. Common block methods include:

  • Derivative – Computes the derivatives of the block’s continuous states at the current time step, given the block inputs and the values of the states at the previous time step.

  • Update – Computes the value of the block’s discrete states at the current time step, given its inputs at the current time step and its discrete states at the previous time step.

  • Output – Computes the outputs of a block given its inputs at the current time step and its states at the previous time step.
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DA8qTOGt-1606572446412)(https://ww2.mathworks.cn/help/simulink/slref/glossary_compilation.png)]

Model Method
In addition to block methods, a set of methods is provided that compute the model properties and its outputs. The Simulink software similarly invokes these methods during simulation to determine a model’s properties and its outputs. The model methods generally perform their tasks by invoking block methods of the same type. For example, the model Outputs method invokes the Outputs methods of the blocks that it contains in the order specified by the model to compute its outputs. The model Derivatives method similarly invokes the Derivatives methods of the blocks that it contains to determine the derivatives of its states.

(2)Callback
Callbacks are MATLAB expressions that execute in response to a specific modeling action. Simulink provides model, block, and port callback parameters that identify specific kinds of modeling actions. You provide the code for callback parameters. Simulink executes the callback code when the associated modeling action occurs.

Model Callback
Model callback parameters include:

  • PreloadFcn – Executes before a model loads. For example, you can provide code that loads the variable values a model uses into the MATLAB workspace.

Block Callback
Block callback parameters include:

  • OpenFcn – Execute when you open a Subsystem block.

  • LoadFcn – Execute after a diagram is loaded. For a Subsystem blocks, also execute block callback parameters for the blocks within Subsystem block.

Port Callback
Port callback parameter:

  • ConnectionCallback - Execute code every time the connectivity of a port changes.

(3)Execution Order
The Execution order is the sequence in which block output methods are called after evaluating direct feedthrough of each input port. To display execution order, in the Debug tab, select Information Overlays > Execution Order.

In the following model, the Integrator block output runs first, and then the loop of blocks connected to the Integrator block input. Missing execution numbers in a sequence are usually due to hidden buffer blocks.
MATLAB与信号处理课程手册_第14张图片

(4)Simulation
Simulation is the process after model compilation where block method outputs and states are computed at successive time steps over a specified time range using a numerical solver.

During each simulation loop, Simulink calculates a Δt to determine the time step t(k+1) = t(k) + Δt. The size of Δt is based on an estimated error between the simulated solution and the actual solution. At the end of a simulation, data results are given as vectors [t, X, Y] for time, state and output at each time step.
MATLAB与信号处理课程手册_第15张图片

(5)Solver
A Solver finds an approximate solution for a set of model equations. Simulink uses established numerical solvers for this task.

Solver step size can be fixed or variable:

  • Fixed step – Time step T(k+1) = T(k) + Δt where Δt is constant. If step size is too large, simulation results can have a large error. In the following example, a step size of 2 distorts the shape of a sine wave signal. You can specify the size of the time step in the case of fixed-step solvers, or the solver can automatically determine the step size in the case of variable-step solvers.
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoOBZdTz-1606572446417)(https://ww2.mathworks.cn/help/simulink/slref/glossary_simulation01.png)]

  • Variable step – Variable step solvers iterate to reach a solution based on an error tolerance. Time step T(k+1) = T(k) + Δtₖwhere Δtₖ changes from one simulation step to the next depending on the estimated error. Smaller time steps increase the accuracy of the simulation results. To minimize the computation workload, a variable-step solver chooses the largest step size consistent with achieving an overall level of precision specified by the error tolerance and observing zero-crossings. This ensures that all model states are computed to the accuracy specified by the user.

Choosing a solver method depends on the nature of the model equations. Euler’s method is a simple numerical solver that calculates the next value of y by using the slope (y') of a tangent line to y. If y is a function that integrates a ramp function x with a slope of 1, y' = x, and a numerical solver would use the following equations.

x[n+1] = x[n] + Δt*1
y[n+1] = y[n] + Δt*x[n+1]

Decreasing the step size increases the accuracy of the results. but it increases the time to complete a simulation. In the following example, a step size of 2 shows an error of about 20 percent after 10 seconds while a step size of 0.5 produces a result that is closer to the actual solution.
MATLAB与信号处理课程手册_第16张图片

8.3. 建模

设计动态系统的模型

通过 Simulink® 利用模块图为算法和物理系统建模。您可以为线性及非线性系统建模,以便模拟真实的现象,如摩擦、齿轮滑动和强迫停止。

通过将各组模块组织成子系统,可以将您的模型设计成层次结构。利用这种方法,可以构建反映真实系统的离散组件,并对这些组件之间的交互进行仿真。

尽早考虑系统设计需求可以减少设计过程后期发现的错误数量。有关迭代设计的示例,请参阅Basic Modeling Workflow。

使用 Simulink 进行基于模型的设计,其中系统模型是整个开发过程(从需求开发到设计、实现和测试)的核心。

8.4. 仿真

运行模型、查看结果并验证系统行为

使用 Simulink®,您可以通过交互方式对系统模型进行仿真,并通过波形和图形显示查看结果。对于连续、离散和混合信号系统的仿真,您可以从一系列固定步长和可变步长求解器中进行选择。求解器是能够计算系统随时间动态变化的积分算法。

由于 Simulink 已经与 MATLAB® 集成,所以您可以使用 MATLAB 命令对 Simulink 模型运行无人值守的批处理仿真。

仿真流程:

准备模型输入和输出. 定义外部接口用于输入数据和控制信号, 定义输出信号用于查看和记录仿真结果
配置仿真条件. 选择求解器, 设置初始条件, 选取输入数据集, 设置步长大小
运行仿真. 以交互方式或批处理模式进行模型仿真, 使用 SimState 创建可重复的仿真, 运行蒙特卡罗仿真
查看和分析仿真结果. 查看仿真结果以便为模型建立原型并进行调试, 检查和比较多次仿真的数据以验证设计
测试和调试仿真. 提高仿真准确性, 管理和诊断仿真错误
优化性能. 针对特定目的优化性能,加快仿真速度以及设计高效模型

8.5. 怎样理解 Simulink 建模

通过 Simulink® 利用模块图为算法和物理系统建模。您可以为线性及非线性系统建模,以便模拟真实的现象,如摩擦、齿轮滑动和强迫停止。

通过将各组模块组织成子系统,可以将您的模型设计成层次结构。利用这种方法,可以构建反映真实系统的离散组件,并对这些组件之间的交互进行仿真。

尽早考虑系统设计需求可以减少设计过程后期发现的错误数量。有关迭代设计的示例,请参阅Basic Modeling Workflow。

使用 Simulink 进行基于模型的设计,其中系统模型是整个开发过程(从需求开发到设计、实现和测试)的核心。

8.6. 怎样理解 Simulink 仿真

仿真的概念:
利用模型复现实际系统中发生的本质过程,并通过对系统模型的实验来研究存在的或设计中的系统,又称模拟。这里所指的模型包括物理的和数学的,静态的和动态的,连续的和离散的各种模型。所指的系统也很广泛,包括电气、机械、化工、水力、热力等系统,也包括社会、经济、生态、管理等系统。当所研究的系统造价昂贵、实验的危险性大或需要很长的时间才能了解系统参数变化所引起的后果时,仿真是一种特别有效的研究手段。仿真的重要工具是计算机。仿真与数值计算、求解方法的区别在于它首先是一种实验技术。仿真的过程包括建立仿真模型和进行仿真实验两个主要步骤。

Simulink 仿真就是通过 Simulink 建立研究对象的模型,如物理模型、数学模型、静态模型、动态模型、连续模型、离散模型的各种模型,然后再通过计算机求解的方法得到仿真后的结果,了解到系统在运行过程中的参数变化以及各种性能等。

9. Deep Learning Toolbox

设计、训练和分析深度学习网络

Deep Learning Toolbox™ 提供了一个用于通过算法、预训练模型和 App 来设计和实现深度神经网络的框架。您可以使用卷积神经网络(ConvNet、CNN)和长短期记忆 (LSTM) 网络对图像、时序和文本数据执行分类和回归。您可以使用自动微分、自定义训练循环和共享权重来构建网络架构,如生成对抗网络 (GAN) 和孪生网络。使用 Deep Network Designer,您能够以图形方式设计、分析和训练网络。Experiment Manager 可帮助您管理多个深度学习试验,跟踪训练参数,分析结果,并比较不同试验的代码。您可以可视化层激活,并以图形方式监控训练进度。

您可以通过 ONNX™ 格式与 TensorFlow™ 和 PyTorch 交换模型,并从 TensorFlow-Keras 和 Caffe 导入模型。该工具箱支持使用 DarkNet-53、ResNet-50、NASNet、SqueezeNet 和许多其他预训练模型进行迁移学习。

您可以在单 GPU 或多 GPU 工作站(安装了 Parallel Computing Toolbox™)上加快训练速度,或扩展到群集和云,包括 NVIDIA® GPU Cloud 和 Amazon EC2® GPU 实例(安装了 MATLAB® Parallel Server™)。

9.1. 图像深度学习

从头开始训练卷积神经网络或使用预训练的网络快速学习新任务

您可以通过定义网络架构并从头开始训练网络,来创建新的用于图像分类和回归任务的深度网络。您还可以使用迁移学习以利用预训练网络所提供的知识来学习新数据中的新模式。通常来说,使用迁移学习对预训练的图像分类网络进行微调比从头开始训练更快更容易。使用预训练的深度网络,您可以快速学习新任务,而无需定义和训练新网络,也不需要使用数百万个图像或强大的 GPU。

定义网络架构后,必须使用 trainingOptions 函数定义训练参数。然后,您可以使用 trainNetwork 训练网络。使用经过训练的网络预测类标签或数值响应。

您可以在一个 CPU、一个 GPU、多个 CPU 或 GPU 上训练卷积神经网络,或者在群集中并行训练或在云中训练。在 GPU 上训练或并行训练需要 Parallel Computing Toolbox™。使用 GPU 训练需要具有 3.0 或更高计算能力的支持 CUDA® 的 NVIDIA® GPU。使用 trainingOptions 函数指定执行环境。

9.2. 时序、序列和文本深度学习

创建和训练用于时序分类、回归和预测任务的网络

创建和训练用于时序分类、回归和预测任务的网络。训练用于“序列到单个”或“序列到标签”的分类和回归问题的长短期记忆 (LSTM) 网络。您可以使用单词嵌入层对文本数据训练 LSTM 网络(需要 Text Analytics Toolbox™),或使用频谱图对音频数据训练卷积神经网络(需要 Audio Toolbox™)。

你可能感兴趣的:(学习笔记,MATLAB,信号处理)