计算方矩阵的非对角项的方法

问题描述

我有一个矩阵X,并用它在MATLAB:S=X*X'中计算平方矩阵。我只需要找到S的非对角元素。

我了解如何针对对角线sum(X.*X,1)执行此操作。通过矢量化找到非对角线元素的方法是否类似?

解决方法

要获得第d个非对角线的元素,这应该起作用:

sum(X(:,1:end-d).*X(:,1+d:end),1)

这是因为对于R=X*X',第d个非对角线具有以下元素:

R(k,k+d) = sum (X(k,:) .* X(k+d,:))