在 Julia 中交换行的最简单方法

问题描述 投票:0回答:1

我想交换矩阵的两个特定行。我不想为此编写第二个函数,我正在寻找最简单/最快的方法。

在 Matlab 或 Octave 中,为了交换矩阵 A 的第 k 行和第 r 行,我们可以简单地写:

A([k r],:) = A([r k],:)

当我在 Julia (VsCode) 上尝试此操作时,出现此错误:错误:LoadError:语法:“[k r]”不是文件路径

周围的有效函数参数名称

还有别的办法吗?我不想有一个仅仅交换行的函数。 预先感谢

matlab matrix julia linear-algebra
1个回答
0
投票

在 Julia 中,就像在 Numpy 中一样,您可以使用方括号对数组进行索引,这与在 Matlab 中使用常规括号进行索引不同。

所以当你写

A([k r],:)
时,它会被解释为函数调用。改为

A[[k r], :] = A[[r k], :]

有效。但用向量索引比用矩阵索引更惯用,所以添加逗号,如下所示:

A[[k, r], :] = A[[r, k], :]

您说“最简单”,但如果您完全关心性能,那么以下方法会快得多,并且不使用内存:

function swaprows!(A, k, r)
    for i in axes(A, 2)
        (A[k, i], A[r, i]) = (A[r, i], A[k, i])
    end
end
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.