主要内容

MATLAB使用系统对象的系统设计

MATLAB中的系统设计与仿真

系统对象允许您在Matlab中设计和模拟系统®。您在MATLAB中使用System对象,如本图所示。

  1. 创建单个组件- 创建系统对象以在系统中使用。创建单个组件。除了具有系统工具箱提供的系统对象外,还可以创建自己的系统对象。看创建系统对象

  2. 配置组件- 如有必要,请将对象的属性值更改为模拟特定系统。所有System Object™属性都有默认值,无需更改它们即可使用。看配置组件

  3. 将组件组装为系统- 写一个包含这些系统对象的MATLAB程序,将它们使用MATLAB变量作为输入和输出连接以模拟系统。看连接系统对象

  4. 运行你的系统- 运行您的程序。您可以在系统运行时更改可调性属性。看运行你的系统重新配置对象

创建单个组件

本节中的示例显示如何使用软件中预定义的系统对象。如果使用功能创建和使用系统对象,请使用条件代码指定创建对象创建。如果在循环中调用该函数,则会调整创建可防止错误。您还可以创建自己的系统对象,查看创建系统对象

本节介绍如何使用DSP Systembox™和Audio Toolbox™使用预定义组件设置系统:

  • dsp.audiofilereader.- 阅读音频数据的文件

  • dsp.firfilter.- 过滤音频数据

  • audiodevicewriter.- 播放过滤的音频数据

首先,使用默认属性设置创建组件对象。

AudioIn = dsp.audiofilereader;filtlp = dsp.firfilter;AudioOut = audiodeviceWriter;

配置组件

何时配置组件

如果在创建它时未设置对象的属性并且不想使用默认值,则必须显式设置这些属性。某些属性允许您在系统运行时更改其值。看重新配置对象有关信息。

大多数属性彼此独立。但是,某些系统对象属性使能或禁用另一个属性或限制另一个属性的值。为避免错误或警告,您应该在设置依赖属性之前设置控制属性。

显示组件属性值

要显示对象的当前属性值,请在命令行中键入对象的句柄名称(例如奥地策)。显示特定属性的值,键入ObjectHandle.Propertyname.(如isaivin.filename.)。

配置组件属性值

本节介绍如何通过设置组件对象的属性来配置系统的组件。

如果您已单独创建组件,请使用此过程。您还可以同时创建和配置组件,如稍后的示例中所述。

对于文件阅读器对象,请指定要读取和设置输出数据类型的文件。

对于过滤器对象,使用FIR1功能指定滤波器分器系数,该系数指定低通滤波器顺序和截止频率。

对于音频设备编写器对象,请指定采样率。在这种情况下,使用与输入数据相同的采样率。

AudioIn.Filename =.“speem_dft_8khz.wav”;AudioIn.OutputDatatype =.“单身的”;filtlp.numerator = fir1(160,.15);AudioOut.Samplerve = AudioIn.Sampleate;

同时创建和配置组件

此示例显示如何创建系统对象组件并同时配置所需的属性。使用“name”指定每个属性,值参数对。

创建文件阅读器对象,指定要读取的文件,并设置输出数据类型。

AudioIn = DSP.AudioFilereader(“speem_dft_8khz.wav”......'outputdatatype'“单身的”);

创建过滤器对象并使用FIR1功能指定过滤器分器。指定FIR1功能的低通滤波器顺序和截止频率。

filtlp = dsp.firfilter('分子',fir1(160,.15));

创建音频播放器对象并将采样率设置为与输入数据相同的速率。

oundout = audiodevicewriter('采样率',audioin.samplerate);

将组件组装为系统

连接系统对象

确定您需要的组件并已创建并配置系统对象后,组装系统。您使用像其他MATLAB变量一样的系统对象,并将其包含在MATLAB代码中。您可以将MATLAB变量传递到系统对象中。

使用系统对象和使用函数之间的主要区别在于系统对象使用两步过程。首先,创建对象并设置其参数,然后运行对象。运行对象初始化它并控制系统的数据流和状态管理。您通常在代码循环中调用系统对象。

您将输出从对象中的输出作为另一个对象的输入。对于某些系统对象,您可以使用这些对象的属性来更改输入或输出。要验证是否使用了适当数量的输入和输出,可以使用露狼在任何系统对象上。有关所有可用系统对象功能的信息,请参阅系统对象功能

在系统中连接组件

本节介绍如何将组件连接在一起读取,过滤器和播放音频数据文件。while循环使用已经完成了函数读取整个文件。

尽管〜Isdone(AudioIn)Audio = AudioIn();%读取音频源文件y = filtlp(音频);%过滤数据频道(Y);%播放过滤的数据结尾

运行你的系统

通过直接在命令行中键入或运行包含您程序的文件来运行代码。运行系统的代码时,通过对象处理数据。

在您的系统运行时,您无法更改的内容

第一个调用系统对象初始化并运行对象。当系统对象已开始处理数据时,无法更改非脉冲属性。

根据系统对象,还可能限制其他规格:

  • 输入大小

  • 输入复杂性

  • 输入数据类型

  • 可调性数据类型

  • 离散状态数据类型

如果系统对象作者限制了这些规范,则如果在使用系统对象时尝试更改它们,则会收到错误。

重新配置对象

更改属性

当系统对象已开始处理数据时,无法更改不可努力特性。您可以使用被锁住了在任何系统对象上,以验证对象是处理数据。处理完成后,您可以使用释放函数来释放资源并允许更改非innable属性。

某些对象属性是调节,即使对象正在使用,也可以更改它们。大多数系统对象属性都是不可运送的。请参阅对象的参考页面以确定是否可调谐单个属性。

更改输入复杂性,尺寸或数据类型

在对象使用过程中,您称为算法后,某些系统对象不允许更改输入复杂性,大小或数据类型。如果系统对象限制了这些规格,则可以调用释放更改这些规范。打电话释放还重置了系统对象的其他方面,例如状态和离散状态。

更改系统中的可调性

此示例显示如何将筛选器类型更改为高通滤波器,因为代码通过修改代码正在运行分子属性。更改在下次调用对象时生效。

重置(AudioIn);%复位音频文件wn = [0.05,0.1,0.15,0.2];为了x = 1:4000 wn_x = ceil(x / 1000);filtlp.numerator = fir1(160,wn(wn_x),'高的');Audio = AudioIn();%读取音频源文件y = filtlp(音频);%过滤数据频道(Y);%播放过滤的数据结尾