基于每个矩阵中的数值对矩阵的单元阵列进行排序?

时间:2014-01-04 22:24:37

标签: arrays matlab sorting matrix

我正在编写一个编码项目,遇到了障碍。我有一个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]};

......一旦排序:)

谢谢!

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,[]).';