The outer product of the arrays, 矩阵外积, or 矩阵特定外函数

简介:
矩阵外积使用%o%运算符计算.
得到结果为维度相加的数组.
例如 : 
一个2维矩阵和一个3维数组计算外积, 将得到一个5维数组.
> x <- matrix(1:10, 2, 5)
> y <- array(1:64, dim=c(4,4,4))
> x
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> y
, , 1

     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16

, , 2

     [,1] [,2] [,3] [,4]
[1,]   17   21   25   29
[2,]   18   22   26   30
[3,]   19   23   27   31
[4,]   20   24   28   32

, , 3

     [,1] [,2] [,3] [,4]
[1,]   33   37   41   45
[2,]   34   38   42   46
[3,]   35   39   43   47
[4,]   36   40   44   48

, , 4

     [,1] [,2] [,3] [,4]
[1,]   49   53   57   61
[2,]   50   54   58   62
[3,]   51   55   59   63
[4,]   52   56   60   64

计算外积 : 
> x %o% y
, , 1, 1, 1

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10

, , 2, 1, 1

     [,1] [,2] [,3] [,4] [,5]
[1,]    2    6   10   14   18
[2,]    4    8   12   16   20
....

结果略.
外积计算结果的维度和类型 : 

> dim(x %o% y)
[1] 2 5 4 4 4
> class(x %o% y)
[1] "array"

我们看到一个(2,5)的矩阵和一个(4,4,4)的数组计算外积得到了一个(2,5,4,4,4)的数组.

下面来看一下外积是怎么计算的, 使用小一点的矩阵.

> x <- matrix(1:4, 2, 2)
> y <- matrix(10:13, 1, 4)
> x
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> y
     [,1] [,2] [,3] [,4]
[1,]   10   11   12   13

使用x %o% y计算外积, 相当于y的每个元素和x相乘.
> x %o% y
y的第1个元素(1,1)乘以x
, , 1, 1

     [,1] [,2]
[1,]   10   30
[2,]   20   40
y的第2个元素(1,2)乘以x
, , 1, 2

     [,1] [,2]
[1,]   11   33
[2,]   22   44
y的第3个元素(1,3)乘以x
, , 1, 3

     [,1] [,2]
[1,]   12   36
[2,]   24   48
y的第4个元素(1,4)乘以x
, , 1, 4

     [,1] [,2]
[1,]   13   39
[2,]   26   52


反过来写 y %o% x
x的第1个元素(1,1)乘以y
> y %o% x
, , 1, 1

     [,1] [,2] [,3] [,4]
[1,]   10   11   12   13
x的第2个元素(2,1)乘以y
, , 2, 1

     [,1] [,2] [,3] [,4]
[1,]   20   22   24   26
x的第3个元素(1,2)乘以y
, , 1, 2

     [,1] [,2] [,3] [,4]
[1,]   30   33   36   39
x的第4个元素(2,2)乘以y
, , 2, 2

     [,1] [,2] [,3] [,4]
[1,]   40   44   48   52


%o%实际是outer函数的一种特殊用法. 即FUN为乘法.
     outer(X, Y, FUN = "*", ...)
     X %o% Y

例如
> outer(y,x,FUN="*")
, , 1, 1

     [,1] [,2] [,3] [,4]
[1,]   10   11   12   13

, , 2, 1

     [,1] [,2] [,3] [,4]
[1,]   20   22   24   26

, , 1, 2

     [,1] [,2] [,3] [,4]
[1,]   30   33   36   39

, , 2, 2

     [,1] [,2] [,3] [,4]
[1,]   40   44   48   52


如果我们把FUN换成加法, 结果如下 : 
> outer(y,x,FUN="+")
, , 1, 1

     [,1] [,2] [,3] [,4]
[1,]   11   12   13   14

, , 2, 1

     [,1] [,2] [,3] [,4]
[1,]   12   13   14   15

, , 1, 2

     [,1] [,2] [,3] [,4]
[1,]   13   14   15   16

, , 2, 2

     [,1] [,2] [,3] [,4]
[1,]   14   15   16   17


FUN还可以使用自定义函数, 以及函数支持传入参数等.

[参考]
1. help(outer)
2. help("%o%")
目录
相关文章
|
数据安全/隐私保护
fastadmin是如何设置没有权限的用户不能访问某些页面的?
fastadmin是如何设置没有权限的用户不能访问某些页面的?
873 0
|
弹性计算
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
2024年阿里云服务器的优惠价格新鲜出炉,有特惠云服务器也有普通优惠价格,本文为大家整理汇总了2024年阿里云服务器的优惠价格,包含特惠云服务器和其他配置云服务器的优惠价格。以便大家了解自己想购买的云服务器选择不同实例规格和带宽情况下的价格,仅供参考。
2024年阿里云服务器不同实例规格与配置实时优惠价格整理与分享
|
SQL 关系型数据库 API
SqlAlchemy 2.0 中文文档(七十二)(4)
SqlAlchemy 2.0 中文文档(七十二)
181 0
|
算法 数据挖掘 BI
【2023 华数杯全国大学生数学建模竞赛】 B题 不透明制品最优配色方案设计 39页论文及python代码
本文介绍了一种基于计算机配色理论的数学模型,旨在解决不透明制品的最优配色方案设计问题,通过线性回归分析、色差计算和多目标规划模型,实现了高效、准确的配色方案优化。
261 0
|
消息中间件 存储 Linux
嵌入式Linux系统中SPI 子系统基本实现
嵌入式Linux系统中SPI 子系统基本实现
335 0
|
SQL JSON Java
Java开发业务接口规范
规范点 说明 推荐方式 等级 文档唯一性 文档出处来源(人员和设备)必须统一,建议文档服务器,统一发布人。   重要 接口环境 要明确给出各个环境的调用地址。
5199 2
|
传感器 编解码 算法
Halcon XLD: eXtended Line Descriptions 亚像素轮廓
Halcon XLD: eXtended Line Descriptions 亚像素轮廓
1111 0
Halcon XLD: eXtended Line Descriptions 亚像素轮廓
|
Android开发 Windows
weditor, 布局分析, 查看控件信息
weditor, 布局分析, 查看控件信息
636 0
|
Web App开发 Linux 调度
云游戏?在ACK上进行Unity远程渲染
本文介绍了如何在容器中进行unity远程渲染
云游戏?在ACK上进行Unity远程渲染