0

这似乎很容易,但我并不擅长。

我想生成以下乘以两个标准基的矩阵:

$E_{ij}:= (e_i - e_j)(e_i - e_j)^T$

任何人都知道如何用几行来写它吗?

谢谢

4

2 回答 2

0

假设基础中的每个向量都是大小矩阵d x N(向量按列排列):

e1 = rand(4, 3); % random 4 x 3 matrix
e2 = rand(4, 3); 

那么矩阵中的每个条目,即两个单个向量之间的内积将由下式给出

E(i,j) = (e1(:,i) - e2(:,j))' *(e1(:,i) - e2(:,j)); 

相反的情况适用于N x d矩阵,即

E(i,j) = (e1(i,:) - e2(j,:)) * (e1(i,:) - e2(j,:))';  

在第一种情况下,您可以通过单个单线构建整个矩阵:

E = (e1 - e2)' * (e1 - e2); 
于 2013-02-20T03:35:20.217 回答
0

由于我们处理的是正交的标准基元素,那么

e_i * e_j^T 

是一个稀疏矩阵,除了第 - 项之外的所有i,j项都为零。

因此,如果iijj是两个基向量的索引,并且n是维度,那么:

Eij = sparse( [ii ii jj jj], [ii jj ii jj], [1 -1 -1 1], n, n );
于 2013-02-20T07:10:43.847 回答