nD Lookup Table.docx

上传人:b****6 文档编号:4582135 上传时间:2022-12-06 格式:DOCX 页数:13 大小:84.78KB
下载 相关 举报
nD Lookup Table.docx_第1页
第1页 / 共13页
nD Lookup Table.docx_第2页
第2页 / 共13页
nD Lookup Table.docx_第3页
第3页 / 共13页
nD Lookup Table.docx_第4页
第4页 / 共13页
nD Lookup Table.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

nD Lookup Table.docx

《nD Lookup Table.docx》由会员分享,可在线阅读,更多相关《nD Lookup Table.docx(13页珍藏版)》请在冰豆网上搜索。

nD Lookup Table.docx

nDLookupTable

n-DLookupTable

近似​​N-维函数

查找表

描述

支持的块操作

n-DLookupTable块计算一个采样表示在N个变量的函数

函数F可以是经验。

该块映射输入到输出值,通过查找或内插表定义块参数的值。

该块支持平(常量),线性,三次样条插值方法。

您可以应用这些方法使任何维度表从1到30。

下面的块中,第一输入标识的第一维(列)断点,第二个输入标识的第二维(列)断点,等。

见HowtoRotateaBlock

断点和数据表规范

下面的块参数定义断点和表的数据。

块参数

目的

Numberoftabledimensions

指定您的查找表的维度。

Breakpoints

指定一个断点矢量,对应于每个维度的查找表。

Tabledata

定义输出值的组相关联的。

提示:

均匀分布的断点,可以使生成的代码划分。

见fixpt_evenspace_cleanup和Identifyquestionablefixed-pointoperations

该块是如何产生的输出

n-DLookupTable块生成输出通过查找或估算的输入值在基础的表上的值:

当块输入...

n-DLookupTable块...

断点数据集的值相匹配的索引

输出表中的值的行列的交点处,和更高的维度断点

不匹配的的断点数据集的索引值,但在范围之内

插入相应的表值,使用你选择的Interpolationmethod

不匹配的的断点数据集的索引值,和超出范围的

推断的输出值,使用你选择的Extrapolationmethod

其它块来执行类似的操作

您可以使用InterpolationUsingPrelookup块与Prelookup块执行相同的n-DLookupTable块操作。

块这样的组合提供了更大的灵活性,可以导致更有效的模拟性能的线性插值。

当查找操作是一个数组访问,不需要插值,使用DirectLookupTable(n-D)块.例如,如果您有一个整数k值和你想表的第k个元素,y=table(k),插值是不必要的。

数据类型支持

n-DLookupTable模块支持所有Simulink的支持的数字,包括定点数据类型的数据类型。

见DataTypesSupportedbySimulink.

三次样条插值和线性外插模式,下面的参数必须使用相同的浮点类型:

∙•表数据

•断点

•分数

•中间结果

•输出

输入索引必须是实数,但表中的数据可以是复数。

参数和对话框

n-DLookupTable块的TableandBreakpoints窗格出现如下对话框:

Numberoftabledimensions

输入查找表的数目的维度,通过指定一个从1到30的整数。

这个参数决定:

∙为表的独立变量的数目和块输入的数目

∙为指定设置断点的数目

Tabledata

键入表的输出值。

在模拟过程中,矩阵的大小必须与所定义的维度tabledimensions参数相匹配.然而,在框图编辑,你可以输入一个空矩阵(指定为[])或未定义的工作空间变量。

这种技术可以让你推迟指定正确的尺寸矩及阵表中的数据,并继续编辑框图。

见MultidimensionalArrays.

Breakpoints

在每个Breakpoints行中,输入设置的断点,对应于每个维度表中的数据。

对于每个维度,指定为1-n或n-1向量,其值是严格单调递增的断点。

Edittableandbreakpoints

单击此按钮可打开“查找表编辑器”。

见EditExistingLookupTables

Sampletime(-1forinherited)

指定样本之间的时间间隔。

要继承采样时间,此参数设置为-1。

见SpecifySampleTime

n-DLookupTable块的Algorithm窗格出现如下对话框:

Interpolationmethod

选择Flat,Linear,或Cubicspline.见InterpolationMethods

如果您选择Cubicspline,块只支持标量信号。

其他插值方法支持非标量信号。

Extrapolationmethod

