主要内容

idinput

生成输入信号以支持系统识别

描述

idinput命令为系统生成具有指定特征的输入信号。您可以使用生成的输入,并模拟系统的响应来研究系统行为。例如,您可以研究系统对周期性输入的响应。该系统可以是一个实际的物理系统或一个模型,如Simulink®模型。你也可以设计最佳实验。例如,您可以确定哪些输入信号可以隔离系统中的故障或非线性。你也可以用idinput设计一个有足够带宽的输入来激发系统的动态范围。

例子

u= idinput (N返回单通道随机二进制输入信号u的长度N.生成的信号值为-1或1。

例子

u= idinput ([Nν])返回一个ν-通道随机二进制输入信号,其中每个通道信号都有长度N.每个通道中的信号彼此不同。

例子

u= idinput ([νNumPeriod])返回一个ν-通道周期随机二进制输入信号,具有指定的周期和周期数。每个输入通道信号都有长度NumPeriod

例子

u= idinput (___类型指定要生成的输入类型为以下类型之一:

  • 苏格兰皇家银行的-随机二进制信号

  • “该公司”-随机高斯信号

  • “伪随机位序列”-伪随机二进制信号

  • 的正弦——Sum-of-sinusoids信号

与前面的任何输入参数组合一起使用。

例子

u= idinput (___类型乐队指定信号的频带。对于伪随机二进制信号,乐队指定信号时钟周期的倒数。

例子

u= idinput (___类型乐队范围指定信号的幅值范围。

例子

u频率) = idinput (___正弦的,乐队范围SineData指定了类型作为正弦信号的和,并指定用于生成信号的正弦波的特性SineData.您可以指定特征,如正弦波的数量和它们的频率分离。正弦波的频率返回频率

例子

全部折叠

生成具有200个样本的单通道随机二进制输入信号。

N = 200;u = idinput (N);

u长度为200的列向量。中的值u不是-1就是1。

创建一个iddata对象生成的。对于本例,将采样时间指定为1秒。

u = iddata ([], u, 1);

要检查信号,把它画出来。

情节(u)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个对象表示u。

生成的信号是一个值为-1或1的随机二进制输入信号。方法可以使用生成的输入信号来模拟系统的输出sim卡命令。

生成200个样本的双通道随机二进制输入信号。

N = 200;u = idinput ([N, 2]);

u是一个值为-1或1的200 × 2矩阵。

创建一个iddata对象生成的。对于本例,将采样时间指定为1秒。

u = iddata ([], u, 1);

画出这两个通道的信号,并检查信号。

情节(u)

图中包含2个轴对象。标题为u1的Axes对象1包含一个类型为line的对象。标题为u2的Axes对象2包含一个类型为line的对象。这个对象表示u。

该图显示了两个生成的值为-1或1的随机二进制信号。

生成一个单通道周期随机二进制输入信号,周期为10个样本,信号中有5个周期。

NumChannel = 1;时间= 10;NumPeriod = 5;u = idinput ([NumChannel, NumPeriod]);

u为长度为50的列向量(= Period*NumPeriod)。中的值u不是-1就是1。

创建一个iddata对象生成的。指定采样时间为1秒。

u = iddata ([], u, 1);

画出信号。

情节(u)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个对象表示u。

根据指定,生成的单通道周期随机二进制输入信号周期为10秒,信号中有5个完整周期。

生成一个单通道周期随机高斯输入信号,其周期为50个样本,信号中有5个周期。首先使用整个频率范围生成信号,然后指定通带。

NumChannel = 1;时间= 50;NumPeriod = 5;u = idinput ([NumChannel, NumPeriod],“该公司”);

u为长度为250的列向量(= Period*NumPeriod)。

创建一个iddata对象,并绘制该信号。对于本例,将采样时间指定为0.01秒。

u = iddata ([], u, 0.01);情节(u)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个对象表示u。

这幅图显示u包含50个样本的随机片段,重复5次。该信号是均值为0,方差为1的高斯白噪声信号。

由于采样时间为0.01秒,因此生成的信号周期为0.5秒。信号的频率内容跨越整个可用范围(0- 50hz)。

现在指定0到25hz之间的通频带(= 0.5倍Nyquist频率)。

Band = [0 0.5];u2 = idinput ([NumChannel, NumPeriod],“该公司”、带);

创建一个iddata对象,并绘制信号。

u2 = iddata ([], u2, 0.01);情节(u2)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个物体代表u2。

所生成信号的频率内容u2限制在0- 25hz。

伪随机二元输入信号(PRBS)是一种频率特性模拟白噪声的确定性信号。一个PRBS具有固有的周期性,其最大周期长度为 2 n - 1 ,其中整数n是PRBS的阶数。有关更多信息,请参见伪随机二进制信号

指定单通道PRBS值在-2和2之间切换。

范围= (2,2);

指定信号的时钟周期为1个样本。也就是说,信号的值可以在每一个时间步变。对于PRBS信号,时钟周期在乐队= [0 B],其中B是所需时钟周期的倒数。

Band = [0 1];

生成长度为100个样本的非周期性PRBS。

u = idinput (100“伪随机位序列”、乐队、范围);
警告:交付的PRBS信号是长度为127的完整序列的前100个值。

PRBS本质上是周期性的。为了生成非周期信号,该软件生成长度为127的最大长度PRBS,其周期大于所需的样本数100。该软件返回生成的PRBS的前100个样本。该操作确保所生成的信号不是周期性的,如所生成的警告所示。

创建一个iddata对象生成的。对于本例,将采样时间指定为1秒。

u = iddata ([], u, 1);

绘制,并检查生成的信号。

情节(u);标题(非周期信号的

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个对象表示u。

生成的信号是一个长度为100的非周期PRBS,在-2和2之间切换。

指定伪随机二进制输入信号(PRBS)在-2和2之间切换。

范围= (2,2);

指定信号的时钟周期为1个样本。也就是说,信号的值可以在每一个时间步变。对于PRBS信号,时钟周期在乐队= [0 B],其中B是所需时钟周期的倒数。

Band = [0 1];

生成一个单通道、周期的PRBS,周期为100个样本,信号中有3个周期。

u1 = idinput (100, 1, 3,“伪随机位序列”、乐队、范围);
警告:PRBS信号的周期被更改为63。因此,生成的信号的长度将是189。

一个PRBS具有固有的周期性,其最大周期长度为 2 n - 1 ,其中整数n是PRBS的阶数。如果指定的周期不等于最大长度的PRBS,软件将调整生成信号的周期,得到一个整数个最大长度的PRBS,并发出警告。有关最大长度PRBS的更多信息,请参见伪随机二进制信号.在本例中,所需的周期100不等于最大长度的PRBS,因此软件生成最大长度的顺序PRBSn = floor(log2(Period)) = 6.因此,PRBS信号的周期为63 (= 2 6 - 1 ),生成的信号长度为189 (=NumPeriod* 63)。这个结果显示在生成的警告中。

创建一个iddata对象,并绘制该信号。指定信号的周期为63个样本。

u1 = iddata ([], u1, 1,“时间”, 63);情节(u1)标题(周期信号的

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。该对象表示u1。

所产生的信号是一个具有三个周期的周期PRBS。

生成具有指定时钟周期的周期性和非周期性伪随机二进制输入信号(PRBS)。

生成一个在-2和2之间切换的单通道PRBS。指定信号的时钟周期为4个样本。也就是说,信号必须在至少4个连续样本中保持不变,才能发生变化。对于PRBS信号,时钟周期在乐队= [0 B],其中B是所需时钟周期的倒数。

范围= (2,2);Band = [0 1/4];

首先生成一个长度为100的非周期信号。

u1 = idinput (100“伪随机位序列”、乐队、范围);
警告:交付的PRBS信号是长度为124的完整序列的第100个头值。

要理解生成的警告,首先要注意代码等价于生成具有100个样本周期和1个周期的单通道PRBS。

u1 = idinput([100年,1,1],“伪随机位序列”,乐队,范围);

生成的PRBS信号必须在至少4个样本中保持恒定,才能改变其值。为了满足这一要求,软件首先计算最小可能的最大长度PRBS的顺序为n = floor(log2(周期*B)) = 4和时间 2 n - 1 1 5 .有关最大长度PRBS的信息,请参见伪随机二进制信号.然后软件拉伸这个PRBS,这样被拉伸信号的周期是 P 1 / B 2 n - 1 6 0

但是,由于这个时间段小于指定的长度100,软件会计算最大长度的顺序PRBSM = n+1 = 5.然后,软件将这个PRBS延伸到现在 P 2 1 / B 2 - 1 1 2 4 .软件返回这个信号的前100个样本作为u1.这个结果确保了生成的信号不是周期性的,而是每4个样本的常数。

创建一个iddata对象生成的。对于本例,将采样时间指定为1秒。

u1 = iddata ([], u1, 1);

绘制,并检查信号。

情节(u1);标题(非周期的信号的

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。该对象表示u1。

生成的信号是一个长度为100的非周期PRBS。在每次值变化之前,该信号在至少4个样本中保持不变。因此,信号满足中指定的时钟周期乐队

现在生成一个具有100个采样周期和3个周期的周期信号。

u2 = idinput (100, 1, 3,“伪随机位序列”、乐队、范围);
警告:PRBS信号的周期被更改为60。因此,生成的信号的长度为180。

为了生成具有指定时钟周期的周期信号,软件生成u2相当于原来的周期拉长信号的3次重复P = 60.因此,的长度u2P*NumPeriod = 60*3 = 180.所生成信号的周期和长度的变化在所生成的警告中显示出来。

创建一个iddata对象,并绘制该信号。指定信号的周期为60秒。

u2 = iddata ([], u2, 1,“时间”、60);情节(u2)标题(周期信号的

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个物体代表u2。

生成的信号是一个周期为60秒和3个周期的周期PRBS。在每次值变化之前,该信号在至少4个样本中保持不变。因此,信号满足指定的时钟周期。

您可以使用正弦波的默认特性生成正弦波和信号。或者,您可以配置正弦波的数量,以及正弦波的频率和相位。这个例子展示了两种方法。

指定信号在每个周期中有50个样本和3个周期。还要指定信号振幅范围在-1和1之间。

时间= 50;NumPeriod = 3;Range = [-1 1];

指定信号的频率范围。对于正弦和信号,用奈奎斯特频率的分数指定通带的低频和高频。在本例中,使用0到Nyquist频率之间的整个频率范围。

Band = [0 1];

首先使用正弦波的默认特性生成信号。软件默认使用10个正弦波来产生信号。该软件为每个正弦信号分配一个随机相位,然后改变这些相位10次,以获得最小的信号传播。信号差是所有样本中信号的最大值和最小值之间的差。

[u,freq] = idinput([Period 1 NumPeriod],的正弦、乐队、范围);

软件返回正弦信号的和u正弦信号的频率频率.中的值频率被缩放假设样本时间是1时间单位。假设采样时间为0.01小时。要检索以rad/小时为单位的实际频率,请将值除以样本时间。

t = 0.01;%采样时间(以小时为单位)频率=频率/ Ts;频率(1)
ans = 12.5664

频率(1)是第一个正弦波的频率。要了解软件如何选择频率,请参阅SineData参数的描述idinput参考页面。

为了验证该信号是由10个正弦波产生的,可以查看该信号的频率内容。对信号进行傅里叶变换,画出信号的单侧振幅谱。

ufft = fft (u);Fs = 2 *π/ Ts;%采样频率,单位为rad/hourL =长度(u);w = (0: L - 1) * Fs / L;茎(w (1: L / 2), abs (ufft (1: L / 2)))%绘制到奈奎斯特频率标题(“u(t)的单边振幅谱”)包含(的频率(rad /小时)) ylabel (“振幅”

图中包含一个axes对象。标题为u(t)单边振幅谱的轴对象包含一个干型对象。

生成的图显示了用于生成信号的10个正弦波的频率。例如,图中显示第一个正弦波的频率为12.57 rad/hour,与频率(1)

将生成的信号转换为iddata对象,并绘制信号。指定采样时间为0.01小时。

u = iddata ([], u, Ts,“TimeUnit”“小时”);情节(u)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个对象表示u。

信号u使用10个正弦信号生成,周期为0.5小时和3个周期。

现在修改用于生成正弦信号和的正弦信号的数量、频率和相位。使用12个正弦信号,尝试15组不同的相位。若要设置正弦信号的频率,请指定GridSkip= 2。该软件从频率网格的交点中选取正弦信号的频率2 *π* [1:GridSkip:修复(周期/ 2)]/和通频带π*乐队

NumSinusoids = 12;NumTrials = 15;GridSkip = 2;SineData = [NumSinusoids、NumTrials GridSkip];u2 = idinput([Period 1 NumPeriod],的正弦、乐队、范围、SineData);

将生成的信号转换为iddata对象,并绘制信号。

u2 = iddata ([], u2, Ts,“TimeUnit”“小时”);情节(u2)

图中包含一个axes对象。标题为u1的axes对象包含一个类型为line的对象。这个物体代表u2。

信号u2使用12个正弦信号生成,周期为0.5小时和3个周期。

输入参数

全部折叠

生成的输入数据样本数,指定为实正整数。对于单通道输入的数据,生成的输入uN行。对于一个ν声道输出的输入数据,u返回为N——- - - - - -ν矩阵,其中每个通道信号都有长度N

所生成信号的输入通道数,指定为实正整数。

在产生的信号的每个周期的样本数,指定为一个实正整数。使用此输入指定一个周期信号。中指定句点数NumPeriod.每个产生的输入通道信号都有NumPeriod *时期样本。

生成信号的周期数,指定为实正整数。使用此输入指定一个周期信号。还要指定信号.每个产生的输入通道信号都有NumPeriod *时期样本。

生成信号的类型,指定为以下值之一:

  • 苏格兰皇家银行的—生成随机二进制信号。随机二进制信号是一个随机过程,它只假设两个值。您可以使用范围.若要生成限带信号,请指定通带乐队.要生成周期信号,请指定而且NumPeriod

  • “该公司”—产生随机的高斯信号。生成的高斯信号具有均值μ和标准差σ,使[μ-σ, μ+σ]等于范围.若要生成带受限的高斯信号,请指定在中的通带乐队.生成一个周期高斯信号n采样重复的周期次,指定作为n而且NumPeriod作为

  • “伪随机位序列”—产生伪随机二进制信号(PRBS)。PRBS是一种周期性的确定性信号,具有类似白噪声的特性,在两个值之间移动。可以使用指定这两个值范围.您还可以指定时钟周期,即信号值不变的最小采样间隔数。您指定时钟周期的倒数乐队

    生成的信号的长度并不总是与您指定的相同。长度取决于您需要的是周期信号还是非周期信号,也取决于您指定的时钟周期。有关更多信息,请参见伪随机二进制信号

  • 的正弦-产生一个正弦信号的和。该软件选择正弦信号的频率均匀分布在选定的网格中,并为每个正弦信号分配一个随机相位。然后,该软件对每个正弦信号尝试几个随机相位,并选择给出最小信号传播的相位。信号差是所有样本中信号的最大值和最小值之间的差。对产生的正弦和信号的幅值进行缩放,以满足范围你指定。

    控件中指定用于生成信号的正弦波的特征,例如正弦波的个数和它们的频率分离SineData论点。

所生成信号的频率范围,指定为1 × 2的行向量,其中包含最小和最大频率值。

  • 如果类型“该公司”苏格兰皇家银行的,或的正弦——指定乐队作为一个通频带[wlow whigh].在那里,wlow而且whigh为通带的低频和高频,用奈奎斯特频率的分数表示。例如,要生成具有白噪声特性的输入,使用Band = [0 1]

    该软件实现了随机高斯信号的频率内容(“该公司”)使用idfilt用八阶巴特沃斯非因果滤波器。用于生成随机二进制信号(苏格兰皇家银行的),软件使用相同的滤波器,然后使信号二进制。因此,生成的随机二进制信号中的频率内容可能与指定的通带不匹配。

    的正弦信号,正弦信号的频率被选择均匀地分布在指定的通带中选定的网格上。有关更多信息,请参见SineData参数描述。

  • 如果类型“伪随机位序列”——指定乐队作为[0 B],在那里B是信号时钟周期的倒数。时钟周期是信号值不变的最小采样间隔数。因此,生成的信号在长度的间隔上是恒定的1 / B样本。如果1 / B不是整数,软件用地板(1 / B)作为时钟周期。

生成输入信号范围,指定为双元行向量的形式[umin, umax]

  • 如果类型苏格兰皇家银行的“伪随机位序列”-生成的信号u有值uminumax

  • 如果类型的正弦-生成的信号u之间有值umin而且umax

  • 如果类型“该公司”-生成的高斯信号具有平均值μ和标准差σumin而且umax分别等于μ-σ和μ+σ。例如,范围= [1]返回均值为0,方差为1的高斯白噪声信号。

用于生成正弦信号和的正弦信号的特性,指定为三元素行向量[NumSinusoids, NumTrials GridSkip].在那里,

  • NumSinusoids是用来产生信号的正弦信号的数量。默认值为10

  • NumTrials是软件试图找出最小信号传播的正弦信号的不同随机相对相位的数量。信号差是所有样本中信号的最大值和最小值之间的差。

    正弦和信号的最大振幅取决于不同正弦信号的相对相位。为了找到信号传播最小的相位,软件进行了尝试NumTrials不同的相位随机选择,以找到最佳的相位值。例如,假设这样NumSinusoids20.而且NumTrials5.该软件对20个正弦信号尝试5组不同的相对相位,并选择给出最小信号传播的相位。的默认值。NumTrials10

  • GridSkip用来表征正弦信号的频率。该软件从频率网格的交点中选取正弦信号的频率2 *π* [1:GridSkip:修复(周期/ 2)]/通频带π*(乐队乐队(1)(2)).对于多通道输入信号,该软件使用该频率网格中的不同频率生成不同的输入通道。您可以使用GridSkip例如,用于控制奇偶频率倍数,以检测不同类型的非线性。

    提取频率频率由软件选择来生成信号的,请使用以下语法。

    (u,频率)= idinput (__)

输出参数

全部折叠

生成输入信号,作为长度的列向量返回N对于单通道输入或N——- - - - - -ν矩阵的ν路信号。您使用生成的信号来模拟系统的响应sim卡

您可以创建iddata对象从u通过指定输出数据为[]

u = iddata ([], u);

iddata对象,还可以指定信号的属性,如采样时间、输入名称和周期性。

用于正弦信号和的正弦波频率,作为长度等于正弦信号数的列向量返回,NumSinusoids.你指定NumSinusoidsSineData论点。假设采样时间为1时间单位,频率值进行缩放。要检索实际频率,用值除以采样时间。示例请参见生成正弦和信号

对于多路输入信号,频率是一个ν——- - - - - -NumSinusoids矩阵的k第Th行包含了对应的频率k通道。有关软件如何选择频率的信息,请参阅SineData参数描述。

更多关于

全部折叠

伪随机二进制信号

伪随机二进制信号(PRBS)是一种周期性的确定性信号,具有类似白噪声的特性,在两个值之间移动。

生成的PRBS为:

u t r e 一个 1 u t 1 + ... + 一个 n u t n 2

在这里, u t 1 ... u t n 是过去输入的向量,n是PRBS的命令,和快速眼动表示余数当 一个 1 u t 1 + ... 一个 n u t n 除以2。因此,一个PRBS只能取0和1的值。软件会根据范围你指定。此外,矢量过去的输入 u t 1 ... u t n 只能采取2n值。在这些值之外,全为0的状态将被忽略,因为它将导致未来的信号等于零。因此,一个PRBS是一个固有的周期信号,其最大周期长度为2n-1.下表列出了不同订单可能的最大长度n伪随机位序列。

订单n 最大长度PRBS (2n-1
2 3.
3. 7
4 15
5 31
6 63
7 127
32 4294967295

请注意

软件不会产生周期大于的信号232-1

生成的PRBS长度

由于PRBS本质上是周期性的,因此生成的信号的长度和周期取决于您指定的时钟周期,以及您需要的是周期信号还是非周期信号。时钟周期是信号值不变的最小采样间隔数。指定时钟周期乐队

时钟周期= 1个样本(波段= [0 B] = [0 1]):

  • 生成一个非周期的信号的长度N, (NumPeriod= 1)时,软件首先计算周期大于的最大长度PRBSN.然后,软件返回第一个NPRBS的样本u.此操作确保u不是周期性的。例如,如果N= 100时,软件创建周期为127(订单7)的最大长度PRBS,并返回前100个样本作为u

    示例请参见生成一个非周期伪随机二进制输入信号

  • 生成一个周期信号NumPeriod> 1),软件调整信号的周期,以获得最大长度PRBS的整数个数。为了做到这一点,软件计算一个顺序的PRBSn =地板(log2(时期)和时间P = 2n-1.信号u然后生成为NumPeriod重复这个周期的PRBS信号P.因此,的长度uP * NumPeriod

    示例请参见生成一个周期伪随机二进制输入信号

    在多输入通道的情况下,信号被最大限度地移动。也就是说,不同输入之间的重叠被最小化。这意味着期/ NumPeriod是使用这种信号可以估计的模型阶数的上限。

时钟周期> 1样本(Band = [0 B],其中B<1):

产生的信号至少要保持恒定1 / B样本。为了满足这一要求,软件首先计算最小可能的最大长度PRBS的顺序为地板(n = log2(周期* B))和时间2n-1.然后,软件拉伸PRBS,使拉伸信号的周期为P = B-1(2n-1)

  • 生成一个非周期的信号的长度N,如果周期P的值大于或等于N,软件返回第一个N拉伸信号的样本为u.这将确保u是非周期性的,但对每一个都是常数1 / B样本。注意,对于非周期信号,等于N

    如果这段时间P小于N,该软件计算的是顺序的最大长度PRBSn2 = n + 1.然后,软件将这个PRBS延伸到现在P2= B-1(2n2-1).然后,软件返回第一个N此信号的样本为u

  • 生成一个周期信号,软件生成u作为NumPeriod重复延长的周期信号P.因此,的长度uP * NumPeriod

示例请参见生成具有指定时钟周期的伪随机二进制输入信号

参考文献

[1] Söderström T.和P.斯托伊卡。,第C5.3章系统识别普林蒂斯·霍尔,1989年。

[2] Ljung, L.,第13.3节系统识别:用户的理论, Prentice Hall PTR, 1999。

版本历史

之前介绍过的R2006a

Baidu
map