何谓 system object?
system object™ 是一种专用的 matlab® 对象。许多工具箱中都包含 system object。system object 专为实现和仿真输入随时间变化的动态系统而设计。许多信号处理、通信和控制系统都是动态的。在动态系统中,输出信号的值同时取决于输入信号的瞬时值以及系统的过往行为。system object 使用内部状态来存储下一个计算步骤中使用的系统过往行为。因此,system object 非常适用于分段处理大型数据流的迭代计算,例如视频和音频处理系统。这种处理流化数据的功能具有不必在内存中保存大量数据的优点。采用流化数据,您还可以使用可高效利用循环的简化程序。
例如,您可以在系统中使用 system object,以便从某个文件中读取数据、对该数据进行滤波,然后将滤波后的输出写入其他文件。通常,每次循环迭代中都会将指定数量的数据传递给滤波器。文件读取器对象使用状态来跟踪在文件中开始下一次数据读取的位置。同样,文件写入器对象会跟踪其最后将数据写入输出文件的位置,以使数据不会被覆盖。滤波器对象保留其自身的内部状态,以确保滤波正常执行。下图表示系统的单个循环。
这些优点使得 system object 适用于处理流化数据。
许多 system object 支持:
定点算术运算(需要 fixed-point designer™ 许可证)
c 代码生成(需要 matlab coder™ 或 simulink® coder 许可证)
hdl 代码生成(需要 hdl coder™ 许可证)
可执行文件或共享库生成(需要 matlab compiler™ 许可证)
注意
查看产品文档以确认要使用的特定 system object 对定点、代码生成和 matlab compiler 的支持。
system object 至少使用两个命令来处理数据:
创建对象(如
fft256 = dsp.fft
)通过对象运行数据(如
fft256(x)
)
通过将创建与执行分离,您可以创建多个持久的可重用对象,并且每个对象具有不同的设置。使用此方法可避免重复进行输入确认和验证、便于在编程循环中使用并提高整体性能。相比较而言,matlab 函数必须在您每次调用时对参数进行验证。
除了系统工具箱提供的 system object 以外,您还可以创建自己的 system object。请参阅。
运行 system object
要运行某个 system object 并执行其算法定义的操作,您可以调用该对象,就好像它是一个函数一样。例如,要创建一个 fft 对象(该对象使用 dsp.fft
system object、将长度指定为 1024 并命名为 dft
),请使用:
dft = dsp.fft('fftlengthsource','property','fftlength',1024);
x
运行此对象,请使用:dft(x);
asysobj()
。当您运行某个 system object 时,该对象还会执行与数据处理有关的其他重要任务,例如初始化和处理对象状态。
注意
运行 system object 的替代方法是使用 step
函数。例如,对于使用 dft = dsp.fft
创建的对象,您可以通过 step(dft,x)
来运行该对象。
system object 函数
在创建 system object 之后,可以使用各种对象函数来处理该对象的数据,或获取有关该对象的信息。使用函数的语法为