选择Clip,Linear,或Cubicspline.见ExtrapolationMethods

要选择Cubicspline为Extrapolationmethod,你还必须选择Cubicspline为Interpolationmethod.

Uselasttablevalueforinputsatorabovelastbreakpoint

指定的块使用来解决设置了断点和其对应的表中的值的最后一个元素的索引惯例。

检查框

块使用索引

间隔分数

选择

最后一个元素设置了断点

0

清除

下一个到最后一个元素设置断点

1

此参数是可见仅当:

∙Interpolationmethod是Linear.

∙Extrapolationmethod是Clip.

Diagnosticforout-of-rangeinput

指定当输入超出范围,是否将产生一个警告或错误。

选项包括:

∙None—没有警告或错误

∙Warning—在MATLAB命令窗口中显示一个警告,并继续模拟

∙Error—停止模拟,并在模拟诊断浏览器中显示一个错误

Removeprotectionagainstout-of-rangeinputingeneratedcode

指定是否包括代码检查范围的断点输入值.

检查框

会导致

当使用

选择

生成的代码不包括条件语句来检查断点范围的输入。

代码的效率

清除

生成的代码包括条件语句来检查范围的断点输入。

对于安全关键型应用程序。

根据您的应用程序,你可以运行下面的模型指导检查,以确保使用此复选框:

∙ByProduct>EmbeddedCoder>Identifylookuptableblocksthatgenerateexpensiveout-of-rangecheckingcode

∙ByProduct>SimulinkVerificationandValidation>ModelingStandards>DO-178C/DO-331Checks>Checkusageoflookuptableblocks

见ConsulttheModelAdvisor

Indexsearchmethod

选择Evenlyspacedpoints,Linearsearch,或Binarysearch.每个搜索方法具有速度快的优点,在不同的情况下:

∙对于均匀间隔的断点集(例如,10,20,30,等等),则实现最佳的速度,通过选择Evenlyspacedpoints计算表索引。

该算法只使用第一个的两个断点的一组,以确定的偏移量和剩余的点间距

∙对于不均匀间隔断点集,遵循以下原则:

o如果输入信号变化不大之间的时间的步骤,选择Linearsearch为Beginindexsearchusingpreviousindexresult产生最佳的性能。

o如果输入信号每个时间步,跳一个或两个以上的表的时间间隔,选择Binarysearch产生最佳的性能。

一种次优选择索引搜索的方法可以导致降低性能很大程度上依赖于查找表的模型。

注:

生成的代码将第一个断点,间距,和断点时:

∙断点的数据是不可调的。

∙索引搜索的方法是Evenlyspacedpoints.

Beginindexsearchusingpreviousindexresult

选中此复选框,当你想使用索引在以前的时间步长的块开始搜索。

对于输入信号变化缓慢的时间间隔大小,使此选项可以提高性能。

否则,线性搜索和二进制搜索方法需要较长的时间,特别是对于较大的断点集。

Useoneinputportforallinputdata

选中此复选框只使用一个输入端口的信号,宽为n个元素的一个N维表。

有许多的查找表的框图,此选项可用于消除线路上的混乱

注:

当您选择此复选框后,块会出现一个输入端口具有标签u。

Supporttunabletablesizeincodegeneration

选择此复选框来启用大小可调的表,在生成代码。

此选项使您可以改变大小和值的查找表和断点数据没有再生或重新编译代码。

如果你设置Interpolationmethod为Cubicspline,此复选框不可用。

Maximumindicesforeachdimension

使用从零开始的索引,指定每个工作台尺寸最大的索引值。

您可以指定一个标量或矢量的正整数,使用下面的数据类型:

∙内置的浮点类型:

double和single

∙内置整数类型:

int8,int16,int32,uint8,uint16,和uint32

下面是一些有效规范例子:

∙[46]为5-7表

∙[int8

(2)int16(5)int32(9)]为3-6-10表

当您选择此Supporttunabletablesizeincodegeneration参数显示.

n-DLookupTable块的DataTypes窗格出现如下对话框:

注:

该对话框可以展开,以显示额外的数据类型选项。

up至30的断点数据类型,规格的出现。

Tabledata>DataType

指定表中的数据类型。

您可以将其设置为:

∙继承的规则,数据类型,例如,Inherit:

Sameasoutput

