所谓数组(或向量)a和b的外积,指的是a的每一个元素和b的每一个元素搭配在一起相乘得到的新元素.当然运算规则也可自定义.外积运算符为 %o%(注意:百分号中间的字母是小写的字母o).例如:
[plain] view plain copy
>a <- 1:2
>b <- 3:5
>d <- a %o% b
>d
[,1] [,2] [,3]
[1,]345
[2,]68 10
注意维数公式为:
[plain] view plain copy
dim(d) = c( dim(a) , dim(b) )
实际上R语言提供了一个更为一般化得外积函数outer(X,Y,Fun),比较简单,看个示例吧.
下面的例子是为了绘制 z = x**2 +50cos(y)的3维表面图:
[plain] view plain copy
>x <- seq(from = -5, to = 5, by = 0.25)
>y <- seq(from = -2, to = 2, by = 0.1)
>f <- function(x,y){x**2+50*cos(y)}
>z <- outer(x,y,f)
>persp(x,y,z)
绘制图像如下:
其它看帮助文档吧.
outer:数组外积。如果a和b
是两个数值数组,它们的外积将是这样的一个数组:维度向量通过连接两个操作数的维度向量(顺序非常的重要)得到;数据向量则由a
的数据向量元素和b
的数据向量元素的所有可能乘积得到。ab
<-
outer(a,
b,
"*")命令中的乘法操作符可以被任意一个双变量函数代替。例如,我们想研究函数f(x
y)
=
cos(y)=(1
+
x2)
在R
在向量x
和y形成的格子平面(regular
grid)上的特征,可以按下面的步骤进行:outer(1:2,1:3)实际上是省略了“*”号,实际上应该是outer(1:2,1:3,
"*")。符号其实就是指定怎么计算的。outer(1:2,1:3,"+")就是1+1:3;2+1:3.
outer函数是求外积的。参数为2个,即 X, Y。参数3个是设置 第三个参数 FUNouter(X, Y, FUN = "*", ...)
一般是要3个参数做运算的呀。如果2个参数,默认第三个参数为 * ,即效果一样。