【发布时间】:2018-03-29 19:48:54
【问题描述】:
我有一个矩阵,它的列根据某个索引进行了洗牌。我知道想要找到将数组“解散”回其原始状态的索引。 例如:
myArray = [10 20 30 40 50 60]';
myShuffledArray = nan(6,3)
myShufflingIndex = nan(6,3)
for x = 1:3
myShufflingIndex(:,x) = randperm(length(myArray))';
myShuffledArray(:,x) = myArray(myShufflingIndex(:,x));
end
现在我想找到一个矩阵myUnshufflingIndex,它反转洗牌得到一个数组myUnshuffledArray = [10 20 30 40 50 60; 10 20 30 40 50 60; 10 20 30 40 50 60]'
我希望通过以下方式使用myUnshufflingIndex:
for x = 1:3
myUnShuffledArray(:,x) = myShuffledArray(myUnshufflingIndex(:,x), x);
end
例如myShufflingIndex = [2 4 6 3 5 1]'中有一列,那么myUnshufflingIndex中对应的列就是[6 1 4 2 5 3]'
关于如何以简洁的矢量化方式获得myUnshufflingIndex 的任何想法?另外,有没有比循环更好的方法来按列排列数组?
【问题讨论】:
标签: arrays matlab sorting indexing vectorization