MATLAB:简化乘法标准基础的方法

时间:2013-02-20 02:47:36

标签: matlab linear-algebra

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

我想生成以下矩阵,该矩阵乘以两个标准基础:

  

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

任何人都可以知道如何用几行写出来吗?

由于

2 个答案:

答案 0 :(得分: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); 

答案 1 :(得分: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 );