∙一个内置的数据类型的名称,例如,single

∙数据类型对象的名称​​,例如,Simulink.NumericType对象

∙一个表达式,其值的数据类型,例如,fixdt(1,16,0)

点击Showdatatypeassistant按钮

显示DataTypeAssistant,它可以帮助您设置表中的数据类型。

提示:

指定表中的数据类型的不同,在这些情况下的输出数据类型:

∙表,用于存储数据的位存储器要求比的输出信号低,使用一个较小的类型

∙预分频表中的数据共享在二个n-DLookupTable块之间的不同输出数据类型

∙在生成的代码块不同的输出数据类型的自定义存储表数据共享

Tabledata>Minimum

指定表中的数据的最小值。

默认值是[](未指定)。

Tabledata>Maximum

指定表中的数据的最大值。

默认值是[](未指定)。

Breakpoints>DataType

为一组的断点数据指定的数据类型。

您可以将其设置为:

∙继承的规则,数据类型,例如,Inherit:

Sameascorrespondinginput

∙一个内置的数据类型的名称,例如,single

∙数据类型对象的名称​​,例如,Simulink.NumericType对象

∙一个表达式,其值的数据类型,例如,fixdt(1,16,0)

点击Showdatatypeassistant按钮

显示DataTypeAssistant,它可以帮助你设置的断点数据类型。

见SpecifyDataTypesUsingDataTypeAssistant

提示:

指定一个断点数据类型不同的这些情况下,从对应的输入的数据类型:

∙较低内存要求比的输入信号,用于存储断点的数据使用一个较小的类型

∙预分频表中的数据共享在二个n-DLookupTable块之间的不同输出数据类型

∙在生成的代码块不同的输出数据类型的自定义存储表数据共享

Breakpoints>Minimum

指定断点数据的一组可以具有的最小值。

默认值是[](未指定)。

Breakpoints>Maximum

指定断点数据的一组可以具有的最大值。

默认值是[](未指定)。

Fraction>DataType

指定的部分数据类型。

您可以将其设置为:

∙继承的规则,数据类型,例如,Inherit:

Inheritviainternalrule

∙一个内置的数据类型的名称,例如,single

∙数据类型对象的名称​​,例如,Simulink.NumericType对象

∙一个表达式,其值的数据类型,例如,fixdt(1,16,0)

点击Showdatatypeassistant按钮

显示DataTypeAssistant,它可以帮助你设置的分数数据类型。

见SpecifyDataTypesUsingDataTypeAssistant

Intermediateresults>DataType

指定中间结果的数据类型。

您可以将其设置为:

∙继承的规则,数据类型,例如,Inherit:

Sameasoutput

∙一个内置的数据类型的名称,例如,single

∙数据类型对象的名称​​,例如,Simulink.NumericType对象

∙一个表达式,其值的数据类型,例如,fixdt(1,16,0)

点击Showdatatypeassistant按钮

显示DataTypeAssistant,它可以帮助你设置中间结果的数据类型。

提示:

使用此参数指定内部计算的精度比表中的数据或输出数据更高(或更低)。

Output>DataType

指定输出的数据类型。

您可以将其设置为:

∙继承的规则,数据类型,例如,Inherit:

Inheritviabackpropagation

∙一个内置的数据类型的名称,例如,single

∙数据类型对象的名称​​,例如,Simulink.NumericType对象

∙一个表达式,其值的数据类型,例如,fixdt(1,16,0)

点击Showdatatypeassistant按钮

显示DataTypeAssistant,它可以帮助你设置的输出数据类型。

见SpecifyBlockOutputDataTypes

Output>Minimum

指定该块的值的输出最小的值。

默认值是[](未指定)。

Simulink软件使用这个值来执行:

∙参数范围检查(见CheckParameterValues)

∙模拟范围检查(见SignalRanges)

∙自动缩放的定点数据类型

Output>Maximum

指定的块的输出的最大值。

默认值是[](未指定)。

Simulink软件使用这个值来执行:

∙参数范围检查(见CheckParameterValues)

∙模拟范围检查(见SignalRanges)

∙自动缩放的定点数据类型

Requireallinputstohavethesamedatatype

选择要求所有输入信号具有相同的数据类型。

Lockdatatypesettingsagainstchangesbythefixed-pointtools

选择锁定所有对这个块的数据类型设置的定点工具和定点顾问。

