主要内容

mtimes,*

矩阵乘法

描述

例子

C=一个*B矩阵乘积的吗一个B。如果一个是一个m-by-p和B是一个p-by-n矩阵呢C是一个m×n矩阵定义的

C ( , j ) = k = 1 p 一个 ( , k ) B ( k , j )

这个定义说C (i, j)的内积吗th排一个jth列B。你可以使用MATLAB编写这个定义®结肠算子为

C (i, j) =(我,:)* B (:, j)
对于nonscalar一个B的列数一个的行数必须等于B。矩阵乘法是普遍交换nonscalar输入。也就是说,A * B通常不等于什么B *。如果至少一个输入是标量A * B相当于a * B交换。

C= mtimes (一个,B)另一种方法是执行A * B,但很少使用。它使操作符重载为类。

例子

全部折叠

创建一个1-by-4行向量,一个,4-by-1列向量,B

一个= [1 1 0 0];B = [1;2;3;4);

一个B

C = A * B
C = 3

结果是一个1×1标量,也叫了点积内积的向量一个B。或者,您可以计算点积 一个 B 与语法点(A, B)

B一个

C = B *
C =4×41 1 0 0 2 2 0 0 3 3 0 0 4 4 0 0

结果是一个4×4的矩阵,也被称为外产品的向量一个B。两个向量的外积, 一个 B ,返回一个矩阵。

创建两个数组,一个B

一个= [1 3 5;2 4 7];B = [5 8 11;3 9 21;4 0 8];

计算的产物一个B

C = A * B
C =2×324 35 114 162 52

计算内积的第二行一个第三列B

B:一个(2)* (:,3)
ans = 162

这个答案是一样的C (2、3)

输入参数

全部折叠

操作数,指定为标量、向量或矩阵。

  • 如果至少一个输入是标量A * B相当于a * B。在这种情况下,nonscalar数组可以是任何大小。

  • nonscalar输入,一个B必须二维数组的列数在哪里一个必须等于中的行数B

  • 如果一个人的一个B是一个整数类(int16,uint8,…),那么其他的输入必须是一个标量。操作数和整数数据类型不能复杂。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|持续时间|calendarDuration
复数的支持:金宝app是的

输出参数

全部折叠

产品,作为一个标量返回向量或矩阵。数组C有相同数量的行作为输入一个和相同数量的列作为输入B。例如,如果一个是一个m-by-0空矩阵和B是一个0-by-n空矩阵呢A * B是一个m×n矩阵的零。

提示

  • 等链接矩阵乘法A * B * C,你也许可以改善执行时间通过使用括号来决定操作的顺序。考虑三个矩阵相乘的情况A * B * C,在那里一个500 - 2,B是2 -到- 500,C是500 - - 2。

    • 没有括号,订单的操作从左到右是如此吗A * B首先计算,形成一个500 -,- 500矩阵。然后乘以这个矩阵C到达500——- 2的结果。

    • 如果您不是指定* (B * C),然后B * C乘以第一,生产一个2×2的矩阵。小的矩阵乘法一个到达500——- 2的结果相同,但由于较少的操作和中间内存使用。

引用

[1]”巴拉斯(基本线性代数子程序)。”2022年7月18日访问。https://netlib.org/blas/

[2]戴维斯,蒂莫西·a .”1000年算法:SuiteSparse: GraphBLAS:图算法在稀疏线性代数的语言。”ACM交易的数学软件45岁的没有。4(2019年12月31日):1 - 25。https://doi.org/10.1145/3322125

扩展功能

HDL代码生成
生成FPGA和ASIC设计的Verilog和VHDL代码使用HDL编码器™。

版本历史

之前介绍过的R2006a

全部展开