主要内容

什么是系统对象?

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

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

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

许多System对象支持:金宝app

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

  • C代码生成(需要一个MATLAB编码器™金宝app®编码器许可)

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

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

请注意

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

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

  • 对象的创建(例如,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对象都支持以下对象函数金宝app。在函数不适用于特定对象的情况下,调用该函数对对象没有影响。

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

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

例子:用于对象dft = dsp.FFT;,通过:

  • Y = d (x)

  • Y = step(dft,x)

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

释放

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

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

另请参阅

相关的话题