Dot Product
生成两个向量的点积

库:
Simulink /
Math Operations
HDL Coder /
Math Operations
描述
Dot Product 模块生成输入向量的点积。标量输出 y
等于 MATLAB® 运算
y = sum(conj(u1) .* u2 )
其中 u1
和 u2
表示输入向量。输入可以是向量、列向量(单列矩阵)或标量。如果两个输入都是向量或者都是列向量,它们的长度必须相同。如果 u1
和 u2
都是列向量,模块将输出 MATLAB 表达式 u1'*u2
的等效项。
输入向量的元素可以是实数值或复数值信号。输出的信号类型(复信号或实信号)取决于输入的信号类型。
输入 1 | 输入 2 | 输出 |
---|---|---|
实信号 | 实数 | 实数 |
实数 | 复数 | 复数 |
复信号 | 实信号 | 复数 |
复数 | 复数 | 复信号 |
示例
端口
输入
Port_1 — 第一个操作数输入信号
标量 | 向量
表示点积计算的第一个操作数的信号。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Port_2 — 第二个操作数输入信号
标量 | 向量
代表点积计算的第二个操作数的信号。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
输出
Port_1 — 点积输出信号
标量 | 向量
由两个输入信号的点积计算得到的输出信号。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
参数
要求所有输入具有相同的数据类型 — 要求所有输入具有相同的数据类型
on
(默认) | off
清除此复选框可使各个输入具有不同数据类型。
编程用法
模块参数:InputSameDT |
类型:字符向量 |
值:'on' | 'off' |
默认值:'on' |
输出最小值 — 范围检查的最小输出值
[]
(默认) | 标量
Simulink® 检查的输出范围的下限值。
Simulink 使用最小值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
注意
输出最小值不会饱和或剪切实际输出信号。请改用 Saturation 模块。
编程用法
模块参数:OutMin |
类型:字符向量 |
值:'[ ]' | 标量 |
默认值:'[ ]' |
输出最大值 — 范围检查的最大输出值
[]
(默认) | 标量
将 Simulink 检查的输出范围的上限值指定为有限的双精度实数标量值。
注意
如果您指定总线对象作为此模块的数据类型,请不要为模块的总线数据设置最大值。因为 Simulink 会忽略此设置。但请为指定作为数据类型的总线对象的总线元素设置最大值。有关总线元素的“最大值”参数的信息,请参阅 Simulink.BusElement
。
Simulink 使用最大值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值)。
定点数据类型的自动定标。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如 SIL 或外部模式)的结果。有关详细信息,请参阅Optimize using the specified minimum and maximum values (Embedded Coder)。
注意
输出最大值不会饱和或剪切实际输出信号。请改用 Saturation 模块。
编程用法
模块参数:OutMax |
类型:字符向量 |
值:标量 |
默认值:'[ ]' |
输出数据类型 — 指定输出数据类型
“Inherit: Inherit via internal rule
” (默认) | “Inherit: Inherit via back propagation
” | “Inherit: Same as first input
” | “double
” | “single
” | “half
” | “int8
” | “uint8
” | “int16
” | “uint16
” | “int32
” | “uint32
” | “int64
” | “uint64
” | “fixdt(1,16)
” | “fixdt(1,16,0)
” | “fixdt(1,16,2^0,0)
” | “<数据类型表达式>
”
为输出选择数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType
。有关详细信息,请参阅 控制信号的数据类型。
当您选择继承的选项时,模块的行为如下所示:
“
Inherit: Inherit via internal rule
” - Simulink 在考虑嵌入式目标硬件的属性的同时,会选择相应的数据类型来平衡数值准确性、性能和生成的代码大小。如果更改了嵌入式目标的设置,则依内部规则选择的数据类型可能会发生变化。例如,如果该模块将int8
类型的输入乘以int16
的增益,并且将 “ASIC/FPGA
” 指定为目标硬件类型,则输出数据类型为sfix24
。如果指定“未指定(假定通用 32 位)
”(即通用 32 位微处理器)为目标硬件,则输出数据类型为int32
。如果目标微处理器不能提供适应输出范围的字长,Simulink 软件将在诊断查看器中显示错误。有时软件不能同时满足优化代码效率和保证数值准确性这两个需求。如果内部规则不能满足您对数值准确性或性能的特定需求,请使用下列选项之一:
显式指定输出数据类型。
使用简单的选项 “
Inherit: Same as input
”。显式指定默认数据类型(例如
fixdt(1,32,16)
),然后使用定点工具为您的模型提供数据类型建议。有关详细信息,请参阅fxptdlg
(Fixed-Point Designer)。要指定您自己的继承规则,请使用 “
Inherit: Inherit via back propagation
”,然后使用 Data Type Propagation 模块。有关如何使用此模块的示例说明,请参阅 Signal Attributes 模块库中的 Data Type Propagation Examples 模块。
注意
当输入是小于单精度的浮点数据类型时,“
Inherit: Inherit via internal rule
” 取决于 Inherit floating-point output type smaller than single precision 配置参数的设置。当对数据类型进行编码所需的位数小于对单精度数据类型编码所需的 32 位时,数据类型小于单精度。例如,half
和int16
小于单精度。“
Inherit: Inherit via back propagation
” - 使用驱动模块的数据类型。“
Inherit: Same as first input
” - 使用第一个输入信号的数据类型。
编程用法
模块参数:OutDataTypeStr |
类型:字符向量 |
值:'Inherit: Inherit via internal rule | 'Inherit: Same as first input' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>' |
默认值:'Inherit: Inherit via internal rule' |
锁定输出数据类型设置以防止被定点工具更改 — 防止定点工具覆盖数据类型
off
(默认) | on
选中此选项将锁定此模块的输出数据类型设置,从而防止通过定点工具和定点顾问进行更改。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
整数舍入模式 — 定点运算的舍入模式
“向下
” (默认) | “向上
” | “收敛
” | “最邻近值
” | “舍入
” | “最简
” | “零
”
指定定点运算的舍入模式。有关详细信息,请参阅舍入 (Fixed-Point Designer)。
模块参数始终舍入到最邻近的可表示值。要控制模块参数的舍入方法,请在封装字段中使用 MATLAB 舍入函数输入表达式。
编程用法
模块参数:RndMeth |
类型:字符向量 |
值:'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero' |
默认值:'Floor' |
对整数溢出进行饱和处理 — 溢出操作的方法
off
(默认) | on
指定对溢出是进行饱和处理还是绕回处理。
off
- 溢出将绕回到数据类型可以表示的合适值。例如,数字 130 不适合一个有符号的 8 位整数,因此绕回 -126。
on
- 将溢出饱和处理为数据类型能够表示的最小值或最大值。例如,一个有符号的 8 位整数的溢出可以饱和处理为 -128 或 127。
提示
如果您的模型存在可能的溢出,而您希望在生成的代码中进行显式饱和保护,请考虑选中此复选框。
如果您希望优化生成的代码的效率,请考虑清除此复选框。
清除此复选框还可以帮助您避免过度地指定信号超出范围时的处理方式。有关详细信息,请参阅信号范围错误故障排除。
如果选中此复选框,饱和将应用于模块中的每个内部操作,而不仅仅应用于输出或结果。
一般情况下,代码生成进程可以检测到何时不可能发生溢出。在这种情况下,代码生成器不会生成饱和代码。
编程用法
模块参数:SaturateOnIntegerOverflow |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。
架构 | 描述 |
---|---|
“线性 ”(默认值) | 生成线性加法器链来计算乘积之和。 |
“树 ” | 生成加法器树形结构来计算乘积之和。 |
通用 | |
---|---|
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线处理不会重新分发这些寄存器。默认值为 |
本机浮点 | |
---|---|
HandleDenormals | 指定是否希望 HDL Coder 在设计中插入额外的逻辑来处理非正规数字。非规范数是量级非常小、必须使用包含前导零的尾数才能表示的浮点数。默认值为 “ |
LatencyStrategy | 指定对于浮点运算符是否将设计中的模块映射到 |
MantissaMultiplyStrategy | 指定在代码生成期间如何实现尾数乘法运算。通过使用不同设置,您可以控制目标 FPGA 设备上 DSP 的使用。默认值为 “ |
PLC 代码生成
使用 Simulink® PLC Coder™ 生成结构化文本代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2006a 之前推出
另请参阅
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)