主要内容

什么是系统对象?

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

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

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

许多系统对象支持:金宝app

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

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

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

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

请注意

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

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

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

  • 通过对象运行数据(例如,fft256 (x)

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

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

运行系统对象

要运行System对象并执行其算法定义的操作,需要像调用函数一样调用该对象。例如,要创建一个使用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)

公共对象功能

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

函数 描述
运行对象函数,或者
一步

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

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

  • y = dft (x)

  • y =步骤(dft, x)

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

释放

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

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

另请参阅

相关的话题