dot
点积
说明
示例
实数向量的点积
创建两个简单的三元素向量。
A = [4 -1 2]; B = [2 -2 -1];
计算 A
和 B
的点积。
C = dot(A,B)
C = 8
结果为 8
,因为
C = A(1)*B(1) + A(2)*B(2) + A(3)*B(3)
复数向量的点积
创建两个复数向量。
A = [1+i 1-i -1+i -1-i]; B = [3-4i 6-2i 1+2i 4+3i];
计算 A
和 B
的点积。
C = dot(A,B)
C = 1.0000 - 5.0000i
结果为一个复数标量,因为 A
和 B
是复数。通常,两个复数向量的点积也是复数。获取一个复数向量与其自身的点积除外。
计算 A
与自身的内积。
D = dot(A,A)
D = 8
结果为一个实数标量。向量与自身的内积与向量 norm(A)
的欧几里德长度相关。
矩阵的点积
创建两个矩阵。
A = [1 2 3;4 5 6;7 8 9]; B = [9 8 7;6 5 4;3 2 1];
求 A
和 B
的点积。
C = dot(A,B)
C = 1×3
54 57 54
结果 C
包含三个不同的点积。dot
将 A
和 B
的各列视为向量,并计算对应列的点积。因此,例如 C(1) = 54
是 A(:,1)
与 B(:,1)
的点积。
计算 A
和 B
的点积,并将 rows 视为向量。
D = dot(A,B,2)
D = 3×1
46
73
46
在本例中,D(1) = 46
是 A(1,:)
与 B(1,:)
的点积。
多维数组的点积
创建两个多维数组。
A = cat(3,[1 1;1 1],[2 3;4 5],[6 7;8 9])
A = A(:,:,1) = 1 1 1 1 A(:,:,2) = 2 3 4 5 A(:,:,3) = 6 7 8 9
B = cat(3,[2 2;2 2],[10 11;12 13],[14 15; 16 17])
B = B(:,:,1) = 2 2 2 2 B(:,:,2) = 10 11 12 13 B(:,:,3) = 14 15 16 17
计算 A
和 B
沿第三个维度 (dim = 3
) 的点积。
C = dot(A,B,3)
C = 2×2
106 140
178 220
结果 C
包含四个不同的点积。第一个点积 C(1,1) = 106
等于 A(1,1,:)
与 B(1,1,:)
的点积。
输入参数
A,B
— 输入数组
数值数组
输入数组,指定为数值数组。
数据类型: single
| double
复数支持: 是
dim
— 沿其运算的维度
正整数标量
沿其运算的维度,指定为正整数标量。如果未指定值,则默认值是大小不等于 1 的第一个数组维度。
考虑两个二维输入数组:A
和 B
:
dot(A,B,1)
将A
和B
的列视为向量,并返回对应列的点积。dot(A,B,2)
将A
和B
的行视为向量,并返回对应行的点积。
如果 dim
大于 ndims(A)
,则 dot
返回 conj(A).*B
。
详细信息
标量点积
长度为 n 的两个实数向量的标量点积等于
对于实数向量,此关系可互换,这样 dot(u,v)
等于 dot(v,u)
。如果点积等于零,则 u 和 v 垂直。
对于复数向量,点积涉及复共轭。这将确保任何向量与自身的内积都为实数正定矩阵。
与实数向量的关系不同,复数关系不可互换,这样 dot(u,v)
等于 conj(dot(v,u))
。
算法
当输入
A
和B
为实数或复数向量时,dot
函数将这些向量视为列向量,并且dot(A,B)
与sum(conj(A).*B)
相同。当输入为矩阵或多维数组时,
dim
参量确定sum
函数作用于哪些维度。在本例中,dot(A,B)
与sum(conj(A).*B,dim)
的大小相同。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
代码生成不支持对此函数使用稀疏矩阵输入。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
GPU 数组
通过使用 Parallel Computing Toolbox™ 在图形处理单元 (GPU) 上运行来加快代码执行。
此函数完全支持 GPU 数组。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数 (Parallel Computing Toolbox)。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 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)