【问题标题】:The way to compute off-diagonal terms of a square matrix计算方阵非对角项的方法
【发布时间】:2020-09-10 11:57:31
【问题描述】:

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

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

【问题讨论】:

  • 欢迎来到本站!使用S=X*X',您可以获得非对角线 对角线条目。如果Xn 行,避免计算对角线项只会节省n 项在n^2 中的总和。由于对称性,您可以节省额外的系数2。这值得么?你的矩阵有多大?

标签: performance matlab matrix vectorization


【解决方案1】:

要获取d-th 非对角线的元素,这应该可以:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-23
    • 2016-07-02
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多