线性代数-MATLAB:标准基乘法的简单方法



这看起来很容易,但我不擅长。

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

$E_{ij}:=(E_i-E_j)(E_i-E_j)^T$

有人知道如何用几行字写出来吗?

感谢

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

e_i * e_j^T 

是一个稀疏矩阵,除第1个CCD_。

因此,如果iijj是两个基向量的索引,而n是维度,则:

Eij = sparse( [ii ii jj jj], [ii jj ii jj], [1 -1 -1 1], n, n );

假设基中的每个向量都是大小为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); 

相关内容

  • 没有找到相关文章

最新更新