matlab - 如何在维度矩阵上排序后获取元素
问题描述
我有两个矩阵 A 和 B,并希望使用 A 的第三维对这两个矩阵的数据进行排序。为此,我使用 sort 来获取结果和索引。
我不知道如何使用索引来获取矩阵 B 上的排序数据。
A = rand(2,2,2)
B = rand(2,2,2)
[S I] = sort(A, 3);
S
B(I) % Here, don't sort B according to the same sort than A
解决方案
将您的三维下标转换为线性索引:
[r, c, ~] = size(A);
LinInd = (I-1)*r*c + reshape(1:r*c, r, c); %For >=R2016b
%LinInd = bsxfun(@plus, (I-1)*r*c, reshape(1:r*c, r, c)); %For <R2016b
现在使用这些线性索引进行排序,B
即:
B(LinInd)
推荐阅读
- gatling - 与 Gatling 相同的模拟中的连续场景
- magento - 无法更改 Magento 2.2.4 的默认主题
- loops - 循环文本框和单元格
- audio - 我应该向 SDL 音频回调缓冲区写入哪些数据?
- firebase - Removing all documents and collections from the Firestore
- knockout.js - Custom binding won`t update when the parsed number equals the current
- php - Laravel Passport: Are API's tokens stored on the server, and where?
- javascript - 根据是否添加了新元素或编辑了现有元素来更新 React.js 中的列表
- python - Python Curl with Variable Encoding
- javascript - 程序在提交表单时没有将用户输入记录到控制台?