主要内容

在MATLAB中使用系统对象设计系统

基于MATLAB的系统设计与仿真

系统对象允许您在MATLAB中设计和模拟您的系统®.如图所示,您可以在MATLAB中使用系统对象。

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

  2. 配置组件-如果需要,更改对象的属性值,以建模您的特定系统。所有系统对象™属性都有默认值,您可以使用这些默认值而无需更改它们。看到配置组件

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

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

创建单个组件

本节中的示例展示了如何使用软件中预定义的System对象。如果使用函数创建和使用System对象,请使用条件代码指定对象的创建。如果在循环中调用该函数,条件化创建可以防止错误。您也可以创建自己的System对象,参见创建系统对象

本节将展示如何使用DSP system Toolbox™和Audio Toolbox™中的预定义组件来设置系统:

  • dsp。AudioFileReader—读取音频数据文件

  • dsp。FIRFilter—过滤音频数据

  • audioDeviceWriter—播放过滤后的音频数据

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

audioIn = dsp.AudioFileReader;filtLP = dsp.FIRFilter;audioOut = audioDeviceWriter;

配置组件

何时配置组件

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

大多数属性是相互独立的。但是,一些System对象属性启用或禁用另一个属性或限制另一个属性的值。为了避免错误或警告,应该在设置依赖属性之前设置控制属性。

显示组件属性值

要显示对象的当前属性值,请在命令行中键入该对象的句柄名称(例如audioIn).要显示特定属性的值,请键入objecthandle.propertyname(如audioIn。文件名).

配置组件属性值

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

如果您创建了独立于配置的组件,则可以使用此过程。您还可以同时创建和配置组件,如后面的示例所述。

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

对于滤波器对象,使用fir1函数指定滤波器分子系数,该函数指定低通滤波器顺序和截止频率。

对于音频设备写入器对象,指定采样率。在本例中,使用与输入数据相同的采样率。

audioIn。文件名=“speech_dft_8kHz.wav”;audioIn。OutputDataType =“单身”;filtLP。分子= fir1(160 .15点);audioOut。SampleRate = audioIn.SampleRate;

同时创建和配置组件

这个例子展示了如何创建System对象组件并同时配置所需的属性。用“Name”、“Value”参数对指定每个属性。

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

audioIn = dsp。AudioFileReader (“speech_dft_8kHz.wav”...“OutputDataType”“单身”);

创建过滤器对象并使用fir1函数指定过滤器分子。指定fir1函数的低通滤波器顺序和截止频率。

filtLP = dsp。FIRFilter (“分子”fir1(160 .15点));

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

audioOut = audioDeviceWriter (“SampleRate”, audioIn.SampleRate);

将部件组装成系统

连接系统对象

在确定了所需的组件并创建和配置了System对象之后,组装系统。您可以像使用其他MATLAB变量一样使用System对象,并将它们包含在MATLAB代码中。您可以将MATLAB变量传入和传出系统对象。

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

使用一个对象的输出作为另一个对象的输入。对于某些系统对象,您可以使用这些对象的属性来更改输入或输出。要验证正在使用的输入和输出的适当数量,您可以使用输入参数个数而且nargout在任何系统对象上。有关所有可用的系统对象函数的信息,请参见系统对象的功能

连接系统组件

本节将展示如何将组件连接在一起以读取、筛选和播放音频数据文件。while循环使用结束函数读取整个文件。

~isDone(audioIn) audio = audioIn();读取音频源文件y = filtLP(音频);%筛选数据audioOut (y);播放过滤后的数据结束

你的系统运行

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

系统运行时不能更改的内容

对System对象的第一个调用初始化并运行该对象。当System对象开始处理数据时,不能更改不可调属性。

根据System对象的不同,可能还会限制其他规范:

  • 输入的大小

  • 输入的复杂性

  • 输入数据类型

  • 可调的属性数据类型

  • 离散状态数据类型

如果System对象的作者限制了这些规范,那么在使用System对象时尝试更改它们将会出错。

重新配置对象

改变属性

当System对象开始处理数据时,您不能更改nontunable属性。您可以使用isLocked在任何系统对象上验证对象是否正在处理数据。处理完成后,可以使用释放函数释放资源并允许更改不可调属性。

一些对象属性是可调,这使您能够更改它们,即使对象正在使用中。大多数系统对象属性是不可调的。参考对象的引用页以确定单个属性是否可调。

更改输入复杂度、维度或数据类型

在使用对象期间,在调用算法之后,一些System对象不允许更改输入复杂性、大小或数据类型。如果System对象限制这些规范,则可以调用释放更改这些规范。调用释放还重置System对象的其他方面,如状态和离散状态。

更改系统中的一个可调属性

此示例演示如何在代码运行时将筛选器类型更改为高通筛选器分子属性。更改将在下次调用对象时生效。

重置(audioIn);%重置音频文件Wn = (0.05, 0.1, 0.15, 0.2);x=1:4000 Wn_X = ceil(x/1000);filtLP。分子= fir1 (Wn (Wn_X), 160年“高”);音频= audioIn ();读取音频源文件y = filtLP(音频);%筛选数据audioOut (y);播放过滤后的数据结束
Baidu
map