use*_*821 5 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
Run Code Online (Sandbox Code Playgroud)
我有另一个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'
Run Code Online (Sandbox Code Playgroud)
我想重新排列矩阵,使每行保持不变并按升序排序.这可以通过[vals order] = sort(matrix,2)命令轻松完成.我想以相同的方式重新排列数据矩阵.
以前的解决方案建议使用如下命令:
reordered_data=data(order)
Run Code Online (Sandbox Code Playgroud)
但是,这不会产生预期的结果,它会重新排列数据,但不会按正确的顺序排列.
希望这很清楚,如果需要澄清,请告诉我.
谢谢.
你尝试过使用sortrows吗?
[vals, I] = sortrows(matrix);
for i = 1:size(matrix,1);
reordered_data(i,:) = data(I(i),:);
end
Run Code Online (Sandbox Code Playgroud)
这是结果:
reordered_data =
'A' 'A' 'A' 'B' 'A' 'A' 'A' 'A'
'A' 'A' 'B' 'A' 'A' 'B' 'B' 'B'
'B' 'B' 'B' 'A' 'B' 'B' 'A' 'B'
'A' 'B' 'B' 'A' 'B' 'A' 'A' 'A'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |