gpt4 book ai didi

matlab - 在 MATLAB 中置换矩阵的列

转载 作者:太空宇宙 更新时间:2023-11-03 19:59:02 25 4
gpt4 key购买 nike

假设我有一个 n by d 矩阵 A 并且我想置换某些列的条目。为此,我将 1 ... n 的排列计算为

idx1 = randperm(n)'
idx2 = randperm(n)'

然后我可以这样做:

A(:,1) = A(idx1,1)
A(:,2) = A(idx2,2)

但是,我不想使用 for 循环来执行此操作,因为它会很慢。假设我有一个 n by d 矩阵 A 和一个 n by d 索引矩阵 IDX 指定排列,是否有以下 for 循环的更快等价物:

for i = 1:d
A(:,i) = A(IDX(:,i),i);
end

最佳答案

使用 linear-indexingbsxfun的帮助下-

[n,m] = size(A);
newA = A(bsxfun(@plus,IDX,[0:m-1]*n))

关于matlab - 在 MATLAB 中置换矩阵的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35016631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com