楼主: 子衿1219
2423 18

[问答] 关于矩阵的运算 [推广有奖]

11
jmpamao 发表于 2012-12-19 13:01:33
问问版主吧

12
子衿1219 发表于 2012-12-19 14:20:55
jmpamao 发表于 2012-12-19 13:01
问问版主吧
版主是哪位牛人啊,帮忙@一下呗。

13
nuomin 发表于 2012-12-19 15:14:17
有点瑕疵,应该改为
c*diag(t(A)%*%B),
将左侧的矩阵取转置

14
子衿1219 发表于 2012-12-19 16:10:48
nuomin 发表于 2012-12-19 15:14
有点瑕疵,应该改为
c*diag(t(A)%*%B),
将左侧的矩阵取转置
感谢楼上的回复。可是我试了下,显然还是不对呢:

a <- matrix(c(1,1,1,1),ncol=2)
> b <- matrix(c(1:4),ncol=2)
> c <-c(1,2)
下面这行是我想要的结果:
> c[1]*a[,1]%*%t(b[1,])+c[2]*a[,2]%*%t(b[2,])
     [,1] [,2]
[1,]    5   11
[2,]    5   11
下面这行是楼上这位好心人的结果
> c*diag(t(a)%*%b)
[1]  3 14

15
ntsean 发表于 2012-12-20 11:41:07
假设结果为D那么
D_ij = Sigma_k [c_k a_ik b_jk]
      = Sigma_k [a_ik (c_k b'_kj)]
定义矩阵 B, B_kj = c_k b'_kj 那么 D=a%*%B

所以结果就是 a%*%(c*t(b))

比如

> a
     [,1] [,2]
[1,]    1    1
[2,]    1    1
> b
     [,1] [,2]
[1,]    1    2
[2,]    3    4
> c
[1] 1 2
> a%*%(c*t(b))
     [,1] [,2]
[1,]    5   11
[2,]    5   11





16
ntsean 发表于 2012-12-20 11:49:08
子衿1219 发表于 2012-12-19 16:10
感谢楼上的回复。可是我试了下,显然还是不对呢:

a  b  c  c[1]*a[,1]%*%t(b[1,])+c[2]*a[,2]%*%t(b ...
按照你的原题
c[1]*a[,1]%*%t(b[1,])+c[2]*a[,2]%*%t(b[2,])
是不是应该改为
c[1]*a[,1]%*%t(b[,1])+c[2]*a[,2]%*%t(b[,2])

17
nuomin 发表于 2012-12-20 22:48:01
矩阵元素
∑cia1ib1i …… ∑cia1ib10i
……                      ……
∑cia10ib1i …… ∑cia10ib10i
因此所求的结果是
A%*%diag(C)%*%t(B)

18
子衿1219 发表于 2012-12-21 14:41:16
ntsean 发表于 2012-12-20 11:49
按照你的原题
c[1]*a[,1]%*%t(b[1,])+c[2]*a[,2]%*%t(b[2,])
是不是应该改为
感谢ntsean的精彩,热心回复。可以了。谢谢。

19
子衿1219 发表于 2012-12-21 14:41:57
nuomin 发表于 2012-12-20 22:48
矩阵元素
∑cia1ib1i …… ∑cia1ib10i
……                      ……
感谢大狮子头nuomin的回复,这个可以呢。谢谢了。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 07:31