matlab - 如何根据向量矩阵的顺序对单元格数组列重新排序,同时在 Matlab 中保持行的完整性?

标签 matlab matrix cell

我有一个 108x8 矩阵(称为矩阵),如下所示:

5   8   3   6   2   1   7   4
8   4   2   7   1   3   6   5
5   4   3   2   1   7   8   6
1   7   8   5   6   4   3   2

我有另一个 108x8 元胞数组(称为数据),如下所示:

   'B'  'B' 'B' 'A' 'B' 'B' 'A' 'B'
   'A'  'B' 'B' 'A' 'B' 'A' 'A' 'A'
   'A'  'A' 'B' 'A' 'A' 'B' 'B' 'B'
   'A'  'A' 'A' 'B' 'A' 'A' 'A' 'A'

我想重新排列矩阵,使每一行保持不变并按升序排序。这可以使用 [vals order] = sort(matrix,2) 命令轻松完成。我想以相同的方式重新排列数据矩阵。

以前的解决方案建议使用如下命令:

reordered_data=data(order)

但是,这并没有给出预期的结果,它确实重新排列了数据,但顺序不正确。

希望这是清楚的,如果需要澄清,请告诉我。

谢谢。

最佳答案

您可以将 order 索引转换为矩阵索引,因此您不需要循环。

[vals, order] = sort(matrix,2);
[r,c] = size(matrix);
index = bsxfun( @plus, order, (0:r-1)'*c );
data = data';
reordered_data = data(index')';

关于matlab - 如何根据向量矩阵的顺序对单元格数组列重新排序,同时在 Matlab 中保持行的完整性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886292/

相关文章:

matlab - 使用 gram-schmidt 构造 MATLAB 进行创新表示

java - Java/COLT 中 "long"的矩阵?

ios - TableView 不显示来自 Realm 的数据

html - 100% 宽度的表格单元格

matlab - 如何生成n个点并限制它们之间的距离大于给定值?

python - python 是否能够进行 MATLAB 等效矩阵运算?

python - 使用 np.matrix 数组的矩阵乘法和使用 np.arrays 的 dot()/tensor() 有什么区别?

python - numpy 矩阵乘法的奇怪性能结果

javascript - 如何在 CKEditor 中用颜色填充整个单元格

c++ - MATLAB:来自不同类的 OOP 调用函数