我正在编写一个编码项目,遇到了障碍。我有一个1x3矩阵的单元格数组。 (1,1)对要排序的值进行编码,(1,2)和(1,3)编码我需要以后参考的坐标。有没有办法通过较大单元阵列中每个矩阵中的(1,1)值对单元阵列进行排序?
CombList = {[1,1,1], [5,1,2];
[4,1,3], [3,1,2];
[2,1,4], [2,1,3]};
我想按单元格数组中每个矩阵中的第一个值排序。理想情况下,它会返回:
CombList = [1,1,1], [2,1,3];
[2,1,4], [3,1,2];
[4,1,3], [5,1,2]};
......一旦排序:)
谢谢!
答案 0 :(得分:0)
我相信以下内容应该有效。结果将是一个数字数组,希望对你有用。
CombList = {[1,1,1], [5,1,2];
[4,1,3], [3,1,2];
[2,1,4], [2,1,3]}
CombMat = cell2mat(CombList);
CombMat(:, 1:3) = sortrows(CombMat(:, 1:3));
CombMat(:, 4:6) = sortrows(CombMat(:, 4:6));
您可以使用mat2cell
将其转换回单元格数组,如下所示:
CombCell = mat2cell(CombMat, [1 1 1], [3 3])
答案 1 :(得分:0)
Zany one-liner基于sortrows
:
CombList = reshape(mat2cell(sortrows(cell2mat(reshape(CombList,[],1))),ones(numel(CombList),1),numel(CombList{1})),2,[]).';