见OverviewoftheFixed-PointTool和PreparationforFixed-PointConversion.

Integerroundingmode

指定的舍入模式为固定点的查找表计算模拟或从模型生成的代码的执行过程中发生的。

见Rounding

此选项不影响四舍五入块参数的值。

Simulink的舍入值最接近的可表示的整数值。

要控制舍入的块参数,使用MATLAB舍入到编辑字段的函数块对话框中输入一个表达式。

Saturateonintegeroverflow

作用

采取这一行动的原因

溢出会发生什么事的

实例

选中此复选框。

你的模型有可能溢出,并在生成的代码,你要明确的饱和保护。

溢出饱和到任何的数据类型可以表示的最小或最大值。

有符号的8位整数溢出饱和到-128或127。

请不要选择此复选框。

你想生成的代码,以优化效率。

你要避免过度指定块如何处理范围的信号。

见CheckingforSignalRangeErrors.

溢出换到数据类型表示适当的值。

数130不适合在有符号的8位整数,换到-126。

提示:

如果你保存你的模型版本R2009a或更早的版本,此复选框,设置没有效果,没有出现饱和代码。

这种行为保持向后兼容性

当您选择此复选框,饱和度适用于每一个块的内部运作,而不仅仅是输出或结果。

在一般情况下,代码生成的过程可以检测溢出时是不可能的。

在这种情况下,代码生成器不产生饱和的代码。

实例

插值和外推法特性

举一个例子,说明这个块的线性插值和外推法,请参阅CreateaLogarithmLookupTable

有关进入的断点和表数据的一个例子,看EnteringDatainaBlockParameterDialogBox

在生成的代码大小可调表

假设你有一个查找表,并希望在生成的代码的大小可调。

假设:

∙您可以定义一个Simulink.Parameter你的模型结构在预置函数:

∙p=Simulink.Parameter;

∙p.Value.MaxIdx=[22];

∙p.Value.BP1=[123];

∙p.Value.BP2=[1416];

∙p.Value.Table=[456;161920;101823];

∙p.DataType='Bus:

slLookupTable';

∙p.CoderInfo.StorageClass='ExportedGlobal';

∙%CreatebusobjectslBus1fromMATLABstructure

∙Simulink.Bus.createObject(p.Value);

∙slLookupTable=slBus1;

slLookupTable.Elements

(1).DataType='uint32';

∙下面的块参数适用于n-DLookupTable块对话框中的:

参数

Numberoftabledimensions

2

Tabledata

p.Table

Breakpoints1

p.BP1

Breakpoints2

p.BP2

Supporttunabletablesizeincodegeneration

on

Maximumindicesforeachdimension

p.MaxIdx

生成的model_types.h头文件包含一个类型定义,看起来像这样:

typedefstruct{

uint32_TMaxIdx[2];

real_TBP1[3];

real_TBP2[3];

real_TTable[9];

}slLookupTable;

生成的model.c文件中包含的代码看起来像这样:

/*Exportedblockparameters*/

slLookupTablep={

{2U,2U},

{1.0,2.0,3.0},

{1.0,4.0,16.0},

{4.0,16.0,10.0,5.0,19.0,18.0,6.0,20.0,23.0}

};

/*Morecode*/

/*Modeloutputfunction*/

staticvoidex_lut_nd_tunable_table_output(int_Ttid)

{

/*Lookup_n-D:

'/n-DLookupTable'incorporates:

*Inport:

'/In1'

*Inport:

'/In2'

*/

Y=look2_binlcpw(U1,U2,p.BP1,p.BP2,p.Table,...

p.MaxIdx,p.MaxIdx[0]+1U);

/*Outport:

'/Out1'*/

ex_lut_nd_tunable_table_Y.Out1=Y;

/*tidisrequiredforauniformfunctioninterface.

*Argumenttidisnotusedinthefunction.*/

UNUSED_PARAMETER(tid);

}

突出显示的代码行指定的可调谐表的查找表的大小。

您可以更改查找表的大小和值以及断点数据没有再生或重新编译代码。

特征

直接馈通

采样时间

在Sampletime参数里指定

标量扩展

量纲

是,如果你不选择Cubicspline为Interpolationmethod

过零检测

参考

Prelookup,InterpolationUsingPrelookup

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1