主要内容

evalsurf.

在特定设计点评估增益表面

描述

例子

GV.= evalsurf(GS.X在数组中指定的点列表上计算增益曲面X。点是调度变量值的组合。因此X是一个N-经过-m阵列,其中N是评估增益的点数,以及m是调度变量的数量GS.

例子

GV.= evalsurf(GS.x1,...,xm在矢量产生的矩形网格上评估增益表面x1,...,xm。每个矢量包含一个调度变量的值GS.

例子

GV.= evalsurf(___栅格指定布局GV.

例子

全部收缩

使用一个调度变量创建增益表面,并在调度变量列表中评估增益。

使用时使用增益表面时Tunablyurface.,指定调整增益系数的设计点。这些点通常是您对工厂进行采样或线性化的调度变量值。但是,您可能希望使用与指定设计点不同的断点来实现增益曲面作为查找表。在此示例中,您可以使用一组设计点创建增益曲面,然后使用不同的调度变量值进行评估表面。

创建标量增益,其变化为一个调度变量的二次函数,T.。假设您每五秒钟从植物中线性化T.= 0到T.= 40。

t = 0:5:40;Domain = struct('T',t);shapefcn = @(x)[x,x ^ 2];gs = tunablyurface('GS',1,域,shapefcn);

通常,您将作为控制系统的一部分调整系数。对于此示例,而不是调谐,手动将系数设置为非零值。

gs = setData(gs,[12.1,4.2,2]);

评估不同一组时间值的增益表面。

tvals =[0、4、11、18、25日,32岁的39岁42);%八个值gv = evalsurf(gs,tvals)
GV =8×19.9000 10.0200 10.6150 11.7000 13.2750 15.3400 17.8950 19.1400

GV.是一个8×1阵列。您可以使用TVALSGV.实现可变增益作为查找表。

在这些变量的值网格上使用两个调度变量评估增益表面。

使用时使用增益表面时Tunablyurface.,指定调整增益系数的设计点。这些点通常是您对工厂进行采样或线性化的调度变量值。但是,您可能希望使用与指定设计点不同的断点来实现增益曲面作为查找表。在此示例中,您可以使用一组设计点创建增益曲面,然后使用不同的调度变量值进行评估表面。

创建标量值增益表面,是两个独立变量的双线性函数, α. V.

[alpha,v] = ndgrid(0:1.5:15,300:30:600);Domain = struct(“α”,α,'v',v);shapefcn = @(x,y)[x,y,x * y];gs = tunablyurface('GS',1,域,shapefcn);

通常,您将作为控制系统的一部分调整系数。对于此示例,而不是调谐,手动将系数设置为非零值。

gs = setData(gs,[100,28,40,10]);

评估所选值的增益 α. V.

alpha_vec = [7:1:13];%n1 = 7分v_vec = [400:25:625];%n2 = 10分gv = evalsurf(gs,alpha_vec,v_vec);

您评估增益表面的断点不需要落在指定的范围内领域。但是,如果您尝试在用于调整的范围之外评估增益太远,则软件发出警告。

断点也无需定期间隔。evalsurf.评估通过的网格上的增益表面ndgrid(alpha_vec,v_vec)。检查结果阵列的尺寸。

大小(GV)
ans =.1×27 10.

默认情况下,网格尺寸n1-by-n2首先在数组中,然后是增益尺寸。GS.是标量值的增益吗GV.[7,10,1,1],或等效[7,10]。

每个位置的值GV.增益是在相应的情况下评估的(alpha_vec,v_vec)在网格中对。例如,GV(2,3)增益评估了(alpha_vec(2),v_vec(3))(8,450)

评估数组值增益表面,在这些变量的值的网格上使用两个调度变量进行两个调度变量。

创建具有两个调度变量的矢量值增益。

[alpha,v] = ndgrid(0:1.5:15,300:30:600);Domain = struct(“α”,α,'v',v);shapefcn = @(x,y)[x,y,x * y];gs = tunablyurface('GS',(2,2),域,shapefcn);

将初始恒定系数设置为那些(2,2)原因Tunablyurface.生成一个2 × 2的增益矩阵。该矩阵中的每一项都是一个独立的可调谐增益曲面,它是两个调度变量的双线性函数。换句话说,增益面为:

G S. = K. 0. + K. 1 α. + K. 2 V. + K. 3. α. V.

其中每个系数 K. 0. ...... K. 3. 本身是一个2×2的矩阵。

通常,您将根据控制系统的一部分调整那些增益曲面的系数。对于此示例,而不是调谐,手动将系数设置为非零值。

k0 = 10 * rand(2);K1 = 10 *兰特(2);k2 = 10 * rand(2);K3 = 10 *兰特(2);

Tunablyurface.对象通过将它们连接到2×8阵列来存储数组值系数(请参阅Tunablyurface.参考页面)。因此,连接这些值 K. 0. ...... K. 3. 改变系数GS.

gs = setData(gs,[k0 k1 k2 k3]);

现在在调度变量的所选值下评估增益表面。

alpha_vec = [7:1:13];%n1 = 7分v_vec = [400:25:625];%n2 = 10分gv = evalsurf(gs,alpha_vec,v_vec,'gridlast');

'gridlast'订购阵列GV.这样的增益值的尺寸,7×10的尺寸持续。首先是增益阵列本身的尺寸,2×2是首先。

大小(GV)
ans =.1×42 2 7 10

输入参数

全部收缩

增益表面来评估,指定为aTunablyurface.对象。GS.可以有任何数量的调度变量,可以是标量标值或数组值。

要评估增益表面的点,指定为阵列。点是调度变量值的组合。X有尺寸N-经过-m, 在哪里m是调度变量的数量GS.N是评估的点数GS.。因此,X是评估 - 值 - 值组合列表,用于评估增益。例如,假设GS.有两个调度变量,一种B.,你想评估GS.在10(一种B.)对。在这种情况下,X是一个10×2数组,列出了(一种B.).的点X不需要与设计点相匹配GS.SamplingGrid.

调度 - 可评估增益表面的变量值,指定为m阵列,在哪里m是调度变量的数量GS.。例如,如果GS.有两个调度变量,一种B., 然后X1X2是vector的一种B.值,分别。在网格上评估增益面ndgrid(x1,x2)。该网格中的值不需要与设计点相匹配GS.SamplingGrid.

输出阵列布局,指定为'gridfirst''gridlast'

  • 'gridfirst'-GV.是尺寸[n1,...,nm,ny,nu]使用网格尺寸,并持续增益尺寸。这个布局是标量增益的自然格式,其中ny = nu = 1

  • 'gridlast'-GV.是尺寸(纽约,ν,N1,…,海里)首先具有增益尺寸。这种格式对于矩阵值的增益更可读。

输出参数

全部收缩

增益值,作为数组返回。GV.包含在指定的点(调度 - 变量值)下评估的增益Xx1,...,xm。的大小GV.取决于调度变量的数量GS.,增益所定义的I / O尺寸GS.和价值栅格

如果您在列表中计算增益N数组中指定的点X,那么大小GV.[n,ny,nu]。这里,[ny,nu]是增益的I / O尺寸。例如,假设GS.为两个调度变量的标量增益曲面,一种B., 和X是一个10×2阵列包含10个(a,b)对。然后GV.是十个值的列向量。

如果您通过向量指定的网格计算增益x1,...,xm,然后是尺寸GV.取决于价值栅格

  • gridflag ='gridfirst'(默认) - 大小GV.[n1,...,nm,ny,nu]。每个是的长度xi.,第i个调度变量的值数。例如,假设GS.为两个调度变量的标量增益曲面,一种B., 和X1X2是4的载体一种价值观和5.B.值,分别。然后,大小GV.[4,5,1,1]或等效,[4,5]。或者如果GS.是三输出,双输入矢量值增益,那么大小GV.是[4,5,3,2]。

  • gridflag ='gridlast'- 的大小GV.(纽约,ν,N1,…,海里)。例如,假设GS.为两个调度变量的标量增益曲面,一种B., 和X1X2是4的载体一种价值观和5.B.值,分别。然后,大小GV.是[1,1,4,5]。或者如果GS.是三输出,双输入矢量值增益,那么大小GV.[3,2,4,5]。

提示

  • 采用evalsurf.将调谐增益曲面转换为查找表。放x1,...,xm到所需的表断点和使用GV.作为表数据。表断点不需要匹配用于调谐的设计点GS.

介绍了R2015b