主要内容

什么是系统对象?

一个系统对象™是一个专门的MATLAB®对象。许多工具箱都包含System对象。系统对象是专门为实现和模拟输入随时间变化的动态系统而设计的。许多信号处理、通信和控制系统都是动态的。在动态系统中,输出信号的值既取决于输入信号的瞬时值,也取决于系统的过去行为。系统对象使用内部状态来存储过去的行为,这将在下一个计算步骤中使用。因此,系统对象被优化为在段中处理大量数据流的迭代计算,如视频和音频处理系统。这种处理流数据的能力提供了不必在内存中保存大量数据的优势。使用流数据还允许您使用有效地使用循环的简化程序。

例如,可以在从文件读取数据、过滤数据然后将过滤后的输出写入另一个文件的系统中使用System对象。通常,在每次循环迭代中将指定数量的数据传递给过滤器。文件读取器对象使用状态来跟踪文件中的何处开始下一次数据读取。同样,文件写入器对象跟踪最后一次将数据写入输出文件的位置,以防止数据被覆盖。过滤器对象维护自己的内部状态,以确保正确地执行过滤。这张图表示系统的单个循环。

这些优点使System对象非常适合处理流数据。

许多系统对象支持:

  • 定点算法(需要定点设计器™许可证)

  • C代码生成(需要一个MATLAB编码器™动态仿真模块®编码器许可)

  • HDL代码生成(需要HDL Coder™许可证)

  • 可执行文件或共享库生成(需要一个MATLAB编译器™许可)

请注意

检查产品文档以确认定点、代码生成和MATLAB编译器对您想使用的特定系统对象的支持。

系统对象使用至少两个命令来处理数据:

  • 对象的创建(例如,fft256 = dsp。FFT

  • 通过对象(例如,fft256 (x)

这种创建与执行的分离使您可以创建多个持久的、可重用的对象,每个对象具有不同的设置。使用这种方法可以避免重复输入验证和验证,允许在编程循环中轻松使用,并提高总体性能。相比之下,MATLAB函数在每次调用函数时都必须验证参数。

除了系统工具箱提供的系统对象外,您还可以创建自己的系统对象。看到创建系统对象

运行系统对象

要运行System对象并执行由其算法定义的操作,可以像调用函数一样调用该对象。方法创建的FFT对象dsp。FFT系统对象,指定1024的长度,并为其命名dft使用:

dft = dsp。FFT (“FFTLengthSource”“属性”“FFTLength”, 1024);
使用输入运行此对象x使用:
dft (x);
如果运行的System对象没有任何输入参数,则必须包含空括号。例如,asysobj ()

当您运行System对象时,它还执行与数据处理相关的其他重要任务,例如初始化和处理对象状态。

请注意

运行System对象的另一种方法是使用一步函数。例如,对于使用dft = dsp。FFT,您可以使用步骤(dft, x)

系统对象的功能

在创建System对象之后,您可以使用各种对象函数来处理数据或从对象获取关于对象的信息。使用函数的语法是<对象函数名>(<系统对象名>),加上可能的额外输入参数。例如,对于txfourier = dsp。FFT,在那里txfourier是你分配的名字,你叫重置函数使用重置(txfourier)

公共对象功能

所有System对象都支持以下对象函数。在函数不适用于特定对象的情况下,调用该函数对对象没有影响。

函数 描述
运行object函数,或者
一步

运行对象以使用该对象定义的算法处理数据。

例子:对于对象dft = dsp.FFT;,通过以下方式运行对象:

  • y = dft (x)

  • y =步骤(dft, x)

作为此处理的一部分,对象初始化资源,返回输出,并根据需要更新对象状态。在执行期间,您只能更改可调属性。运行System对象的两种方法都返回常规的MATLAB变量。

释放

释放资源并允许更改系统对象属性值和在使用系统对象时受到限制的其他特征。

重置 将System对象重置为该对象的初始值。
输入参数个数 返回System对象算法定义所接受的输入的数量。如果算法定义包含变长度输入宗量,输入参数个数输出是负的。
nargout 返回System对象算法定义所接受的输出数量。如果算法定义包含varargout,nargout输出是负的。
克隆 创建具有相同属性值的相同类型的另一个对象
isLocked 返回一个逻辑值,该值指示对象是否已被调用而您尚未调用释放在对象上。
结束 仅应用于继承的源对象matlab.system.mixin.FiniteSource.返回一个逻辑值,该值指示是否已到达数据文件的末尾。如果特定对象没有数据结束功能,则此函数值总是返回

另请参阅

相关的话题

Baidu
map